BreadcrumbList schema, explained
BreadcrumbList describes a page's position in the site hierarchy, as a list of ListItems from the top level down. Google requires itemListElement, and each ListItem needs position, name and item (the URL), except that the last item may leave out item. Breadcrumb rich results show on desktop only.
What it's for
BreadcrumbList is an ItemList of links to parent pages, ending with the current page. Google uses it to show the trail in search results instead of a raw URL. Since January 2025 that display is desktop only, because breadcrumbs were truncated on small screens (Google: Breadcrumb).
Key properties
| Property | What it holds | |
|---|---|---|
itemListElement |
The breadcrumbs, in order, each a ListItem. |
Required |
ListItem.position |
1 for the start of the trail, then 2, 3… | Required |
ListItem.name |
The breadcrumb text shown to users. | Required |
ListItem.item |
The URL of that level. Not required for the last item; Google uses the containing page's URL. | Required (except last) |
A page can have more than one trail if it is genuinely reachable through several paths; give each its own BreadcrumbList.
Minimal example
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Services", "item": "https://example.com/services/" },
{ "@type": "ListItem", "position": 2, "name": "Drain cleaning", "item": "https://example.com/services/drain-cleaning/" },
{ "@type": "ListItem", "position": 3, "name": "Fort Myers" }
]
}
Generate a BreadcrumbList; positions are numbered for you.
Common mistakes
- Relative URLs (
/services/) initem. Use full URLs. - Positions that skip or start at 0.
- Trails that don't match the visible breadcrumb or the site's real structure, such as a keyword path no visitor would follow.
- Missing
itemon a middle level. Only the last breadcrumb may leave it out.
Sources
- schema.org: BreadcrumbList, ListItem
- Google Search Central: Breadcrumb structured data (last updated 8 September 2026)