Breadcrumb Schema Generator

Use one item per line: Name | URL

Google displays a breadcrumb trail above the URL in search results when your page provides valid BreadcrumbList structured data. This generator takes the breadcrumb steps from Home to the current page, builds a schema.org JSON-LD block with correct ListItem positions, and returns a script tag you can drop into <head>. No WordPress plugin, no Yoast, just clean JSON-LD.

How to generate BreadcrumbList JSON-LD

  1. 1

    Enter each breadcrumb level

    Label and URL for every step from the homepage down to the current page. Most sites have 2-5 levels.

  2. 2

    Tool assigns positions automatically

    Home is position 1, next crumb is position 2, and so on. Position indexing is required by schema.org for valid output.

  3. 3

    Copy the JSON-LD snippet

    The generator returns a full `<script type="application/ld+json">` block ready to paste into your `<head>`.

  4. 4

    Validate

    Click through to Google's Rich Results Test to confirm the markup is accepted and eligible for breadcrumb display.

Anatomy of valid BreadcrumbList JSON-LD

{
  "@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 build breadcrumbs"
    }
  ]
}

Why the last crumb often skips item

Google’s documentation allows (and many SEOs recommend) omitting the URL on the final breadcrumb because it refers to the current page. The page URL is already in the request; repeating it adds no value. The generator has a toggle to either include or drop the last item field.

Common mistakes

  • Position gaps or duplicates — positions must be 1, 2, 3… in order with no gaps.
  • Missing item on non-final crumbs — every crumb except optionally the last needs a URL.
  • Fragment-only URLs (#section) — Google ignores these as breadcrumb targets; use full paths.
  • Multiple BreadcrumbList blocks per page — harmless but unnecessary, Google picks one.
  • Labels that don’t match visible breadcrumbs — causes Google to distrust all your structured data.

Placement

  • Put the <script> in <head> for cleanest crawling.
  • You can also place it in <body> — both work. Avoid injecting it via JavaScript unless your crawl budget is fine with JS rendering.
  • Do not wrap it in <noscript>.

Frequently Asked Questions

Recommended but not strictly required. Google asks that structured breadcrumbs match what users see, so a visible breadcrumb component plus JSON-LD is the safest combination.

Not directly. It affects how your result is displayed (breadcrumb trail replacing URL in the SERP), which can improve click-through. Better CTR indirectly helps rankings over time.

Yes — Google supports multiple BreadcrumbList blocks for pages reachable by different paths (category vs. tag, for example). List each trail in its own script block.

Paste the JSON-LD or the page URL into Google’s Rich Results Test. It flags missing required fields and previews the breadcrumb exactly as Google would display it.

Related Tools