Skip to main content

Breadcrumb Schema Generator

Build BreadcrumbList JSON-LD from a URL or your page's HTML, with multiple trails, Google checks, and matching breadcrumb HTML.

  • Free
  • No sign-up
  • Runs in your browser
  • Updated
Jump to the JSON-LD output ↓

Breadcrumb trail

Start with the homepage or top category and end with the current page. Google needs at least two levels.

For pages people reach through more than one path, such as a product listed in two categories.

Options

Optional

Optional for Google: without it, Google uses the URL of the page the code is on.

Lets a WebPage in your schema point to this trail with its breadcrumb property.

Your code

JSON-LD for the page's <head> or body.


      

How useful was this tool?

Your rating helps other users find the right tool.

How to use the Breadcrumb Schema Generator

  1. Start the trail

    Click Build from a URL and paste the page's address, or Auto-fill from page HTML to reuse existing breadcrumbs. You can also type each level.

  2. Fix names and links

    Replace each name with the title people see on that page, and make sure every level links to a real page.

  3. Reorder or add levels

    Use the arrow buttons to move levels, and + Add a level to insert one before the current page.

  4. Add another trail if needed

    If the page belongs to two categories, click + Add another trail and fill in the second path.

  5. Copy and test the code

    Copy the script tag into the page, and the Breadcrumb HTML if you need visible breadcrumbs. Then click Check in the JSON-LD Validator.

Example: breadcrumb schema with two trails

A product page that shoppers reach through two paths: Women › Shoes and Running. Each trail is a separate BreadcrumbList with its own @id, combined in one @graph. This is the JSON-LD the breadcrumb schema generator creates.

Trails entered
Trail 1:  Home          https://www.example.com/
          Women         https://www.example.com/women/
          Shoes         https://www.example.com/women/shoes/
          Trail Runner 2  (current page)

Trail 2:  Home          https://www.example.com/
          Running       https://www.example.com/running/
          Trail Runner 2  (current page)

Current page URL: https://www.example.com/products/trail-runner-2/
Options:  include the current page's URL, add an @id
Generated BreadcrumbList JSON-LD
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.example.com/products/trail-runner-2/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://www.example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Women",
          "item": "https://www.example.com/women/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Shoes",
          "item": "https://www.example.com/women/shoes/"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Trail Runner 2",
          "item": "https://www.example.com/products/trail-runner-2/"
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.example.com/products/trail-runner-2/#breadcrumb-2",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://www.example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Running",
          "item": "https://www.example.com/running/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Trail Runner 2",
          "item": "https://www.example.com/products/trail-runner-2/"
        }
      ]
    }
  ]
}

Positions start at 1 in each trail. The second trail's @id ends in #breadcrumb-2 so both can be referenced. With only one trail, the code is a single BreadcrumbList without @graph.

This breadcrumb schema generator creates BreadcrumbList JSON-LD that follows Google’s breadcrumb documentation. Paste a page URL to turn its folders into a trail, or paste the page’s HTML to reuse breadcrumbs you already have. Then rename, reorder, and check each level, add a second trail if the page sits in two categories, and copy the matching breadcrumb HTML for your page.

What is breadcrumb schema?

A breadcrumb trail shows where a page sits on a website, such as Home › Blog › Technical SEO › Core Web Vitals guide. Breadcrumb schema is the structured data version of that trail: a BreadcrumbList made of ListItem entries, each with a position, a name, and a URL.

Google uses breadcrumb structured data to understand how your pages are organized, and it can show the trail in desktop search results in place of a plain URL. That makes the result easier to read and shows searchers the section the page belongs to. Breadcrumb markup isn’t a ranking factor, but it is one of the simplest and most widely supported types of structured data.

Breadcrumb schema generator building a four-level trail from a URL, with a live preview and BreadcrumbList JSON-LD
A trail built from a blog post’s URL, with the live preview above and the BreadcrumbList code on the right.

What Google requires for BreadcrumbList schema

Breadcrumb structured data has a short list of required properties, and the generator fills in all of them:

PropertyWhat it isNotes
itemListElementThe levels of the trail, in orderGoogle needs at least two ListItems.
positionThe level’s number, starting at 1Added and renumbered automatically when you reorder levels.
nameThe label people seeUse the page’s short title, such as “Blog”.
itemThe URL of that level’s pageRequired for every level except the last. Without it, Google uses the URL of the page the code is on.

Google also says the trail doesn’t have to include the homepage or the current page. Most sites include both, because it matches the visible breadcrumbs on the page.

Follow the user’s path, not the URL

Google asks for breadcrumbs that represent a typical path a person takes to the page, instead of a copy of the URL structure. Build from a URL is a fast starting point, and the breadcrumb schema generator already skips folders that usually aren’t real pages, such as /category/, /tag/, and date folders like /2026/10/. After building, check two things:

  • Every level is a real page. A folder in the URL doesn’t always have its own page, and a breadcrumb that links to a 404 or a redirect doesn’t help anyone.
  • Every name matches the page. Names created from URLs, such as “Core Web Vitals Guide”, are a guess. Replace them with the titles people see on your site.

Multiple breadcrumb trails

Some pages can be reached through more than one path. A pair of running shoes might sit under both Women › Shoes and Running. Google supports this: add a BreadcrumbList for each path. Click + Add another trail, and the breadcrumb schema generator starts the new trail with the same homepage and current page, so you only add the levels in between. With two or more trails, the breadcrumb schema is output as one @graph, each trail with its own @id.

Keep extra trails to real alternative paths. Two identical trails, or trails that end with different page names, are flagged in the checks.

Visible breadcrumbs and accessible HTML

Structured data should describe what is on the page, so the best breadcrumb markup matches a visible breadcrumb trail. The Breadcrumb HTML tab gives you that trail as accessible navigation: a nav element labeled “Breadcrumb”, an ordered list of links, and aria-current="page" on the current page, with a few lines of CSS for the separators. Screen readers announce it as breadcrumb navigation and skip the separator characters.

SEO plugins such as Rank Math and Yoast can add BreadcrumbList to every page automatically, and many themes do too. Before adding breadcrumb schema by hand, view the page source or use Auto-fill from page HTML: the tool reads existing BreadcrumbList JSON-LD, microdata, and RDFa, and visible breadcrumbs from Rank Math, Yoast, and WooCommerce. If the page already has correct breadcrumb markup, don’t add a second version.

This breadcrumb schema generator is most useful for custom-built sites, static sites, landing page builders, and pages where the automatic trail is wrong. The optional @id (the page URL plus #breadcrumb) lets a WebPage in your schema point to the trail with its breadcrumb property, and the Schema Graph Combiner can join them into one graph.

Common breadcrumb markup mistakes

These are the problems the checks catch most often:

  • A trail with one level. Google needs at least two ListItems.
  • Relative URLs such as /blog/. Each item needs a full URL with https:// and your domain.
  • The whole trail in one name, like “Blog > SEO”, instead of one level per row.
  • Tracking parameters and #fragments in URLs, instead of each page’s canonical URL.
  • Links to another website, or a mix of http:// and https:// URLs.
  • Mixed trailing slashes, which can send every breadcrumb click through a redirect.

Adding and testing the markup

Paste the script tag into the page’s HTML, then click Check in the JSON-LD Validator to test the breadcrumb schema in the JSON-LD Validator. Confirm the live page with Google’s Rich Results Test, and watch the Breadcrumbs report in Search Console after Google recrawls your pages. If you add breadcrumbs to an article page, the Article Schema Generator can create the Article markup for the same page.

Breadcrumb Schema Generator FAQ

What does Google require for breadcrumb schema?

A BreadcrumbList with at least two ListItems. Each ListItem needs a position and a name, and every item except the last needs the URL of its page.

Should the last breadcrumb have a URL?

It's optional. If you leave it out, Google uses the URL of the page the code is on. Including it is fine and lets the trail have its own @id.

Do breadcrumbs have to match my URL structure?

No. Google recommends breadcrumbs that show a typical path people take to the page. Building from a URL is a starting point; adjust the levels to match how your site is organized.

Can a page have more than one breadcrumb trail?

Yes. Google supports several BreadcrumbList trails on one page, for example a product listed in two categories. Add each path as its own trail.

Does Rank Math or Yoast already add breadcrumb schema?

Both can add BreadcrumbList automatically. Check your page source first; if correct breadcrumb markup is already there, don't add a second version.

Do breadcrumbs still show in Google search results?

Google shows breadcrumbs in desktop search results. Breadcrumb markup also helps Google understand how your pages are organized.

Built and reviewed by Devansh Thakkar

WordPress developer and technical SEO specialist with 250+ client projects delivered since 2019. This tool and guide were last updated on .

More about Devansh Thakkar
  • JSON-LD Validator

    Validate JSON-LD against schema.org and Google's rich result rules, find exact syntax errors, and auto-fix common mistakes.

  • Schema @graph Combiner

    Merge separate JSON-LD blocks into one connected @graph: duplicates removed, stable @id values added, and conflicts flagged for review.

  • Article Schema Generator

    Create Article, BlogPosting, and NewsArticle JSON-LD with image checks, author best practices, and correct dates. Auto-fill it from your page.

  • Organization Schema Generator

    Create Organization and WebSite JSON-LD for your homepage, with logo checks, profile links, contact points, and validated business identifiers.

  • Person Schema Generator

    Create Person and ProfilePage JSON-LD for author, About, and team pages, with photo checks, clean sameAs links, and credentials. Auto-fill it from your page.

  • Local Business Schema Generator

    Build valid LocalBusiness JSON-LD for any of 131 business types, with opening hours, geo coordinates, and instant checks against Google's rules.