BreadcrumbList Schema

How to implement BreadcrumbList structured data to drive breadcrumb display in Google search results, the relationship between schema.org/BreadcrumbList and real HTML breadcrumb navigation, and how to test it.

First published: Jun 27, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #20 in Structured Data#50 in On-Page#234 in Technical SEO#325 on the site
1 evidence signal on this page

BreadcrumbList is the schema.org type that marks up a page's breadcrumb trail (Home > Category > Page) as JSON-LD. It does two jobs: it can drive a readable breadcrumb path in Google's search snippet in place of the raw URL, and — per Google's own docs — it's a categorization signal Google reads from the page body, which is why the same page can surface under different breadcrumb paths for different queries. The required shape is a BreadcrumbList holding an ordered itemListElement array of ListItems, each with position, name, and item — item is optional only on the final (current-page) entry. Google explicitly recommends breadcrumbs reflect a typical user path, not necessarily your URL folder structure, and you can skip a ListItem for the homepage and the current page. It's not a ranking factor, valid markup never guarantees the rich display, and there's genuine, unsettled disagreement in 2026 about how consistently Google still shows breadcrumbs in the SERP — so implement it for the categorization value and low cost, and check your own results rather than trusting secondhand claims.

TL;DR — BreadcrumbList marks up a page’s breadcrumb trail as structured data (JSON-LD recommended; Microdata/RDFa also supported). It does two jobs: it’s eligible to render a breadcrumb path in Google’s snippet in place of the URL, and — in Google’s words — Google “uses breadcrumb markup in the body of a web page to categorize the information from the page in search results,” which is why one page can surface under different trails for different queries. Required shape: BreadcrumbList.itemListElement is an ordered array of ListItems, each with position, name, and itemitem is optional only on the final (current) item. Google recommends the trail reflect a typical user path, not the URL structure, and says you can omit a ListItem for both the homepage and the current page. It’s not a ranking signal, valid markup never guarantees the rich display, and rich-result eligibility runs through Mueller’s three layers (valid markup → policy compliance → site-quality trust). Whether Google still reliably shows breadcrumbs in the 2026 SERP is genuinely disputed — implement it anyway (categorization value, low cost, no downside) and check your own results.

What it is, precisely

BreadcrumbList is a schema.org type. schema.org defines it as “an ItemList consisting of a chain of linked Web pages, typically described using at least their URL and their name, and typically ending with the current page.” In practice you build a BreadcrumbList whose itemListElement is an ordered array of ListItem entries — one per step in the trail. Evidence for this claim Google's breadcrumb examples use ordered ListItem entries with position, name, and item, with documented flexibility for the final item. Scope: Google Search breadcrumb feature requirements; schema.org permits a broader vocabulary. Confidence: high · Verified: Google: Breadcrumb structured data

You can express it in JSON-LD, Microdata, or RDFa. JSON-LD is the format Google recommends and the one I’d default to: it lives in a single script block, doesn’t tangle with your visible markup, and is the easiest to template and debug.

The two jobs breadcrumb markup does

This is the framing most competitor pages miss — they jump straight to “paste this JSON-LD.” Breadcrumb markup does two separate things:

1. It’s eligible for a rich SERP display. Google can render the breadcrumb trail in the search snippet in place of the raw URL. Note the word eligible — having valid markup makes you a candidate, it does not guarantee the display (more on that below).

2. It’s a categorization signal Google reads internally. Straight from Google’s docs: “Google Search uses breadcrumb markup in the body of a web page to categorize the information from the page in search results.” This is the underrated half. It’s why the same URL can appear under different breadcrumb trails for different queries — Google is using the trail as context, not just decoration. That value exists even on queries where no visible breadcrumb ever renders.

Concretely, Google’s own documentation shows this as multiple separate BreadcrumbList objects on the same page — one complete JSON-LD block per path a user might realistically take to reach it — rather than one trail that somehow adapts itself per query. If a page is genuinely reachable through more than one category (a common ecommerce case), mark up each path as its own BreadcrumbList and keep every alternate trail independently valid — each still needs every ListItem to carry its own position, name, and item per the rules below. Don’t treat one “primary” trail as covering the categorization value for paths it doesn’t actually describe.

Required and optional properties

Here’s the accuracy spine — get this right and the rest is detail.

Required:

  • BreadcrumbList.itemListElement“An array of breadcrumbs listed in a specific order.” This is the ordered list of steps.
  • ListItem.position“The position of the breadcrumb in the breadcrumb trail. Position 1 signifies the beginning of the trail.” Start at 1 and increment.
  • ListItem.item (with a name) — the URL (and label) for each step. This is required for every item except the last one, which is the current page and can omit the URL.

Google puts the last-item exception plainly: “It is not required to include a breadcrumb ListItem for the top level path (your site’s domain or host name), nor for the page itself.” So both the homepage and the current page are optional to include — a genuinely common misconception is that you must have them.

A valid trail needs at least two ListItems to be meaningful — a single-step “breadcrumb” isn’t a trail.

User path vs. URL structure

This is the nuance worth internalizing, because Google states it explicitly and most guides skip it: “We recommend providing breadcrumbs that represent a typical user path to a page, instead of mirroring the URL structure.”

Evidence for this claim Google recommends breadcrumbs that represent a typical user path rather than simply mirroring the URL structure. Scope: Google Search breadcrumb guidance; sites should choose an accurate navigational path. Confidence: high · Verified: Google: Breadcrumb structured data

In other words, the breadcrumb trail is a navigational statement, not a directory one. Where these diverge — flat URL structures with deep categorization, tag pages, or heavily faceted navigation where a product is reachable through many paths — mark up the path a user would actually take, not the folders in the URL. This matters most on ecommerce sites, where a single product legitimately lives under multiple category paths (which is also, not coincidentally, a place where faceted navigation and URL structure get messy). Pick the primary user path for that page’s markup.

It is not a ranking factor

Say it plainly, because “does it help rankings?” is one of the most common searcher questions: nothing in Google’s guidance ties BreadcrumbList to rankings. It affects SERP presentation and internal categorization — not ranking position. Adding it won’t move you up; not having it won’t hold you down. The reason to implement is the categorization signal plus the potential display, at a low implementation cost.

Validating and rolling it out

Google prescribes a straightforward workflow:

  1. Add the required properties in your chosen format, following Google’s placement guidance.
  2. Validate with the Rich Results Test and fix any critical errors.
  3. Deploy on a few pages first, confirm with URL Inspection in Search Console, then roll out site-wide.

Search Console has a dedicated Breadcrumbs enhancement report that surfaces errors and warnings across your site once it’s live — that’s where you monitor ongoing health.

Why isn’t my breadcrumb rich result showing?

Valid markup is necessary but not sufficient. John Mueller has laid out a useful three-layer model for rich-result eligibility generally (paraphrasing his framing): first, the markup has to be technically valid; second, it has to comply with Google’s structured-data policies; and third, there’s a broader, usually site-wide quality/trust signal — whether Google trusts your site enough to show enhanced results from your structured data at all.

Mueller has also offered a rough diagnostic: run a site: query for your own domain and see whether the rich results show there. Roughly, if the enhancement appears for site: queries but not for normal ones, that points less at your markup and more at a site-quality/trust issue than a technical one.

On breadcrumbs specifically, Mueller has downplayed policy risk — his gist being that breadcrumbs are one of the harder structured-data types to get wrong in a way that trips policy, since a breadcrumb trail is a fairly literal thing. Treat that as reassurance that if your breadcrumb rich result isn’t showing, the cause is more likely the display/quality layer than a policy violation in the breadcrumb markup itself.

The one policy backstop that does apply: Google’s general structured data guidelines require markup to reflect real, on-page content. Don’t fabricate a breadcrumb trail that doesn’t match your actual site structure to game a rich result — markup that deviates from the guidelines can, in principle, trigger a manual action.

Does Google still show breadcrumbs in the SERP? (an honest 2026 answer)

This is where I want to be careful rather than confident, because the sources genuinely disagree. Some 2025–2026 posts claim Google removed breadcrumb display (desktop first, then mobile); other 2026-dated guides describe BreadcrumbList as one of the more stable schema types with the trail still appearing. Google’s own breadcrumb documentation, as of mid-2026, still scopes the feature to “desktop in all regions and languages where Google Search is available” and carries no deprecation notice.

I’m not going to resolve that disagreement with a flat “Google shows this” or “it’s dead” — the display side is visibly in flux and secondhand claims (some citing image-embedded screenshots or single-region observations) aren’t a reliable basis. My recommendation is decision-first: implement it regardless. The categorization value doesn’t depend on the visible trail rendering, the implementation cost is low, and there’s no downside. Then check your own SERPs for your own query set — on the surfaces and regions you care about — rather than trusting a blog post’s screenshot. That’s the honest posture on a live, unsettled question.

(If you specifically want the navigation-and-UX angle — visible breadcrumbs as internal links, PageRank flow, accessibility — that’s a sibling topic on this site, covered under website structure. This page deliberately stays on the markup.)

Bing and other engines

BreadcrumbList is a standard schema.org type, not a Google-proprietary one, and Bing has long stated it supports the schema.org vocabulary (JSON-LD, Microdata, RDFa) for structured data broadly. I didn’t find a dedicated Bing documentation page for breadcrumb schema specifically, so I’d describe Bing’s support as generic schema.org support rather than pointing you at a breadcrumb-specific Bing rich-result guarantee. The markup you write for Google is valid for Bing too; whether and how Bing renders a breadcrumb enhancement is a separate, less-documented question.

The bottom line

  • Minimum valid structure: BreadcrumbListitemListElement array of ListItems, each with position (from 1), name, and itemitem optional on the last item only.
  • Google recommends the user path, not the URL structure; homepage and current page are optional to include.
  • It’s not a ranking factor; valid markup never guarantees the display.
  • SERP display is genuinely disputed in 2026 — implement for the categorization value and verify on your own results.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.