Free Collection Page Schema Generator

Fill in the facts visible on your page, copy the Collection Page JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Schema workflow

Use only facts a visitor can verify on the page, then validate the JSON-LD before publishing.

Required

  • Visible Collection Page content
  • Canonical page URL
  • Clear page owner/publisher
  • Fields that match the visible page

Recommended

  • A representative image when the schema supports it
  • SameAs or related links when visible
  • Validation before publishing

Avoid

  • Adding properties that are not visible
  • Copying example URLs into production
  • Skipping Google and Schema.org validation

Schema stacks

Use Collection Page schema in a stack

Complete JSON-LD bundles that combine Collection Page with the other types a real page needs. Browse all stacks

Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

Collection Page Schema Generator — Clarify Category Pages

Generate clean CollectionPage JSON‑LD and pair it with ItemList to enumerate items and positions. Improve understanding of listing pages.

Try the Collection Page Generator

Why many collection pages underperform

  • Search engines can’t tell a category page from a detail page without cues.
  • Lists aren’t represented with ItemList and positions.
  • Links use relative URLs or point to pages without proper schema.
  • Manual JSON‑LD is inconsistent across category templates.

How SwiftSchema helps

The CollectionPage generator declares the page as a listing page with `name` and `url`. Pair it with ItemList to enumerate items using ordered ListItems with absolute URLs and positions.

This improves clarity of page role and helps your internal linking and crawl paths.

How it works

  1. 01

    Choose CollectionPage in the generator below.

  2. 02

    Enter the collection title (`name`) and absolute `url`.

  3. 03

    Add an ItemList that enumerates visible items and positions using absolute URLs.

  4. 04

    Optionally add `description`, `inLanguage`, and `isPartOf` for site context.

  5. 05

    Copy JSON or Script, paste on the category page, and validate in the Rich Results Test.

Ready to build the markup?

Pair with ItemList. Validate. Ship.

Generate CollectionPage JSON‑LD

What is CollectionPage structured data?

CollectionPage marks up category, listing, or hub pages that curate multiple related items (products, articles, recipes, etc.). It tells search engines “this is a directory of things,” which helps differentiate category pages from detail pages. When combined with ItemList, CollectionPage signals not just the existence of the list but also its structure and order. This clarity improves crawling, reduces duplicate-content confusion, and can influence how collections appear in SERPs (though, like ItemList, it doesn’t guarantee a carousel).

Required and recommended properties

  1. name — the collection title (“Spring Jackets”, “SEO Guides”).
  2. url — canonical URL of the collection page.
  3. description — short summary of what the collection covers.
  4. inLanguage — BCP 47 code if you serve multiple languages.
  5. isPartOf — reference your WebSite or parent section (e.g., /shop).
  6. hasPart — optionally reference major sub-collections (e.g., Men’s vs Women’s).
  7. mainEntity — rarely needed; you can reference an ItemList or featured entity if helpful.

Pairing CollectionPage with ItemList

  • Use CollectionPage to describe the page itself, then embed an ItemList to enumerate the visible items.
  • Each ListItem should link to a detail page with its own schema (Product, Article, Recipe, etc.).
  • If your collection is paginated, include the current page’s items and update the ItemList when the page changes. Maintain consistent position values across paginated pages.
  • Provide itemListOrder (ascending/descending/unordered) to communicate sorting logic (price low-high, newest first).

Content prep checklist

  • Write a keyword-rich intro for the collection explaining what users can expect (“Shop curated spring jackets with waterproof fabrics.”).
  • Ensure each item tile links to a canonical detail page with correct schema.
  • Decide on sorting criteria and surface it in the UI (e.g., “Sort by price”).
  • Include filters or facets as needed, but avoid representing facet results as separate CollectionPages unless they have unique content.
  • Plan for pagination, infinite scroll, and localization. Make sure each scenario has a canonical URL and a stable list of items.

Implementation workflow

  1. Add CollectionPage JSON‑LD with name, url, description, inLanguage, and isPartOf.
  2. Generate ItemList for the items on that page. Use the same data source powering your grid/list UI.
  3. Embed both in the page template. If using Next.js, you can output them together in the same JSON‑LD script.
  4. Validate via Rich Results Test or Schema Markup Validator to ensure there are no missing brackets or invalid URLs.
  5. Monitor Search Console for structured data errors (Breadcrumb, ItemList) to catch issues early.
  6. Keep in sync when items change: if you reorder or paginate, update position values and the list of URLs accordingly.

Handling pagination and dynamic lists

  • Include rel=next/prev links and ensure canonical tags point to the first page or the self page, depending on your SEO strategy.
  • For dynamic lists (e.g., “Top Stories”), update JSON‑LD whenever the list changes. Consider caching the data to avoid stale schema.
  • Use numberOfItems to indicate the total item count even if not all are visible on page (e.g., “Showing 1-24 of 180”).
  • If you load more items via infinite scroll, update the ItemList in the DOM or provide incremental JSON‑LD updates. At minimum, ensure the initial load includes the first set of items.
  • Keep position values stable across pagination; don’t restart at 1 if you’re showing page 2 of a larger list.

Differentiating CollectionPage from ItemPage

  • Use CollectionPage for category-level routes (/blog/schema-guides) and ItemPage for detail routes (/blog/schema-guides/product).
  • When a page acts both as a collection and a hub for a main entity (e.g., “SEO Hub” describing the topic plus listing resources), consider combining CollectionPage with AboutPage or WebPage as appropriate.
  • Keep breadcrumb/schema consistent so search engines can trace the hierarchy: Home → Category → CollectionPage → ItemPage.

Troubleshooting checklist

  • Missing ItemList: ensure every collection includes ItemList. Without it, Google may treat the page as a generic WebPage.
  • Duplicate URLs: if the same item appears multiple times (featured + standard list), only include it once in the ItemList or use distinct anchors.
  • Relative URLs: convert to absolute URLs to avoid ambiguity.
  • Facet crawl issues: block shallow filter combinations via robots.txt or canonical tags; only add schema to combinations that have unique, index-worthy content.
  • Auto-generated copy: ensure your introductions and headings aren’t thin or repetitive; schema won’t compensate for low-quality content.
  • Positions restarting on pagination: maintain correct position values across pages if you expose multiple pages in one schema block.

Maintenance tips

  • Set a quarterly reminder to spot-check top collection pages for schema drift, broken links, or outdated descriptions.
  • When adding new collection types (seasonal campaigns, sale pages), include schema from day one rather than retrofitting later.
  • Track owners per collection (merchandising vs content teams) so they know to update schema when they change the layout or inventory source.
  • Automate schema generation where possible—once the data source is trustworthy, feeding it into both UI and JSON‑LD keeps everything aligned.

Common Errors & Fixes

  • No ItemList: add an ItemList with ListItem entries and positions for visible items.
  • Thin content: ensure the collection page offers descriptive text, not just a grid of cards. Schema needs context.
  • Inconsistent URLs: use canonical absolute URLs for each item and keep them in sync with the grid.
  • Missing site context: include isPartOf referencing your WebSite so category pages stay tied to the brand entity.
  • Pagination confusion: keep positions sequential across pages and ensure canonical tags/pagination markup are correct.

On-page parity checklist

  • Collection title in UI matches name; intro text aligns with description.
  • Items shown on the page match ItemList entries (labels and URLs).
  • Positions in ItemList reflect the order users see; pagination keeps positions consistent.
  • Item URLs are absolute and canonical; no UTM or session params.
  • Breadcrumbs, canonicals, and internal links agree on the collection hierarchy.
  • Only one CollectionPage + ItemList block per page to avoid conflicts.

Troubleshooting and validation

  • Rich Results Test warnings: Check for missing itemListElement data, absolute URLs, or malformed JSON.
  • Items not detected: Ensure JSON-LD is server-rendered/static; avoid JS-only injection that bots may miss.
  • Order mismatches: Sync ItemList generation with the same data source as the grid to keep order/positions aligned.
  • Locale issues: For localized collections, use localized URLs/labels and ensure hreflang/canonicals are consistent.

Required properties

  • name
  • url

Recommended properties

  • description
  • inLanguage
  • isPartOf.name
  • isPartOf.url
Minimal JSON-LD
Validate
{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "name": "Spring Jackets",
  "url": "https://www.example.com/jackets/spring"
}
CollectionPage with ItemList
Validate
[
  {
    "@context": "https://schema.org",
    "@type": "CollectionPage",
    "name": "Spring Jackets",
    "url": "https://www.example.com/jackets/spring",
    "description": "Curated waterproof and windproof jackets for spring.",
    "inLanguage": "en-US",
    "isPartOf": {
      "@type": "WebSite",
      "name": "Example",
      "url": "https://www.example.com"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "ItemList",
    "itemListOrder": "https://schema.org/ItemListOrderAscending",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Waterproof shell jacket",
        "url": "https://www.example.com/jackets/spring/waterproof-shell"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Windbreaker with hood",
        "url": "https://www.example.com/jackets/spring/windbreaker-hood"
      }
    ]
  }
]

FAQs

Should I add ItemList?Show

Yes. ItemList makes the list structure explicit and helps search understand the items.

Do I include all items?Show

Include a representative selection or page items with correct positions; paginate as needed.

Related types

Browse all schema types

References