BreadcrumbList is the Schema.org type that describes a breadcrumb trail: the ordered chain of links that shows where a page sits in a website’s hierarchy, such as Home › Shoes › Running shoes. In structured data it is one of the most widely deployed types, because it is simple to implement and makes site structure explicit to search engines.
Search engines use BreadcrumbList markup to understand and display the page’s position in the site. Google may show the trail in place of the raw URL in search results, which makes the result easier to scan. BreadcrumbList is a subtype of ItemList, and each step in the trail is a ListItem with a name, a URL and a position.
How BreadcrumbList markup is structured
A BreadcrumbList contains an itemListElement array in which every element is a ListItem. The position property gives the order, starting at 1 for the top level, and the trail ends with the current page or its immediate parent.
| Property | Applies to | Purpose | Status for Google |
|---|---|---|---|
| itemListElement | BreadcrumbList | Holds the ordered steps | Required |
| position | ListItem | Integer order from 1 upward | Required |
| name | ListItem | Label shown for the step | Required |
| item | ListItem | URL or identifier of the step | Required except for the last step |
| @type | Each node | Declares BreadcrumbList or ListItem | Required by syntax |
The markup is usually written in JSON-LD in the page head, which keeps it separate from the visible HTML. Microdata and RDFa are also supported and attach the properties directly to the visible breadcrumb elements, which guarantees consistency but makes templates harder to maintain.
A minimal trail for a running shoe category therefore has three ListItem nodes: position 1 named Home with the homepage URL, position 2 named Shoes with the category URL, and position 3 named Running shoes. The final step may omit item, in which case the search engine treats the current page URL as its destination.
What BreadcrumbList does in search results
BreadcrumbList is eligible for a breadcrumb rich result: instead of a long URL, the result shows the domain followed by the trail, for example a domain then Shoes › Running shoes. This helps users judge where a result sits before they click.
Display is never guaranteed. Search engines decide whether to show the trail based on device, layout and quality, and Google simplified its mobile results in 2025 so that breadcrumbs appear mainly on desktop. The markup remains valuable because it still communicates hierarchy for understanding and site structure.
The table below compares BreadcrumbList with other common structured data types to clarify its role.
| Type | Describes | Typical visible effect |
|---|---|---|
| BreadcrumbList | Position of a page in the site hierarchy | Trail in place of the URL |
| Organization | The entity behind the site | Logo and knowledge panel details |
| Product | A product with price and availability | Price, rating and stock in results |
| Article | A news or blog article | Headline, image and date treatment |
| FAQPage | Question and answer pairs | Rich result now limited to few sites |
Implementing BreadcrumbList correctly
Good implementations generate BreadcrumbList from the same data as the visible breadcrumb, so markup and page always agree. The trail should reflect a logical user path, not necessarily the URL folders, because many sites use flat URLs with deep category hierarchies.
- Start the trail at a meaningful top level; including the homepage is optional.
- Use absolute canonical URLs for every item, never parameterized or redirected URLs.
- Keep names short and identical to the visible breadcrumb labels.
- For pages reachable through several categories, multiple BreadcrumbList blocks are allowed, one per trail.
- Validate templates with the Rich Results Test and the Schema Markup Validator before release.
Content management systems and SEO plugins often output BreadcrumbList automatically. In that case the main task is to avoid duplicate or conflicting trails when a theme and a plugin both add their own markup.
Common BreadcrumbList errors
Errors in BreadcrumbList are typically reported in the Breadcrumbs enhancement report of Google Search Console. Most stem from template logic rather than from individual pages.
| Error | Likely cause | Fix |
|---|---|---|
| Missing field item | URL omitted on an intermediate step | Add item for every step except the last |
| Invalid position | Positions start at 0 or skip numbers | Number sequentially from 1 |
| Mismatch with visible trail | Markup built from different data | Generate both from one source |
| Duplicate trails | Theme and plugin both output markup | Disable one of the sources |
| Non-canonical URLs | Tracking parameters in item values | Use clean canonical URLs |
| Trail ends on wrong page | Last step points to a category | End with the current page or parent |
Errors in BreadcrumbList do not cause ranking penalties, but invalid items make the page ineligible for the breadcrumb display and remove a clear hierarchy signal.
BreadcrumbList and site architecture
BreadcrumbList only describes a hierarchy; it cannot create one. A site with a confused category structure produces confusing trails, so the markup works best on top of a clear site architecture with consistent parent categories.
Visible breadcrumbs also strengthen internal linking, because every page links back to its parents with descriptive anchor text. The structured data then labels these links precisely, so users, crawlers and answer engines read the same hierarchy in three ways: visually, through links and through markup.
For this reason, BreadcrumbList is best planned together with category design during a site migration or redesign. Changing the hierarchy later means updating visible trails, internal links and markup at once, and inconsistent trails across templates weaken the structure the markup is meant to express.
The idea in brief
Many websites show a small line of links near the top of a page, such as Home › Kitchen › Knives. This is a breadcrumb trail, named after the fairy tale in which children leave crumbs to find their way home.
BreadcrumbList is a hidden label that describes this trail to search engines. It tells them exactly which section a page belongs to. Search engines can then show the trail in results, so people see where a page fits before they open it.
A practical scenario
An outdoor equipment shop has about 6,000 product pages with URLs such as /p/48213, which tell users nothing in search results. Its theme shows visible breadcrumbs, but no structured data describes them.
The developer adds a JSON-LD BreadcrumbList generated from the same category data as the visible trail, for example Home › Camping › Tents › Two-person tents. After validation in the Rich Results Test and a few weeks of recrawling, the Breadcrumbs report lists the pages as valid, and desktop results show readable category trails instead of numeric URLs, which makes the listings easier to understand at a glance.