Breadcrumb schema is a type of structured data using the BreadcrumbList schema.org format that helps search engines understand a page’s position in a site’s hierarchy and display breadcrumb navigation in search results.
It provides search engines and users with a clear path of categories and subcategories leading to a specific page. It helps users to navigate your site, especially when dealing with complex page structures.
As the name suggests, breadcrumbs act as a trail, showing users where they are within the hierarchy of a website. So users can quickly access higher-level pages, and thus reduce frustration and improve site usability.
What is breadcrumb schema?
Breadcrumb schema is a type of structured data markup that helps search engines understand the structure of your website.
When creating breadcrumb schema, you define a BreadcrumbList that contains at least two ListItem objects to represent the steps in your navigation path.
Each ListItem must include the required properties, position (its order in the trail), name (the label shown to users), and item (the URL for that step).
Breadcrumb usually appears near the top of a page and helps users trace their way back up the site hierarchy.
In Google’s search results, they show up like this:
aubreyyung.com › Technical SEO › Schema
This replaces the full URL in the search snippet, giving users context at a glance.

Breadcrumb Schema Example
Below is a simple code snippet of breadcrumb schema:
{
"@type": "BreadcrumbList",
"@id": "https://aubreyyung.com/schema-markup-for-ecommerce-websites/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": "1",
"item": {
"@id": "https://aubreyyung.com",
"name": "Home"
}
},
{
"@type": "ListItem",
"position": "2",
"item": {
"@id": "https://aubreyyung.com/category/technical-seo/",
"name": "Technical SEO"
}
},
{
"@type": "ListItem",
"position": "3",
"item": {
"@id": "https://aubreyyung.com/category/technical-seo/schema/",
"name": "Schema"
}
},
{
"@type": "ListItem",
"position": "4",
"item": {
"@id": "https://aubreyyung.com/schema-markup-for-ecommerce-websites/",
"name": "7 schema markup for e-commerce websites"
}
}
]
}
How to implement breadcrumb schema
1. Built-in CMS Features / SEO Plugins
The easiest way to implement breadcrumb schema is by using an SEO plugin or built-in CMS functionality. It will generate schema that match the visible breadcrumb navigation, so you don’t have to write any code.
If your website runs on WordPress, then you can install an SEO plugin such as Yoast SEO, Rank Math, or All in One SEO. These tools can automatically generate valid BreadcrumbList JSON-LD markup once you enable breadcrumbs in their settings and add the breadcrumb display to your theme.
Other CMS platforms such as Shopify, Wix, and Squarespace also offer native breadcrumb navigation options that include schema markup by default—simply activate the feature in your theme or site settings, and the structured data will be generated in the background to match the visible breadcrumb trail.
2. Manual JSON-LD Implementation
If you’re not using a CMS or plugin, you can manually add BreadcrumbList JSON-LD markup to each page by placing a <script type=”application/ld+json”> block in the <head> and including the details of each breadcrumb step so they match the visible navigation path. Although hardcoding breadcrumb schema works, it can be time-consuming to maintain.
Alternatively, you can add breadcrumb schema dynamically with Google Tag Manager by creating a Custom HTML tag containing the markup and populating it with breadcrumb names and URLs from variables or the dataLayer. This approach ensures the schema updates automatically to match each page’s navigation path without manual edits.
11 Common Mistakes When Implementing Breadcrumb Schema
1. Confusing Breadcrumbs with Site Navigation
Breadcrumbs are not meant to be used for your main navigation or header menu. I have seen sites incorrectly mark up their top-level menu (e.g., Home, Services, Contact) in the breadcrumb schema.
This is misleading, as breadcrumbs should reflect the page’s position within the site hierarchy, not just general navigation links.

2. Missing item or name Properties
Each ListItem in the BreadcrumbList must include:
- item: the URL of the breadcrumb link
- name: the visible name of the breadcrumb
Omitting either can invalidate the structured data.
The only exception is the last item, i.e. the page where the user lands on. In that case, you can omit the URL from the item property. When you don’t specify an item for the last item, Google uses the URL of the containing page.
⭐ Pro Tip:
Keep breadcrumb names short and descriptive. Google may truncate long breadcrumb labels in search results, replacing them with ellipses (…).
3. Not Using position Properly
The position property in each ListItem is required and must accurately reflect the breadcrumb’s order. Omitting this or using incorrect values (e.g., duplicate positions) can prevent your breadcrumbs from appearing in search results.
4. Breadcrumbs Don’t Match User Path
Google expects breadcrumb schema to reflect the actual navigation path a typical user would take, not just the URL structure.
Many sites make the mistake of generating breadcrumb schema directly from their URL format, which can be misleading if the site’s navigation hierarchy is different.
The best practice is to design your breadcrumb around a clear, logical hierarchy that matches the way most visitors navigate your site. This means your breadcrumb trail should be based on actual navigation menus, category relationships, or internal linking patterns, not just subfolder names in the URL.
5. Not Using Full URLs for item
Relative URLs (like /category/page) in the item property are not recommended. Always use the full absolute URL (e.g., https://example.com/category/page) for each breadcrumb item.
6. Including the Current Page as a Clickable Link
If you are including the current page as the last breadcrumb, note that the last item should not be a clickable link. Users are already on the current page, so making the last breadcrumb a clickable link adds no real value. It can be confusing or feel redundant, especially if the user accidentally clicks and reloads the same page.
In fact, according to Google documentation, it is not required to include a breadcrumb ListItem for the page itself.
7. Using Breadcrumbs That Don’t Add Value
Breadcrumbs work best when they reveal meaningful layers of navigation, such as categories, subcategories, and finally the specific page.
In a flat site structure, every page sits directly under the homepage without intermediate categories or groupings. For example, a blog might list every post directly in the root folder, producing a breadcrumb like:
Home > Blog Post
In this case, the breadcrumb doesn’t provide additional context beyond what’s already visible in the page title or URL.
It also misses the opportunity to group related content. For example, putting posts under “SEO” or “Content Marketing” categories would make breadcrumbs more useful.
8. Adding breadcrumb to Homepage
Adding breadcrumbs on the homepage is generally unnecessary and potentially redundant. especially if a clear “Home” link is already present in the main navigation.
Breadcrumbs are meant to show a page’s position within your site hierarchy, and the homepage is already the top level. Adding a breadcrumb to the homepage would just look like:
Home
If you include breadcrumb schema on other pages, it’s fine for the first breadcrumb step to reference the homepage, but there’s no benefit to having a separate breadcrumb markup on the homepage itself. Google doesn’t require it, and it won’t add value in search results.
9. Breadcrumbs That Don’t Match the Actual Navigation Path
Breadcrumbs should reflect the true hierarchy of a page within your site. If the displayed breadcrumb trail doesn’t match how the page is actually organized or how users navigate, it can confuse both people and search engines. For example, your site might show:
Home > Shoes > Running Shoes
but the real navigation is:
Home > Sale > Running Shoes
This mismatch can happen if there are multiple ways to navigate to a page on your site. In this case, using a single “default” breadcrumb path for all product pages will result in misleading schema markup, and Google could display an inaccurate breadcrumb trail in search results. For users, it creates a disconnect — clicking on “Shoes” might take them to a different place than expected.
If you have, you can mark up multiple breadcrumb trails like this:
<html>
<head>
<title>Red Running Shoes</title>
<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": "Shoes",
"item": "https://example.com/shoes/"
},{
"@type": "ListItem",
"position": 3,
"name": "Running Shoes"
}]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},{
"@type": "ListItem",
"position": 2,
"name": "Sales",
"item": "https://example.com/sales"
},{
"@type": "ListItem",
"position": 3,
"name": "Running Shoes"
}]
}]
</script>
</head>
<body>
</body>
</html>
10. Improper Nesting or JSON-LD Structure
Incorrect JSON-LD syntax, such as missing braces, brackets, or improper nesting, will result in unparsable structured data error and cause Google to ignore the markup entirely.
Before implementing the breadcrumb schema, always check and validate the markup with Rich Results Test or Schema.org validator.
11. Forgetting to Update Breadcrumbs on Paginated or Dynamic Pages
Dynamic content or paginated series (like blogs or product listings) often have breadcrumbs that need to reflect categories or filters. Forgetting to update these can confuse users and search engines.
Final Thoughts
Breadcrumb schema is a simple yet effective strategy to increase the usability and visibility of your website. It helps users in quickly navigating their paths while giving search engines the context they need to index your site better.
