Breadcrumb Structured Data: Complete Implementation Guide
Breadcrumb structured data tells search engines about the hierarchical structure of your website. When implemented correctly, Google displays a breadcrumb trail in search results instead of the raw URL, giving users a clear understanding of where a page sits within your site. BreadcrumbList markup is one of the simplest and most impactful forms of structured data you can add, improving both user experience and search result appearance across your entire website.
Why Use BreadcrumbList Schema?
- Replaces raw URLs in search results with a readable breadcrumb trail, improving user understanding of page context
- Helps search engines understand your site hierarchy and the relationships between pages
- Increases click-through rates by giving users confidence about where they will land on your site
- Easy to implement at scale using templates, making it one of the best effort-to-reward structured data types
- Supports multiple breadcrumb trails for pages accessible through different navigation paths
Required Properties
These properties are required by Google for BreadcrumbList structured data to be eligible for rich results.
| Property | Description |
|---|---|
| itemListElement | An ordered array of ListItem objects representing each step in the breadcrumb trail, from the homepage to the current page. |
| ListItem.position | An integer indicating the position of the breadcrumb in the trail. The first item (usually the homepage) should be position 1. |
| ListItem.name | The title of the breadcrumb as displayed to the user, such as 'Home', 'Category Name', or the page title. |
| ListItem.item | The URL of the page represented by the breadcrumb. This should be omitted for the last item in the trail (the current page). |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| @id | A unique identifier for each breadcrumb item. Typically set to the URL of the page. Useful when connecting breadcrumbs to other structured data on the page. |
| name (on last item) | While the item URL is omitted on the last breadcrumb, always include the name property so Google can display the current page title in the trail. |
| Multiple BreadcrumbList arrays | If a page is accessible through multiple navigation paths, you can include more than one BreadcrumbList to represent each path separately. |
JSON-LD Example
Here is a complete BreadcrumbList structured data example you can use as a starting point. Or use our BreadcrumbList generator to create one automatically.
<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": "Running Shoes",
"item": "https://example.com/shoes/running"
},
{
"@type": "ListItem",
"position": 3,
"name": "Trail Running Shoes",
"item": "https://example.com/shoes/running/trail"
},
{
"@type": "ListItem",
"position": 4,
"name": "Salomon Speedcross 6 Review"
}
]
}
</script>How to Implement BreadcrumbList Schema
- 1Map out your site hierarchy and identify the breadcrumb trail for each page template. Most sites follow a pattern like Home > Category > Subcategory > Page.
- 2Create a JSON-LD script block containing a BreadcrumbList with an itemListElement array ordered from the top-level page to the current page.
- 3For each breadcrumb step, add a ListItem with position (starting at 1), name, and item (the URL). Omit the item property on the final breadcrumb representing the current page.
- 4Implement the markup dynamically in your page template so it automatically generates the correct breadcrumb trail based on the page's position in your site structure.
- 5Validate the markup using Google's Rich Results Test on several pages at different depths to ensure the trails are correct throughout your site.
Common Mistakes to Avoid
- Including the item URL on the last breadcrumb in the trail. The final item should only have a position and name, as it represents the current page.
- Using position values that do not start at 1 or that skip numbers. Positions must be sequential integers beginning with 1.
- Mismatching the breadcrumb trail in structured data with the visible breadcrumbs displayed on the page. Google expects consistency between markup and on-page content.
- Hardcoding breadcrumb markup rather than generating it dynamically from the site structure, leading to stale or incorrect trails when pages are reorganised.
- Omitting the homepage as the first breadcrumb. Always start the trail with your root page to give search engines a complete path.
Testing & Validation
Before deploying your BreadcrumbList structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
Should I omit the item property on the last breadcrumb?
Yes. Google's documentation specifies that the last item in the breadcrumb trail should not include the item (URL) property, as it represents the current page the user is already on.
Can I have multiple breadcrumb trails for the same page?
Yes. If a page can be reached through different navigation paths, you can include multiple BreadcrumbList objects in your JSON-LD. Google will choose the most appropriate trail to display in search results.
Do breadcrumb structured data and visible breadcrumbs need to match?
Google strongly recommends consistency between your structured data and the visible breadcrumbs on the page. Mismatches may result in Google ignoring the structured data or displaying unexpected results.
Does breadcrumb markup affect my site's rankings?
Breadcrumb structured data does not directly influence rankings. However, it improves how your pages appear in search results, which can increase click-through rates. It also helps search engines understand your site structure, which supports overall crawling and indexing.
Should I add breadcrumb structured data to my homepage?
It is generally unnecessary to add BreadcrumbList markup to the homepage itself, as it is the starting point of the trail. Focus on adding breadcrumbs to category pages, product pages, and content pages deeper in your site hierarchy.
Ready to Generate Your BreadcrumbList Schema?
Use our free generator to create valid BreadcrumbList structured data in seconds.
Open BreadcrumbList Generator