Structured Data · Type Reference #2

BreadcrumbList Structured Data: JSON-LD Examples and Guidelines

~13 min read Updated 2026-06-24 MagicSEO Editors · Human Reviewed Type Reference

Breadcrumb is one of the most valuable structured data types to implement first. It improves both user experience and helps search engines understand page position in site hierarchy. The key to BreadcrumbList is not complex fields—it's about "real paths, correct order, visible content consistency." This article explains fields, examples, multiple trail scenarios, and common mistakes using JSON-LD.

What is BreadcrumbList#

Breadcrumb is a trail from higher-level pages to the current page, for example:

visible-breadcrumb.txt
Home / Google Structured Data / BreadcrumbList

BreadcrumbList describes the same path using structured data. Google's official documentation requires BreadcrumbList to contain at least two ListItem elements, expressing order through position.

Diagram showing correspondence between visible breadcrumb trail and BreadcrumbList JSON-LD ListItem order
BreadcrumbList order should match visible breadcrumbs: homepage is position 1, category page is position 2, current page is position 3.

Why It Matters#

  • Help users orient: Users quickly know their location in site structure and can return to parent categories.
  • Help Google understand hierarchy: Makes relationships between pages, categories, and homepage clearer.
  • Improve search result trails: Google may replace long URLs with friendlier breadcrumb trails in search results.
  • Aid internal linking: Each article linking up to category pages benefits category aggregation and topic clusters.
Site ExampleMagicSEO shows real HTML breadcrumbs at the top of every article, while outputting the same BreadcrumbList in <head>. The path users see matches what Google reads.

Required Properties#

BreadcrumbList has few fields, but order and consistency are critical.

LevelPropertyPurposeRecommendation
BreadcrumbListitemListElementArray containing all breadcrumb nodesOrder from parent to current page
ListItempositionNode's sequence number in pathStart from 1, increment continuously
ListItemnameNode nameMatch visible text on page
ListItemitemNode's corresponding URLUse absolute URL, point to canonical page

Google's examples sometimes omit item for the final level, showing only name and position. In practice, I recommend including the current page's canonical URL as item for the final level to maintain consistency with the page's canonical address.

Complete JSON-LD Example#

breadcrumb-json-ld.html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Technical SEO",
      "item": "https://example.com/articles/technical-seo/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Site Speed Optimization",
      "item": "https://example.com/articles/technical-seo/site-speed.html"
    }
  ]
}
</script>

Must Match Visible Breadcrumbs#

BreadcrumbList is a machine translation of the page's visible path—not a separate hidden trail just for search engines. Verify three things:

  1. Node count matches: If page shows 3 levels, JSON-LD should also have 3 ListItem elements.
  2. Node names match: If visible text is "Google Structured Data," don't write "Schema Tutorial" in JSON-LD.
  3. URLs match: Visible links, JSON-LD item, and corresponding page canonical should use the same canonical URLs.
Don't Fabricate Keyword PathsWriting JSON-LD as "Home / Best SEO Tools / Free SEO Tutorial / Current Page" when this path doesn't exist on-page is typical signal inconsistency. Breadcrumbs are not for keyword stuffing.

Multiple Breadcrumb Trails#

Some pages can genuinely be accessed via multiple paths. For example, an award-winning sci-fi novel might belong under both "Books / Sci-Fi / Award Winners" and "Literature / Award Winners." Google supports marking multiple BreadcrumbList trails for the same page.

multiple-trails.json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Books", "item": "https://example.com/books" },
      { "@type": "ListItem", "position": 2, "name": "Sci-Fi", "item": "https://example.com/books/scifi" },
      { "@type": "ListItem", "position": 3, "name": "Award Winners", "item": "https://example.com/books/scifi/awards" }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Literature", "item": "https://example.com/literature" },
      { "@type": "ListItem", "position": 2, "name": "Award Winners", "item": "https://example.com/books/scifi/awards" }
    ]
  }
]

But for most content sites, a single primary path suffices. Multiple trails only make sense when users can genuinely reach the page through multiple real category paths.

URL & Canonical Rules#

  • Use absolute URLs, not relative paths.
  • Prefer canonical URLs; avoid sometimes using trailing slash, sometimes not.
  • Parent pages in breadcrumbs should return 200 and be indexable, important pages.
  • Don't include parameter URLs, tracking URLs, or redirect URLs in item.

If the category page is https://example.com/articles/google-structured-data/, don't write it as https://example.com/articles/google-structured-data/index.html in another article. Internal links, canonical, and structured data should be consistent.

How This Page Demonstrates#

The visible breadcrumb at the top of this page is:

This page's visible path
Home / Google Structured Data / BreadcrumbList

The BreadcrumbList in this page's JSON-LD contains exactly those three nodes, and the third node's item points to this page's canonical URL. This is the minimal closed loop of "visible content consistency."

How to Validate#

  1. Test the page with Rich Results Test.
  2. Confirm BreadcrumbList is detected.
  3. Check that each ListItem's position increments continuously.
  4. Check that name matches visible breadcrumb text on the page.
  5. After launch, monitor the "Breadcrumb" report in Search Console Rich Results Reports for errors.

Common Mistakes#

ErrorManifestationFix
position gaps1, 2, 4 or duplicate 2Start from 1, increment continuously
Reversed path orderCurrent page first, homepage lastWrite from highest level to current page
Visible path and JSON-LD mismatchPage shows A, markup says BGenerate both synchronously or verify manually
Relative URLs"/articles/..."Use absolute URLs in structured data
Parent page inaccessibleCategory page 404, noindex, redirect chainEnsure parent pages stably return 200
Fabricated multiple trailsJSON-LD contains categories users don't seeOnly mark real navigation paths

BreadcrumbList Launch Checklist#

  • Page has user-visible HTML breadcrumbs
  • JSON-LD uses BreadcrumbList
  • itemListElement contains at least two ListItem elements
  • position starts from 1 and increments continuously
  • name matches visible breadcrumb text
  • item uses absolute URLs
  • item points to canonical URLs, avoiding parameters and redirects
  • Final level matches current page canonical
  • Multiple trails only used for genuine visible navigation paths
  • Rich Results Test shows no errors
  • Search Console breadcrumb report shows no batch issues

Frequently Asked Questions#

Must breadcrumb structured data match visible breadcrumbs on the page?

Yes, it should. The purpose of BreadcrumbList is to translate the actual hierarchical path on the page into machine-readable format. If the path marked in JSON-LD differs from what users see, it creates inconsistent signals and may violate the principle that structured data should match visible content.

Should I include an item for the final current page?

Google's examples sometimes show only name and position for the final level, but can also include item. For clearer canonical signals, MagicSEO's practice is to include the current page's canonical URL as item for the final level, ensuring consistency with visible breadcrumbs and canonical.

Can a page have multiple BreadcrumbList trails?

Yes. If your site genuinely has multiple user-visible and reasonable navigation paths to the same page, Google supports marking multiple breadcrumb trails. But don't fabricate paths for keyword coverage; multiple trails should come from real site structure.

Can breadcrumbs replace navigation and internal links?

No. Breadcrumbs complement hierarchical navigation and structured data; they cannot replace main navigation, category pages, and in-content links. A safer SEO approach is: have real clickable HTML breadcrumbs on the page, while using BreadcrumbList to describe the same path.