A breadcrumb trail helps two different audiences at once. A visitor uses it to jump back up the site hierarchy without hitting the browser back button. A search engine uses the same information, expressed as structured data, to decide whether to replace the raw URL under your result with a readable path of page names, which is one of the few purely cosmetic wins available in search results that costs nothing to earn.
Nothing you type leaves your browser. The trail is assembled and serialised locally, so you can build markup for a page that has not shipped yet without handing a competitor a preview of your site structure.
Adding schema markup for breadcrumbs to an existing page
Adding schema markup for breadcrumbs to a page that already has a visible trail is the lowest risk way to start, since the JSON-LD only needs to restate what a visitor can already read rather than invent anything new. Copy the same labels and the same order that appear in the on page trail and the two will never contradict each other.
What a breadcrumb schema generator actually produces
The output is a single BreadcrumbList object containing an ordered list of ListItem entries. Each ListItem carries a position starting at 1, a name that matches the visible label in your on page trail, and an item property holding the absolute URL of that step. The final entry, the current page, is commonly left without a further link since it is where the visitor already is.
Order matters more than anything else in this markup. The position values must increase from the homepage down to the current page in the same order a visitor would climb back through the site. A breadcrumb schema generator that lets the rows be reordered without renumbering them is the single most common source of broken markup, which is why this tool recalculates position automatically whenever a row moves.
- Start at the homepage or a top level section, never partway down the tree.
- Use the exact visible label from the page as the name for each step.
- Give every non final step an absolute URL, not a relative path.
- Keep the current page last, matching the last crumb a visitor actually sees.
- One BreadcrumbList per page. Do not merge two separate trails into one list.
When breadcrumb markup earns a rich result and when it does not
Google shows a breadcrumb trail in place of the plain URL for a result when the page's own markup, or a well formed visible breadcrumb the crawler can parse, agrees with the site's actual navigation. It is not guaranteed for every page, and it is withdrawn silently if the markup ever contradicts the page the visitor sees, for example a trail that names a category the page does not belong to.
The safest use of a breadcrumb schema generator is to describe a trail that is already visible on the page in the same order and with the same labels. Markup invented purely for search engines, describing a hierarchy the page does not actually sit in, is treated as misleading structured data and can suppress rich result eligibility for the whole domain rather than just the one page.
Absolute URLs and the mistake that breaks the whole list
Every item value in a BreadcrumbList entry must be a complete, absolute URL including the scheme and host. A relative path such as /shop/shoes is not valid here even though it works fine as an anchor href on the page, because the JSON-LD block has no base URL of its own to resolve it against.
This tool checks each URL you enter and warns before generating if one is missing a scheme or host, since a silently broken entry is worse than an error, it looks correct in the editor and only fails once a validator or a search engine actually tries to resolve it.
How this breadcrumb schema generator handles the final crumb
Google's own documentation notes that the last item, representing the current page, does not need an item URL at all since a link to the page you are already on adds nothing. This tool follows that guidance: leave the final row's URL blank and the generator omits the item property for that entry rather than forcing you to repeat the current page's own address.
If you do supply a URL for the last row anyway, for example because a template always fills every field, the generator keeps it. Both forms are valid. The omission is simply the cleaner default that Google's examples themselves use.
Escaping and where the script tag belongs
The generated JSON is escaped so that a closing script sequence inside a name, which would otherwise end the script element early and truncate the markup, cannot break the page. Quotation marks and other JSON reserved characters inside names are escaped the same way, so labels containing an ampersand or a quote still produce valid output.
Place the resulting script tag anywhere in the head or body of the page. It does not need to sit near the visible breadcrumb trail in the markup, though keeping them close together in the template makes it far less likely the two drift apart when a page is renamed later.
How to generate breadcrumb schema
- 1
Add the homepage
Start with the site's top level page as row one, using its name and full absolute URL.
- 2
Add each step in the trail
Add one row per level of the hierarchy, in the same order a visitor would climb back through the site.
- 3
Leave the current page's URL blank
The last row represents the page itself. Leaving its URL empty matches Google's own recommended pattern.
- 4
Generate and paste
Press generate, review any warnings, then copy the script tag into your page's head or body.
Related tools worth bookmarking
Sources and further reading
- schema.org: BreadcrumbListThe vocabulary definition for BreadcrumbList and the ListItem entries it contains.schema.org
- Google Search Central: Breadcrumb structured dataGoogle's own guidelines and examples, including the recommendation to omit the final item URL.developers.google.com
- W3C: JSON-LD 1.1The specification for the serialisation format this tool emits, including escaping rules.w3.org
Frequently asked questions
Common questions about the breadcrumb schema generator.
No. Valid BreadcrumbList markup makes a page eligible for a breadcrumb trail in place of the plain URL, but Google decides case by case whether to show it, and withdraws it if the markup ever contradicts the page's real navigation. Treat it as an opportunity, not a guarantee.
Yes. Each ListItem's item value must be a complete URL including the scheme and host, since the JSON-LD block has no page context to resolve a relative path against. A path like /category/page will not validate and will usually be ignored by consumers of the markup.
No. Google's own examples leave the final ListItem without an item property, since linking to the page a visitor is already on adds nothing. This tool omits it automatically when you leave that field blank, though supplying it anyway is still valid.
Technically you can emit more than one BreadcrumbList, but it is rarely a good idea. A page usually has one true position in the site hierarchy, and multiple competing trails make it harder for a search engine to decide which one reflects the actual navigation a visitor sees.
As many as genuinely exist between the homepage and the current page, and no more. Two or three levels is typical for most sites. Padding a shallow page with invented intermediate categories to look more organised is the kind of mismatch that gets rich result eligibility withdrawn.