Generate valid JSON-LD BreadcrumbList schema markup for search snippet navigation.
Define your page levels and generate the schema.
What BreadcrumbList markup actually does, where to place it, and answers to the questions we get asked most about breadcrumb schema.
BreadcrumbList schema is a small piece of JSON-LD markup that
describes the sequence of pages leading to the current one, using
schema.org's BreadcrumbList and ListItem
types.
Without it, Google usually shows the page's raw URL path under the title in search results — often long, sometimes just a string of folder names or query parameters. With valid breadcrumb schema in place, Google can replace that with a short, readable trail like "yoursite.com > Shop > Running Shoes," which gives searchers immediate context about where the page sits before they click.
Breadcrumb schema describes one specific page's position, so it needs to be generated per page and placed in that page's own HTML — not once, site-wide.
In practice this means the JSON-LD <script> block
goes in the <head> (or just before the closing
</body>) of each individual page template, with the
names and URLs generated dynamically from that page's actual position
in your site — a product page's breadcrumb schema should reflect that
product's category, not a fixed value copied across every page.
No — the breadcrumb trail in your schema is meant to reflect the logical category path a user would follow, and it doesn't need to match your site's actual URL or folder structure.
A product physically located at /p/8841/ can still have
a breadcrumb schema of Home > Shop > Running Shoes if that's the
path a visitor would naturally browse through, since the markup
describes navigation context, not file location.
Google can replace a raw URL path under your title with a readable Home > Category > Page trail.
Explicit parent-page relationships help search engines understand how your pages relate to each other.
The schema is generated entirely in your browser — nothing you type here is sent to a server.
/tools/seo/generator/ can still declare a
breadcrumb of Home > SEO Tools > Schema Generator if that
better represents how users would browse to it.
item) field on the final entry as unnecessary,
since that entry is the current page and isn't meant to be a
clickable link. Including a URL there anyway isn't an error
either; both forms validate, so it comes down to preference
rather than a fix you need to make.
<script> block, or the
live page URL once it's deployed, into Google's Rich Results
Test. It parses the JSON-LD and reports any missing fields,
out-of-order positions, or other structural problems directly.