What Is Breadcrumb Structured Data?
Breadcrumb structured data is a BreadcrumbList block, usually JSON-LD, that tells search engines the ordered chain of pages leading to the current page, so a search result can show a site path instead of a raw URL.
Schema.org defines a BreadcrumbList 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” (schema.org). Google uses it to build the path shown above a desktop result. Google's documentation says the feature “is available on desktop in all regions and languages where Google Search is available” (Google). It is one of several types covered in our guide to rich results, and it sits alongside Organization markup and Article markup on most content sites.
How to Add Breadcrumb Structured Data at a Glance
| Step | Action | Expected result |
|---|---|---|
| 1 | Map the trail a typical visitor follows | One agreed path per page type |
| 2 | Show the trail as visible links | An accessible breadcrumb on the page |
| 3 | Write the BreadcrumbList JSON-LD | A block with two or more ListItems |
| 4 | Set positions, names and URLs correctly | Positions from 1, absolute URLs, matching names |
| 5 | Generate it from your templates | Markup on every page that has a trail |
| 6 | Validate in the Rich Results Test | No critical errors |
| 7 | Monitor in Search Console | Valid items rising, invalid items flat |
Time: an hour for a template change on a small site (our estimate); Google may take days to recrawl. Tools: a text editor or CMS template, the Rich Results Test, Search Console. Cost: none. Skill level: beginner to intermediate; you need access to page templates.
Classification from schema.org usage bands (domains), not a measurement: bar length shows band rank only
Source: schema.org type pages for BreadcrumbList, ListItem, Article, FAQPage, VideoObject and HowTo, “Based on monthly aggregations from Google's web index. (Google - August 2026)”, read October 10, 2026.
Schema.org publishes bands, not counts. Each band covers a tenfold range, so bar length shows rank on a four-step scale (10M+ = full width, 1M to 10M = three quarters, 100K to 1M = half, 10K to 100K = a quarter), not proportional domain counts: a half-length bar means roughly 10 to 100 times fewer domains, not half as many. Adoption is not a measure of how often Google displays a rich result.
What You Need Before Starting
- Edit access to the page template or theme, or a plugin that outputs JSON-LD.
- A list of your main sections and the pages that belong to each.
- The canonical URL of every section page; see what a canonical URL is.
- A verified Search Console property; see how to verify your site in Google Search Console.
Step 1: Map the Trail a Typical Visitor Follows
Write down the path a reader would take from your top section to the page. Google's documentation says to use breadcrumbs that represent “a typical user path to a page, instead of mirroring the URL structure” (Google).
Process: list each page type (article, product, category, location) and its parent sections. Where a page sits in two sections, pick the one most readers use. Including a ListItem for the home page or for the page itself is optional, according to Google. Expected result: one trail per page type, written as Section > Subsection > Page. Verify: every section in the trail has its own live, indexable URL. Common mistake: copying folder names from the URL, which produces labels like “cat-2” that no reader would recognize as a path.
Step 2: Show the Trail as Visible, Accessible Links
Put the same trail on the page as a list of links. Google's general guidelines say: “Don't mark up content that is not visible to readers of the page” (Google).
The W3C accessibility pattern describes a breadcrumb as “a list of links to the parent pages of the current page in hierarchical order”, contained in a navigation landmark labelled with aria-label, with aria-current set to page on the link to the current page (W3C WAI). A minimal version:
<nav aria-label="Breadcrumb">
<ol>
<li><a href="/research">Research</a></li>
<li><a href="/research/structured-data">Structured data</a></li>
<li><a href="/research/structured-data/breadcrumbs" aria-current="page">Breadcrumb markup</a></li>
</ol>
</nav>
Expected result: a breadcrumb readers and screen readers can use. Common mistake: marking up a trail in JSON-LD that does not appear anywhere on the page.
Step 3: Write the BreadcrumbList JSON-LD
Add one script type="application/ld+json" block that lists the trail in order. Google's general guidelines name JSON-LD as the recommended format, alongside Microdata and RDFa (Google).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Research",
"item": "https://example.com/research"
},{
"@type": "ListItem",
"position": 2,
"name": "Structured data",
"item": "https://example.com/research/structured-data"
},{
"@type": "ListItem",
"position": 3,
"name": "Breadcrumb markup"
}]
}
</script>
The structure follows Google's own example. itemListElement is required and is described as “An array of breadcrumbs listed in a specific order”; each entry is a ListItem (Google). Expected result: a block that parses as JSON. Common mistake: a trailing comma after the last item, which breaks the whole block.
Step 4: Set Positions, Names and URLs Correctly
Each ListItem needs three things, per Google's required-properties table:
position: “The position of the breadcrumb in the breadcrumb trail. Position 1 signifies the beginning of the trail.” Schema.org adds that positions “should be integers, e.g. beginning with '1' for the first item in the list” (schema.org).name: “The title of the breadcrumb displayed for the user.” Use the same words as the visible link.item: “The URL to the webpage that represents the breadcrumb.” Google adds: “If the breadcrumb is the last item in the breadcrumb trail,itemis not required.”
Process: use absolute canonical URLs, not relative paths or parameter versions. Expected result: a trail whose positions run 1, 2, 3 without gaps. Common mistake: pointing item at a redirected or non-canonical URL.
Step 5: Generate the Markup From Your Templates
Build the JSON-LD from the same data that produces the visible breadcrumb, so the two cannot drift apart.
Process: in a CMS, add the block to the article, category and product templates; many SEO plugins already output BreadcrumbList, so check the page source before adding a second one. On a static site, write the block into each page or generate it at build time. Expected result: one BreadcrumbList per page that shows a trail. Verify: view source on three page types and count the BreadcrumbList blocks. Common mistake: two plugins each emitting a different trail for the same page.
Step 6: Validate in the Rich Results Test
Paste the URL or code into Google's Rich Results Test. Google says: “Validate your code using the Rich Results Test and fix any critical errors”, and that fixing non-critical issues “isn't necessary to be eligible for rich results” (Google).
Process: test one URL per template, then use the URL Inspection tool in Search Console to see how Google fetched the live page; see how to check if a page is indexed. Pages blocked by robots.txt or noindex cannot qualify, because Google's guidelines say not to block structured data pages from Googlebot (Google). Expected result: “Breadcrumbs” detected with no critical errors. Common mistake: testing a staging URL that Google cannot reach.
Step 7: Monitor in Search Console
After Google recrawls the pages, open the breadcrumb report under rich results. Google describes the goal as “an increase of valid items, and no increase in invalid items” (Google).
Search Console's help page notes that the reports “aren't a comprehensive list of all detected items” and that “numbers in the reports reflect items not pages” (Search Console Help). A page with two trails counts twice. Expected result: valid items close to the number of pages with trails. Common mistake: reading a drop in mobile breadcrumb display as a markup failure; it is the January 2025 change.
Classification from Google Search Central, not a measurement
Source: Google Search Central Blog, “Simplifying the visible URL element on mobile search results”, January 23, 2025; Google breadcrumb documentation, last updated September 8, 2026.
Full bar = Google says the surface shows or supports breadcrumbs; empty bar = Google says it does not. Values are categories, not quantities.
How to Verify It Worked
- Markup: the Rich Results Test detects Breadcrumbs on a live URL with no critical errors.
- Coverage: the Search Console breadcrumb report shows valid items for each template you changed.
- Display: a desktop search for the page shows the domain followed by your trail. Display is at Google's discretion, so absence is not proof of an error.
- Consistency: the visible trail and the JSON-LD use the same names in the same order.
How to Choose a Trail Structure
| Situation | Recommended trail | Why |
|---|---|---|
| Blog or research library | Research > Topic > Article | Matches how readers browse; topic pages exist |
| Product in several categories | The category most visitors use | Google asks for a typical user path |
| Flat site with no sections | Home > Page, or no breadcrumb | Two items is the minimum; a one-level trail adds little |
| Location pages for a business | Locations > City > Branch | Pairs with LocalBusiness markup |
| URL folders that readers never see | Ignore the folders | Google says not to mirror the URL structure |
Common Problems and Fixes
| Problem | Likely cause | Fix |
|---|---|---|
Error about a missing item | A middle ListItem has no URL | Add item to every entry except, optionally, the last |
| Breadcrumbs not detected | Invalid JSON or the block is injected after load and not rendered | Validate the JSON; test the live URL, not pasted code |
| Two different trails reported | Theme and plugin both output markup | Disable one source |
| No breadcrumb on phone results | Google removed mobile breadcrumbs in January 2025 | Nothing to fix; check desktop |
| Invalid items rising after a redesign | New template dropped position or name | Fix the template and use Validate Fix in Search Console |
What Not to Do
- Do not mark up a trail readers cannot see. Consequence: Google's guidelines treat hidden or misleading markup as a quality problem, and its breadcrumb page warns that markup outside the guidelines can lead to a manual action. Correction: show the same trail on the page.
- Do not stuff keywords into breadcrumb names. Consequence: labels that misdescribe pages. Correction: use the visible section names.
- Do not point items at redirects or parameter URLs. Consequence: Google may ignore or rewrite the trail. Correction: use canonical URLs.
- Do not expect breadcrumbs to change rankings. Consequence: misplaced effort. Correction: treat the markup as a display and clarity aid; see does schema markup affect citation?
Frequently Asked Questions
Does breadcrumb structured data still matter after the mobile change?
Google says it continues to support breadcrumb markup for desktop results, the Search Console report continues, and the Rich Results Test still checks it. On mobile, results show only the domain in the visible URL.
How many items does a breadcrumb trail need?
Google requires a BreadcrumbList with at least two ListItems. Including the home page or the current page is optional.
Does the last breadcrumb need a URL?
No. Google says that if the breadcrumb is the last item in the trail, the item property is not required. Name and position are still needed.
Should breadcrumbs match my URL structure?
Not necessarily. Google recommends breadcrumbs that represent a typical user path to a page rather than mirroring the URL structure.
JSON-LD, Microdata or RDFa?
Google supports all three and recommends JSON-LD, which is the easiest to keep separate from page layout.
Will breadcrumb markup improve my rankings?
Google does not say so. It describes breadcrumbs as a way to show a page's position in the site hierarchy, and it does not guarantee any rich result even when markup is valid.
Sources and Methodology
This guide is built from Google's breadcrumb documentation (last updated September 8, 2026), Google's general structured data guidelines (last updated July 10, 2026), the January 23, 2025 Search Central blog post, the schema.org BreadcrumbList and ListItem pages, the W3C breadcrumb accessibility pattern and Search Console Help, all read on October 10, 2026. Quotations are from those pages. We validated the JSON-LD example as JSON but did not run it through the Rich Results Test on a live site or measure how often Google displays breadcrumbs. Adoption figures are schema.org's published bands, not exact counts.
- official Google Search Central, Breadcrumb (BreadcrumbList) structured data, last updated September 8, 2026. Read October 10, 2026.
- official Google Search Central Blog, Caitlin Dorsey, Simplifying the visible URL element on mobile search results, January 23, 2025. Read October 10, 2026.
- official Google Search Central, General structured data guidelines, last updated July 10, 2026. Read October 10, 2026.
- official Search Console Help, Rich result report overview. Read October 10, 2026.
- standards Schema.org, BreadcrumbList, including the usage band based on Google's August 2026 aggregations. Read October 10, 2026.
- standards Schema.org, ListItem. Read October 10, 2026.
- standards W3C Web Accessibility Initiative, Breadcrumb Pattern, ARIA Authoring Practices Guide. Read October 10, 2026.