Skip to content

Breadcrumb schema example

Breadcrumb markup tells Google where a page sits in your site's hierarchy. A BreadcrumbList needs itemListElement; each ListItem needs position and name, plus item (a URL) on every crumb except, optionally, the last one, which is the current page.

JSON-LD ยท passes this validator with 0 errors
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Packs",
      "item": "https://example.com/packs"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Daypacks",
      "item": "https://example.com/packs/daypacks"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Trailhead 28L"
    }
  ]
}
</script>

What Google checks

Breadcrumb docs

Required: itemListElement

Taken from Google Search Central's documentation for this type. Meeting the requirements makes a page eligible; Google decides whether to show a rich result.

Mistakes the validator catches on BreadcrumbList

Positions starting at 0 or out of order
position counts from 1 in list order.
"position": "2" as text
Use an integer.
Relative item URLs
Use absolute URLs so the markup works wherever it is read.
Breadcrumbs that aren't on the page
The trail should match a breadcrumb the visitor can see.

Paste your own version into the schema markup validator or test a live URL.

Questions

Does the last breadcrumb need a URL?

No. Google says the item URL is optional on the last crumb, which is the current page.

Can a page have two breadcrumb trails?

Yes, if it genuinely sits in two places. Add two BreadcrumbList entities.

Should the home page be the first crumb?

It can be. Many sites start at the first section instead; both are valid.

Other examples

ArticleProductFAQPageRecipeEventLocalBusinessOrganizationVideoObjectJobPostingReview