Breadcrumb Schema Generator
Enter your page hierarchy to generate BreadcrumbList JSON-LD for Google rich results.
Paste the generated script tag inside the <head> of your page. The last item's URL is optional per Google's spec.
How to Use a Breadcrumb Schema Generator to Win Breadcrumb Rich Results in Google
If you have ever noticed a website in Google search results where the URL line shows something like Home › Blog › Tutorial Name instead of a raw URL like https://example.com/blog/tutorial-name/, you have seen breadcrumb rich results in action. These small navigational trails appear directly in the SERP snippet and they are powered by structured data — specifically, BreadcrumbList JSON-LD schema markup. This guide walks you through exactly how to generate this schema correctly and deploy it on any page.
What Is BreadcrumbList Schema and Why Does It Matter?
BreadcrumbList is a vocabulary type defined by Schema.org that describes the hierarchical position of a page within a website. When you mark up a page with BreadcrumbList JSON-LD, you are telling Google: "This page sits at position 3 in a trail that goes Home → Category → This Page." Google then has enough context to potentially display that trail under your blue link in search results.
The SEO value is real. Breadcrumb trails improve click-through rates because they signal site structure to searchers, help users understand what kind of page they are about to visit, and give your result a more prominent visual footprint in the SERP. For e-commerce sites, blogs with deep category structures, and documentation sites, breadcrumb markup is one of the simplest structured data wins available.
The Anatomy of a BreadcrumbList JSON-LD Block
Before you generate anything, it helps to understand what the output looks like and why each part exists. A correctly formed BreadcrumbList looks like this:
<script type="application/ld+json">
{
"@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": "How to Bake Bread",
"item": "https://example.com/blog/how-to-bake-bread/"
}
]
}
</script>
Each object inside itemListElement is a ListItem. The three required properties are:
- position — An integer starting at 1. This determines the order in which items appear in the trail. Never skip numbers or start from 0.
- name — The human-readable label that Google will display in the search result. Keep it short and descriptive.
- item — The full, canonical URL of that breadcrumb level. This must be an absolute URL including the protocol (
https://). For the last item (the current page), Google's documentation says the URL is technically optional, but including it is best practice.
Step-by-Step: Generating Your Breadcrumb Schema
Step 1: Map your page hierarchy before you open the tool. Start from the homepage and trace the exact path a visitor takes to reach the page you are marking up. For a product page on a clothing store, the chain might be: Home → Women's → Dresses → Summer Maxi Dress. Write this out first — rushing into the tool without clarity about your hierarchy is the most common source of errors.
Step 2: Collect the canonical URLs for each level. Open each page in your browser and copy the canonical URL from the address bar (or from the <link rel="canonical"> tag in the page source). These must exactly match your canonical URLs — if you use trailing slashes, include them; if you do not, exclude them. Inconsistency between your schema URLs and your canonical tags will create confusion for Google.
Step 3: Enter rows in order in the generator. Start with position 1 (always your homepage) and work toward the deepest page. Enter the name in the first field and the full URL in the second. Add as many rows as your hierarchy has levels. Most sites use between 2 and 5 levels — going beyond 6 or 7 levels is unusual and may indicate overly complex URL structures.
Step 4: Generate and review the output. Click Generate Schema. The tool produces a complete <script type="application/ld+json"> block. Review it for typos in names and verify that all URLs end correctly. Also check the search preview to confirm the trail reads naturally in the order you intend.
Step 5: Paste the script into your page's <head> section. Copy the generated code and paste it inside the <head> tag of your HTML. In WordPress you can do this via a plugin like Rank Math or Yoast (which has built-in breadcrumb schema support), through a header/footer plugin, or in your theme's header.php. In Next.js or other React frameworks, use the next/head component. In plain HTML, paste it directly.
Step 6: Validate with Google's Rich Results Test. Navigate to search.google.com/test/rich-results, enter your page URL (or paste the HTML), and run the test. Confirm that Google detects the BreadcrumbList with no errors. Warnings are acceptable; errors mean the schema will not be eligible for rich results.
Common Mistakes That Break Breadcrumb Schema
Using relative URLs instead of absolute URLs. The item field must always be a full URL. Writing /blog/post/ instead of https://example.com/blog/post/ will cause validation errors.
Starting positions at 0. The Schema.org specification is clear: positions start at 1. A schema with "position": 0 for the homepage will fail Google's validator.
Mismatch between schema URLs and canonical URLs. If your canonical tag says https://example.com/blog/post/ but your schema says https://www.example.com/blog/post/, you have a conflict. Pick one version (with or without www) and use it consistently.
Putting the same position number on two items. Each position value in the list must be unique. Using 1, 2, 2, 3 is invalid.
Using this on pages that lack visible breadcrumb navigation. Google recommends that your JSON-LD breadcrumb schema corresponds to an actual visible breadcrumb UI on the page. While the schema alone can sometimes trigger rich results, having the visual breadcrumb present reduces the risk of the structured data being ignored or penalized.
One Schema Per Page, Not Per Site
A critical distinction: breadcrumb schema is page-level markup, not site-level. The schema on your homepage only has one item (position 1, the homepage itself). The schema on a category page has two items. The schema on a blog post three levels deep has three items. Each page gets its own unique schema reflecting its specific position in the hierarchy. Do not use the same generic breadcrumb block on every page of your site.
Once properly implemented, give Google a few weeks of recrawling before expecting the breadcrumb trail to appear consistently in search results. Google does not guarantee rich results even with valid schema, but correct BreadcrumbList markup significantly increases the probability of your pages showing that useful navigational trail to searchers.