Breadcrumb markup for tidy search snippets
The JSON-LD BreadcrumbList Schema Builder converts your page hierarchy into a valid schema.org/BreadcrumbList block. When Google uses it, the raw URL in your snippet becomes a clean, clickable trail such as Home > Guides > This Page, which reads better and earns more clicks.
How it works
The tool wraps each level of your trail in a ListItem object inside the itemListElement array. Every item carries a position (numbered automatically from 1 in order), a name for the visible label, and an item holding the page URL. Blank rows are skipped, and the positions are always renumbered so there are never gaps. The result is a single BreadcrumbList object with @context set to https://schema.org.
A complete worked example
A blog post nested three levels deep — for example Home > Blog > Category > Post — needs four entries. Here is the full output for that structure:
{
"@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": "Recipes", "item": "https://example.com/blog/recipes/" },
{ "@type": "ListItem", "position": 4, "name": "Sourdough Bread", "item": "https://example.com/blog/recipes/sourdough/" }
]
}
Google may show the breadcrumb trail instead of the raw URL in the search result, turning an opaque path into a readable hint about the page’s place in your site.
What affects whether Google shows breadcrumbs
Breadcrumb rich results are generally available to any eligible site, but a few things affect whether Google picks them up:
- Visibility on the page. The markup should reflect a breadcrumb element that users can actually see. Hidden or non-existent breadcrumbs can be treated as a violation.
- Consistent NAP. The
itemURLs must resolve correctly and match the canonical URL for each page. - Position numbering. Gaps in positions (jumping from 1 to 3) or duplicates can confuse parsers. This tool always numbers them sequentially.
- Absolute URLs. Relative paths in the
itemfield are not valid — always use fully-qualifiedhttps://URLs.
When to use multiple BreadcrumbList blocks
A page reachable through more than one path in your site hierarchy — for example a product that belongs to two categories — can include multiple BreadcrumbList objects in a JSON-LD array. Google picks one to display. For most pages a single trail is simpler and clearer.
Tips and example
Order the rows from the top of your site (Home) down to the current page. Use absolute URLs so each crumb is crawlable. Keep the trail consistent with the breadcrumb a user actually sees on the page. A two-level trail produces this shape:
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides" }
]