Breadcrumbs for SEO: Navigation and BreadcrumbList Markup
Practice4 minInnovialabs editorial team
In short
Breadcrumbs show where a page sits in the site structure; add a visible trail plus matching BreadcrumbList JSON-LD with sequential positions and canonical URLs so search engines understand the hierarchy.
The short answer
Breadcrumbs are a line of links that shows the path to the current page: Home › Catalog › Laptops › Model X. They help users move up a level in one click and help search engines understand the site hierarchy.
For SEO you need two things that match each other:
- a visible breadcrumb trail on the page, built from regular HTML links;
- BreadcrumbList structured data (usually JSON-LD) describing the same trail.
Search engines may use the markup to show the path instead of a raw URL in results, but display is never guaranteed.
When breadcrumbs help
- Catalogs and stores with categories and subcategories: users often land on a product from search and want to see similar items.
- Blogs and knowledge bases with sections: the trail shows the topic and leads to related articles.
- Large service and documentation sites with three or more levels of nesting.
Breadcrumbs add little value on a flat site of a few pages or on a one-page landing. There, a simple menu is enough.
How to build them
For catalogs
- Follow the category hierarchy, not the user's click history.
- If a product belongs to several categories, choose one primary category and use it consistently in the trail and in the markup.
- Do not include filters and sorting in the trail:
Laptops › 16 GB RAM › Price ascendingcreates noise and points to non-canonical URLs.
For blogs
- A short trail works best:
Home › Blog › Section › Article. - Use section names that match real category pages, so every link in the trail leads to a useful page.
General rules
- Every element except the last one is a link to an indexable canonical page.
- The last element is the current page. It can be plain text without a link.
- Place the trail near the top of the content, above the H1.
- Use a
navelement with an accessible label, for examplearia-label="Breadcrumb".
A correct BreadcrumbList example
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://example.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "SEO",
"item": "https://example.com/blog/seo/"
},
{
"@type": "ListItem",
"position": 4,
"name": "Redirect chains"
}
]
}
Place it in a <script type="application/ld+json"> tag. Key points:
positionstarts at 1 and increases by one with no gaps.itemis an absolute URL that matches the canonical address of that page.namematches the text visible in the trail.- The last element may omit
item, since it is the current page.
In multilingual sites, the trail and the markup should use the language and the URLs of the current version.
Common mistakes
| Mistake | What happens |
|---|---|
| Markup does not match the visible trail | Search engines may ignore it as misleading |
| Positions skipped or duplicated | The item list becomes invalid |
Relative or redirecting URLs in item | Signals point to non-canonical pages |
| Links to pages closed by noindex or 404 | The trail leads nowhere for robots and users |
Keywords stuffed into name | Looks like spam and does not help |
| Markup added only on the client after load | Some robots may not see it; render it on the server |
| Different trails for the same product | Hierarchy becomes unclear |
After publishing, check the page with Google's Rich Results Test and the Schema.org validator, then watch the Breadcrumbs report in Search Console for errors.