BreadcrumbList is Schema.org markup that describes a page’s navigational path so eligible Google results can show contextual hierarchy rather than only a URL.
What breadcrumb markup describes
BreadcrumbList is structured data for a visible breadcrumb trail: the navigational route that puts the current page in context. It is not a substitute for site architecture, internal links, or a canonical URL. It describes a path that a visitor can also understand and use. Google can use eligible markup to present a contextual hierarchy in a result, but the appearance remains Google’s decision and varies by surface.
Model the trail as an ordered sequence of real navigation choices. A product or article can have more than one meaningful route, and Google’s documentation allows multiple breadcrumb trails for the same page. The useful choice is the path shown to a person for the context in which that page is reached—not a manufactured chain of keyword labels.
Build markup from visible navigation
Start with the rendered page, not a spreadsheet of URLs. Record the visible label and destination of every crumb, then decide whether the current page is included as the final ListItem. Use absolute URLs for destinations. Keep positions consecutive from 1 and keep names concise, human-readable, and consistent with the page UI. Do not mark up a hierarchy that does not exist on the page.
{\n "@context": "https://schema.org",\n "@type": "BreadcrumbList",\n "itemListElement": [\n {"@type":"ListItem","position":1,"name":"Home","item":"https://example.com/"},\n {"@type":"ListItem","position":2,"name":"Guides","item":"https://example.com/guides/"},\n {"@type":"ListItem","position":3,"name":"Technical SEO","item":"https://example.com/guides/technical-seo/"}\n ]\n}Generate this JSON-LD from the same data that renders the breadcrumb component where possible. That avoids the common drift in which a renamed category is updated in the UI but remains stale in markup. A CMS template should emit no BreadcrumbList where the page has no useful trail, such as a shallow homepage.
Test, release, and monitor
- Inspect the rendered trail on a representative page and confirm every destination resolves to the intended canonical URL.
- Compare the DOM, JSON-LD, and information architecture: labels, order, and paths should agree.
- Run Google’s Rich Results Test, then use URL Inspection after release to confirm Google can fetch the page without authentication, robots blocking, or noindex.
- Check Search Console’s breadcrumb enhancement report after recrawling, and sample templates rather than assuming one valid URL covers every template.
Treat validation as a syntax and accessibility check, not as evidence that the result will show breadcrumbs. Google explicitly recommends deploying a few representative pages, checking how Google sees them, and allowing time for recrawling. A change to a taxonomy needs a repeat pass because it can affect hundreds of trails at once.
Common implementation failures
For a practical regression check, sample one URL from each breadcrumb template after every navigation or taxonomy release. Compare the rendered labels, JSON-LD sequence, canonical destination, and HTTP response. This small routine catches template drift before it becomes a broad enhancement-report problem.
Keep the record of that check with the release notes: URL sampled, template, result, and the follow-up if any. It makes a later Search Console warning actionable without turning a markup feature into an untestable SEO claim.