Breadcrumb navigation, like any navigation, is about helping visitors find their way around a website. A breadcrumb navigation shows the website’s hierarchy. That makes it especially important on websites with more complex hierarchies, such as ecommerce sites with several layers of categorization for products or reference websites with dense taxonomies.
The breadcrumb navigation and site hierarchy can also be represented in schema markup. This can help bots understand how the different pages on a website are connected. This is implemented using the BreadcrumbList schema type.
As with all schema, this should only be used if it reflects what is visible on the page. If the page does not use a visible breadcrumb navigation that visitors can see, the site should not represent breadcrumb navigation in schema.
How To Implement Breadcrumb Schema
Required Properties
BreadcrumbList is a type of ItemList and lists the pages in your website’s hierarchy.
Google only requires one property for BreadcrumbList schema: itemListElement containing ListItem.
A few notes when using the itemListElement:
- There should be at least two ListItem entries. Otherwise, it isn’t a list. Given this, BreadcrumbList should be omitted from the homepage and any other page where there are not multiple levels to the site hierarchy.
- Schema.org’s vocabulary has additional properties that can be added within any ItemList, including itemListOrder and numberOfItems. These properties are typically not needed for BreadcrumbList. The list order is implied within BreadcrumbList as matching the site hierarchy. The number of items in the list will often be relatively short, so the number doesn’t need to be stated.
Within ListItem, Google requires that each item has the following properties:
- name: Stating the name of the page in the website’s hierarchy
- item: Stating the URL of the page. Google also supports using an @id with the URL.
- position: Indicating the position of the item within the breadcrumb navigation. This starts at 1.
A few implementation notes and answers to common questions about ListItem entries:
- The item property is optional on the last breadcrumb. If it is empty, Google assumes that URL matches the page containing the breadcrumb schema. That said, not all bots using the schema markup may make the same assumption. So, my recommendation is to always state the URL for the last item property.
- The current page does not need to be included in the breadcrumb schema. For example, a product detail page could include the category hierarchy for that product but exclude the product’s URL from the schema code. However, it would also be valid to include the product URL within the breadcrumb schema. My suggestion is to pick whichever implementation is easiest to implement and apply it consistently.
- The breadcrumb navigation does not need to start with the homepage. The homepage can be omitted to simplify the breadcrumb navigation and still be considered valid by Google.
Finally, a few things to keep in mind when stating URLs in the list:
- Each URL should only be stated once within the list.
- Each URL should reflect that page’s canonical URL.
- Do not create fake URLs for placeholder spots in the hierarchy.
Example BreadcrumbList Schema
Here is a simple example showing a home page, a category page, and a sub-category page. The breadcrumb navigation shown on the page would be Home > Widgets > Blue Widgets.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.agreatwebsite.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Widgets",
"item": "https://www.agreatwebsite.com/shop/widgets/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Blue Widgets",
"item": "https://www.agreatwebsite.com/shop/blue-widgets"
}
]
}Single and Multiple Breadcrumb Trails
A page can belong to multiple hierarchies within the website. Google now supports representing multiple breadcrumb trails within the breadcrumb schema. This uses the same code, but adding the multiple BreadcrumbLists in a single array (add brackets around both entries). Here’s an example showing the same Home > Widgets > Blue Widgets from the previous example along with an additional hierarchy of Home > Featured > Popular > Blue Widgets.
[
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.agreatwebsite.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Widgets",
"item": "https://www.agreatwebsite.com/shop/widgets/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Blue Widgets",
"item": "https://www.agreatwebsite.com/shop/blue-widgets"
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.agreatwebsite.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Featured Products",
"item": "https://www.agreatwebsite.com/featured/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Most Popular",
"item": "https://www.agreatwebsite.com/shop/popular/"
},
{
"@type": "ListItem",
"position": 4,
"name": "Blue Widgets",
"item": "https://www.agreatwebsite.com/shop/blue-widgets"
}
]
}
]Final Thoughts
Before considering what to do with breadcrumb schema, start by deciding if breadcrumb navigation could help the visitors to the website. Will that breadcrumb navigation help people or agents better understand and use the website’s content? Will the breadcrumb navigation help visitors move around the website? Will the breadcrumb navigation help visitors understand where they are on the website?
If you do use breadcrumb navigation on your website, it typically makes sense to also use breadcrumb schema to reflect the hierarchy. That is especially true for websites with more complex hierarchies.
If you need help with breadcrumb schema or other aspects of technical SEO and AI Search, please contact me.