SEO Tools

Breadcrumb Schema Generator

Use this free Breadcrumb Schema Generator to create valid BreadcrumbList JSON-LD structured data for any page. Add each level of your navigation path and copy markup that replaces the raw URL in your search results with a clean, readable trail. No sign-up required.

Simple Setup Cleaner Search Results 100% Free

Breadcrumb Items

Schema Preview

No Schema added yet

Preview

Why You Are Here

Breadcrumb markup has the best effort-to-benefit ratio of any structured data type. It takes minutes to implement, applies to nearly every page on a site, and almost never causes validation problems.

The payoff is immediately visible

Without markup, Google shows a version of your raw URL beneath the page title in search results. With it, that line becomes a readable path such as Home > SEO Tools > Breadcrumb Schema Generator.

That difference matters most on deep pages. A URL with several folder levels, a numeric ID, or an unhelpful slug looks cluttered and tells a searcher very little. A named path tells them exactly where the page sits and what kind of thing it is before they click.

The first situation is a site whose search results show raw URLs, where the fix is quick and applies across every template at once.

The second is a site with visible breadcrumbs on the page but no corresponding markup, so search engines have to infer a hierarchy that is already stated plainly in the HTML.

The third is fixing mismatches, where the markup and the visible breadcrumbs have drifted apart and Search Console is flagging it.

What This Tool Does

The Breadcrumb Schema Generator builds valid BreadcrumbList JSON-LD from your navigation path.

Enter each level of the trail with its name and URL, in order from your homepage down to the current page, and the tool assembles correctly numbered ListItem objects inside a BreadcrumbList wrapper, with the script tag included. Copy it and paste it into your page.

Everything runs in your browser. Nothing is uploaded or stored.

Requirements

The whole specification fits in one table.

Requirement Detail

itemListElement

Array of ListItem objects

ListItem.position

Sequential integer, starting at 1

ListItem.name

The label for that level

ListItem.item

URL for that level, optional on the last

Minimum entries

TWO ListItem objects

Two items is the minimum

A single-item breadcrumb showing only Home is technically valid but produces nothing useful, which is why breadcrumb markup is worth adding from the second level of your site downwards rather than on the homepage itself.

Positions must be sequential integers starting at 1

Skipping a number, starting at 0, or reordering the array without renumbering breaks parsing. If a breadcrumb trail stops appearing after a template change, the position sequence is the first thing to check.

The final item may omit its URL

The last entry is the page the visitor is already on, so Google displays it as plain text rather than a link. Including the URL anyway is also accepted, and both approaches work.

Represent the User Path, Not the URL Structure

This is Google's guidance and it is the point most implementations miss, because the obvious approach is to mirror the folder structure.

Google's framing

Breadcrumbs should represent a typical user path to the page, rather than mirroring the URL.

Those two are often the same thing, and where they are, no decision is needed. Where they differ, the user path is the better choice.

URL Mirroring the URL Typical user path

/blog/2026/03/sourdough-guide

Home > Blog > 2026 > 03 > Sourdough Guide

Home > Blog > Baking > Sourdough Guide

/p/48291

Home > P > 48291

Home > Jumpers > Merino Crew Neck

/docs/v2/api/auth

Home > Docs > V2 > Api > Auth

Home > Documentation > API > Authentication

Date folders are the clearest case. Nobody navigates to an article by choosing a year and then a month, so a trail built from those levels describes the file path rather than any route a person would take.

A practical constraint

Your markup should match the breadcrumbs visible on the page, so if you want a user-path trail in search results, build that trail on the page as well.

Example Output

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "SEO Tools",
      "item": "https://example.com/seo-tools"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Breadcrumb Schema Generator"
    }
  ]
}

// The third item has no item property because it is
// the current page.

Multiple Trails for One Page

If a page is genuinely reachable through more than one route, you can supply more than one BreadcrumbList. A jumper might sit under both a category path and a seasonal collection:

[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Home",
        "item": "https://example.com/" },
      { "@type": "ListItem", "position": 2, "name": "Jumpers",
        "item": "https://example.com/jumpers" },
      { "@type": "ListItem", "position": 3,
        "name": "Merino Crew Neck" }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Home",
        "item": "https://example.com/" },
      { "@type": "ListItem", "position": 2,
        "name": "Autumn Collection",
        "item": "https://example.com/autumn" },
      { "@type": "ListItem", "position": 3,
        "name": "Merino Crew Neck" }
    ]
  }
]
Google picks whichever trail best fits the query. Only do this where both routes genuinely exist in your navigation. Inventing a second path to fit more keywords into search results is not what the feature is for.

Where the Markup Goes

<script type="application/ld+json">
{
  ... your BreadcrumbList JSON-LD here ...
}
</script>

Google processes JSON-LD wherever it appears, though the head is conventional.

Breadcrumb markup belongs in your page template rather than being written per page

The trail is derived from where a page sits, so generating it from your existing navigation logic means it is correct everywhere and stays correct as the site changes. Hand-writing it page by page is how mismatches begin.
Combining with other schema is normal. A product page typically carries Product schema for the item and BreadcrumbList for its position. Use a separate script tag for each.

What Breadcrumb Markup Does and Does Not Do

Does Does not

Replaces the raw URL with a readable path in search results

Directly improve rankings

Gives search engines an explicit site hierarchy

Replace internal linking

Helps AI systems understand page relationships

Work without matching visible breadcrumbs

Applies to nearly every page on a site

Create navigation for users on its own

On rankings

Breadcrumb markup is not a confirmed ranking signal. Its value is presentational and structural. A clearer, more informative search result can improve click-through rate, and engagement is its own kind of signal, but the honest description is that this improves how your result looks rather than where it ranks.

On availability

Google's documentation describes the breadcrumb feature as available on desktop in all regions and languages where Google Search is available. Worth knowing when comparing what you see on a phone against what you see on a laptop.

Common Mistakes to Avoid

Markup That Does Not Match the Visible Breadcrumbs

Structured data must reflect what a visitor can see. If your page shows Home > Shop > Knitwear but your markup says Home > Products > Jumpers, Search Console will flag the mismatch and Google may disregard the markup entirely. This usually happens when the trail is hand-written per page rather than generated from the same navigation logic that renders the visible breadcrumbs.
Breaking the Position Sequence

Positions must be sequential integers starting at 1. Starting at 0, skipping a number, or reordering the array in a template without renumbering all break parsing, and the trail simply stops appearing. Because the markup still validates as JSON, nothing obvious signals the problem, which makes it worth checking first when a working breadcrumb disappears.
Using BreadcrumbList for Pagination or Unrelated Links

BreadcrumbList describes a hierarchical path from your site root to the current page. It is not for pagination sequences, related-article links, or a list of recently viewed pages. Those are different relationships and misusing the type gives search engines an incorrect picture of your site structure.

Quick Reference

item Detail

Type

BreadcrumbList

Rich result

Breadcrumb trail, fully supported

Required

itemListElement with position and name

Minimum

Two ListItem entries

Positions

Sequential integers from 1

Last item

item URL optional

Trail should reflect

The user path, not the URL

Visibility

Must match the visible breadcrumbs

Multiple trails

Allowed if routes genuinely exist

Not for

Pagination or related links

Implementation

In the template, not per page

Rankings

Not a confirmed ranking signal

Frequently Asked Questions

What is a breadcrumb schema generator?

A breadcrumb schema generator is a free online tool that turns your navigation path into valid BreadcrumbList JSON-LD structured data. You enter each level of the trail with its name and URL, and this Breadcrumb Schema Generator produces correctly numbered Schema.org markup ready to paste into your page.

What does breadcrumb schema actually do in search results?

It replaces the raw URL shown beneath your page title with a readable path such as Home, Category, Page Name. Without the markup, Google falls back to parsing your URL, which usually produces something less readable, particularly on deep pages or URLs containing IDs and date folders.

Which properties are required?

An itemListElement array containing at least two ListItem objects, each with a position as a sequential integer starting at 1, and a name. The item URL is needed for every level except the last, which is the current page and may omit it. That is the entire requirement set.

Should the last breadcrumb include a URL?

It may omit it. The final item is the page the visitor is already on, so Google displays it as plain text rather than a link. Including the URL anyway is also valid and some implementations do it for completeness. Both approaches work.

Should my breadcrumbs match my URL structure?

Not necessarily. Google's guidance is that breadcrumbs should represent a typical user path to the page rather than mirroring the URL. A blog post at a URL containing year and month folders is better described as Home, Blog, Category, Post Name than as a trail containing those date levels, since nobody navigates by choosing a date.

Can one page have more than one breadcrumb trail?

Yes, if the page is genuinely reachable through several routes. A product might sit under both a category and a seasonal collection, and you can supply a separate BreadcrumbList for each. Google chooses whichever fits the query best. Only do this where both paths actually exist in your navigation.

Does breadcrumb schema improve rankings?

Not directly, and it is not a confirmed ranking signal. Its value is that a clean, readable path in place of a raw URL makes your result more informative, which can improve click-through rate. It also gives search engines and AI systems an explicit statement of your site hierarchy, which helps them understand how your content is organised.

Where should I add the breadcrumb markup?

In your page template rather than page by page, so it is generated from the same navigation logic that renders your visible breadcrumbs. That keeps the two matching automatically and keeps them correct as the site changes. Markup from this Breadcrumb Schema Generator shows the structure your template should produce, with each level numbered in order.

Comments

Login to leave a comment

No comments yet. Be the first to comment!