Skip to content
Surfilby Adam Hafez
Free tool

Breadcrumb schema generator (BreadcrumbList JSON-LD)

Breadcrumb schema generator: build BreadcrumbList JSON-LD row by row, with position, name and URL checks from Google's docs. Free, runs in your browser.

Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.

Preview

    Key takeaways

    • Google requires at least two ListItem entries for a breadcrumb to be eligible for rich results.
    • Every ListItem needs a position, a name and an item URL, except the last, where item is not required.
    • Google recommends breadcrumbs that represent a typical user path to a page instead of mirroring the URL structure.
    • The generator numbers positions from 1 automatically, so adding or removing a row never leaves a gap.
    • Nothing typed into the rows leaves the browser; the JSON is built and checked locally.

    What it takes

    • A page name for each step in the trail
    • An absolute URL for each step except the current page

    More tools

    All of them free, all of them browser-only.

    Browse the tools

    How to use it

    1. 1List the trail from the site root to the current pageAdd one row per step: Home, then each intermediate section, ending with the page the visitor is on.
    2. 2Give every step but the last an absolute URLThe final row is the current page. Its URL is optional; Google resolves it to the page the markup ships on.
    3. 3Read the warnings before copyingA trail with fewer than two items or a relative URL is flagged as you type, before it ever reaches production.
    4. 4Paste it into the page headWrap the output in a script tag with type="application/ld+json", then confirm with Google's Rich Results Test on the live URL.

    A breadcrumb trail is structured data about navigation rather than content. Google’s breadcrumb documentation keeps the rules short: a BreadcrumbList whose itemListElement array holds ListItem entries in order, at least two of them, each with a position, a name and a URL. This generator turns rows you type into that JSON-LD and checks those rules as you go.

    What the generator checks

    Every rule below comes from Google’s BreadcrumbList documentation.

    • At least two items. Google requires at least two ListItem entries to be eligible for rich results. With fewer than two named rows, the tool warns that a trail needs a parent and the current page.
    • Position. Google defines position 1 as the beginning of the trail. The generator numbers positions from the order of the rows, so there are no gaps or duplicates to get wrong by hand.
    • Name. The title shown to the user. A row with no name is left out of the output entirely.
    • Item URL. Required on every step except the last. A missing URL on any other row is flagged, and any URL that does not start with https:// or its insecure equivalent is flagged as not absolute.
    • The last item. Google says item is not required on the final breadcrumb. Leave that row’s URL blank and the generator drops the item property; fill it in and it is kept.

    How to read the results

    Three things update on every keystroke. The JSON-LD block is the output to copy. The issues list shows each warning in amber, or a single green line when every item has a name and every item but the last has an absolute URL. The preview renders the trail with slashes between steps and marks the final step as the current page, so you can read it the way a visitor would.

    A warning does not stop the JSON from being generated. A middle row with no URL, for example, still appears in the output with an empty item value, which is exactly what the warning is there to stop you shipping.

    Worked example

    Three rows: “Home” at https://example.com, “Guides” at https://example.com/guides, and “Canonical tags” with the URL left blank. The generator produces:

    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com" },
        { "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides" },
        { "@type": "ListItem", "position": 3, "name": "Canonical tags" }
      ]
    }

    The issues list shows the green all-clear, and the preview reads Home / Guides / Canonical tags. Change the second URL to /guides and a warning appears: “Guides“‘s URL must be absolute.

    Common mistakes it catches

    • A one-item trail. A lone “Home” or a lone current page is not a path, and Google requires at least two items.
    • Relative URLs. Paths such as /guides are copied straight from templates and fail the absolute URL check.
    • A missing URL in the middle. Only the last item may omit item; any other gap is flagged with the step’s name.
    • Hand-numbered positions. Typing positions yourself makes it easy to skip or repeat one after an edit. Here they are always 1, 2, 3 in row order.

    One thing it cannot check is whether the trail matches the navigation on the page. Google’s guidance is to represent a typical user path, so build the trail per page or per template from the links a visitor can actually click, then confirm the live URL in Google’s Rich Results Test.

    Sources

    1. 1.Breadcrumb (BreadcrumbList) structured data - Google Search CentralPrimary

    Common questions

    Does the last breadcrumb need a URL?

    No. Google's documentation states that if the breadcrumb is the last item in the trail, item is not required. Leave the last row's URL blank here and the generator omits the item property for it.

    Should the trail match my URL folder structure?

    Not necessarily. Google recommends breadcrumbs that represent a typical user path to the page instead of mirroring the URL structure.

    How many items does a breadcrumb trail need?

    At least two ListItem entries, per Google's documentation. The generator warns as soon as fewer than two rows have a name.

    Can a page have more than one breadcrumb trail?

    Yes. Google's documentation shows multiple trails for a page reachable by different paths. This tool builds one BreadcrumbList at a time, so generate each trail separately and include both.

    How is this different from the general schema markup generator?

    The schema markup generator covers several page types from a fixed field form. This tool is built around what a breadcrumb trail is, a list whose length changes per page, with checks specific to BreadcrumbList's position and item rules.