BreadcrumbList Schema: The Complete 2026 Guide

BreadcrumbList schema powers the breadcrumb path that appears in Google search results beneath your page title and URL. A properly marked-up breadcrumb...

Dilshad Akhtar
Dilshad Akhtar
Published: 19 June 2026
4 min read
TL;DRAI summary
  • BreadcrumbList is an ItemList subtype containing an ordered list of ListItem entries.
  • The position property is mandatory.
  • The item property should contain the full URL of the corresponding page level.
  • For sites with four or more levels, list every level.
  • For paginated category pages /products?page=2 , use the same breadcrumb as the base category page — no 'Page 2' segments.
  • Some pages have multiple valid paths e.g., 'Products Electronics Headphones' and 'Brands SoundWave Headphones' .
  • For SPAs using client-side routing, inject BreadcrumbList JSON-LD dynamically when the route changes.
  • Position mismatch between array index and position value is the most common error.
  • Every page with visible breadcrumbs includes a BreadcrumbList JSON-LD block position values start at 1 and increment by 1 Each item includes both...

BreadcrumbList schema powers the breadcrumb path that appears in Google search results beneath your page title and URL. A properly marked-up breadcrumb trail replaces the messy URL string with a clean, navigable path like "Home Category Subcategory Page," improving click-through rates by giving...

Understanding BreadcrumbList Structure

Illustration for: Understanding BreadcrumbList Structure

BreadcrumbList is an ItemList subtype containing an ordered list of ListItem entries. Each ListItem has a position (starting at 1), a name (display text), and an item (the URL for that level).

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Documentation",
      "item": "https://example.com/documentation"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Schema Markup",
      "item": "https://example.com/documentation/schema"
    }
  ]
}

This generates the search result breadcrumb "Home > Documentation > Schema Markup" with each segment clickable.

Position Values and Ordering

Illustration for: Position Values and Ordering

The position property is mandatory. Values start at 1 for the homepage and increment by 1 for each subsequent level. Google accepts non-adjacent sequences (1, 3, 5 works), but sequential integers are clearest. Array order does not override position values, though keeping them in order prevents confusion during code review (Google Search Central, "BreadcrumbList Rich Results," 2025).

URL vs Name-Only Breadcrumbs

Illustration for: URL vs Name-Only Breadcrumbs

The item property should contain the full URL of the corresponding page level. Omitting item means segments won't be clickable in search results — always include it for maximum utility. For the homepage use the domain root, for categories use the category URL, and for the current page use its page URL.

BreadcrumbList for Deep Hierarchies

For sites with four or more levels, list every level. A complete "Home > Products > Electronics > Headphones > Wireless Headphones" is more useful than a truncated path. Google displays up to eight breadcrumb segments — for deeper hierarchies, consider consolidating. Breadcrumb schema should reflect the actual site hierarchy, not a keyword-optimized path.

{
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com" },
    { "@type": "ListItem", "position": 2, "name": "Products", "item": "https://example.com/products" },
    { "@type": "ListItem", "position": 3, "name": "Electronics", "item": "https://example.com/products/electronics" },
    { "@type": "ListItem", "position": 4, "name": "Headphones", "item": "https://example.com/products/electronics/headphones" },
    { "@type": "ListItem", "position": 5, "name": "Wireless Headphones Pro X2", "item": "https://example.com/products/electronics/headphones/pro-x2" }
  ]
}

Breadcrumb Schema on Paginated and Filtered Pages

For paginated category pages (/products?page=2), use the same breadcrumb as the base category page — no "Page 2" segments. Filtered and sorted views should also use the base category breadcrumb. Search results pages should never include breadcrumb schema.

Multiple Breadcrumb Trails

Some pages have multiple valid paths (e.g., "Products > Electronics > Headphones" and "Brands > SoundWave > Headphones"). Google recommends choosing the primary path and marking only that one. Multiple BreadcrumbList blocks on a single page can cause Google to merge or ignore them (Schema.org, "BreadcrumbList Type," 2026).

BreadcrumbList for Single-Page Applications

For SPAs using client-side routing, inject BreadcrumbList JSON-LD dynamically when the route changes. A static block won't update on navigation. Use a client-side script that regenerates breadcrumb data on each route transition.

Common BreadcrumbList Errors

Position mismatch between array index and position value is the most common error. If the array order is [category, home, product] but position values are [1, 2, 3], Google uses the position values, creating an incorrect sequence.

Missing homepage is another frequent issue. Every breadcrumb list should start with position: 1 representing the homepage.

Audit Checklist

  • [ ] Every page with visible breadcrumbs includes a BreadcrumbList JSON-LD block
  • [ ] position values start at 1 and increment by 1
  • [ ] Each item includes both name and URL
  • [ ] Breadcrumb matches the visible breadcrumb on the page
  • [ ] Paginated and filtered pages share the same breadcrumb as the parent category
  • [ ] Only one BreadcrumbList block per page
  • [ ] No breadcrumbs on search results or 404 pages
  • [ ] BreadcrumbList passes Rich Results Test validation

Conclusion

BreadcrumbList schema is one of the simplest structured data types to implement, yet it delivers consistent visibility improvements. Deploy it site-wide on every page with a breadcrumb trail. The implementation effort is low, the maintenance cost near zero, and the improvement in SERP...

Ready to Build Your Dream Website?

Let's discuss your project and create something amazing together.