Free Breadcrumb Schema Generator

Fill in the facts visible on your page, copy the Breadcrumb JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Schema workflow

Use only facts a visitor can verify on the page, then validate the JSON-LD before publishing.

Position: 1, Name: Name, Item: URL

Google needs a URL for every level except the last.

Position: 2, Name: Name, Item: URL

Required

  • Visible Breadcrumb content
  • Canonical page URL
  • Clear page owner/publisher
  • Fields that match the visible page

Recommended

  • A representative image when the schema supports it
  • SameAs or related links when visible
  • Validation before publishing

Avoid

  • Adding properties that are not visible
  • Copying example URLs into production
  • Skipping Google and Schema.org validation
Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

Breadcrumb Schema — BreadcrumbList JSON-LD for Google

Breadcrumb markup tells Google where a page sits in your site, so desktop results can show a trail like Guides › Structured Data instead of the bare URL.

Generate Breadcrumb JSON-LD

Why breadcrumb markup goes wrong

  • The markup has only one ListItem. Google needs at least two.
  • Positions start at 0 or skip numbers after a level is removed.
  • A blank URL is left in the markup as an empty string instead of being left out.
  • The trail in the markup does not match the breadcrumb visitors see.

How SwiftSchema helps

The generator below starts with two levels, numbers positions from 1 in the order you list them, and lets the last level (usually the current page) go without a URL. It warns you if any other level is missing one.

The examples on this page follow Google’s breadcrumb documentation, including the multiple-trail format.

What is breadcrumb schema?

Google describes a breadcrumb trail as something that "indicates the page's position in the site hierarchy". With BreadcrumbList markup, Google can categorize the page in search results by that trail.

The markup is a BreadcrumbList whose itemListElement is an ordered list of ListItems, one per level of the trail.

Where Google shows breadcrumbs

Google shows breadcrumbs in desktop search results only. On January 22, 2025, Google added this to its documentation, explaining that breadcrumbs get truncated on smaller screens and weren't useful to people searching on mobile. The markup is the same; it just has no visible effect in mobile results.

Required properties

Google's breadcrumb documentation lists these properties:

PropertyOnRequired?Notes
itemListElementBreadcrumbListYesThe ListItems, in order. At least two.
positionListItemYesAn integer. Position 1 is the start of the trail.
nameListItemYesThe label shown to the user.
itemListItemYes, except on the last itemThe URL of that level. If the last item has no item, Google uses the URL of the page.

Rules from Google's guidelines

  • Follow a user path, not the URL. Google recommends breadcrumbs that "represent a typical user path to a page, instead of mirroring the URL structure."
  • Home and the current page are optional. Google says a ListItem isn't required for the top level (your domain) or for the page itself.
  • Multiple trails are allowed. If people reach the page in different ways, add one BreadcrumbList per trail in a JSON-LD array. The second example above shows this.
  • Use schema.org. data-vocabulary.org breadcrumb markup hasn't been eligible since January 29, 2021.
  • Match what visitors see. Google's general structured data guidelines say markup should describe content that's visible on the page. Use the same labels and order as your visible breadcrumb.

How to build one here

  1. 01

    Enter each level of the trail in order, starting from the top.

  2. 02

    Give each level the label your page shows and its full URL.

  3. 03

    Leave the URL blank for the last level if it is the current page.

  4. 04

    Add or remove levels; positions renumber automatically.

  5. 05

    Copy the JSON-LD into the page and test it in Google’s Rich Results Test.

Ready to build the markup?

At least two levels. Match your visible trail.

Generate Breadcrumb JSON-LD

Common mistakes

  • Only one ListItem. Google needs at least two.
  • Positions that start at 0 or skip numbers. Number them 1, 2, 3 in trail order.
  • Relative URLs. Use full URLs, such as https://example.com/guides, not /guides.
  • Empty item values. Leave the property out instead of "item": "". Only the last item may do this.
  • Tracking parameters. Use clean, canonical URLs without UTM parameters.
  • Conflicting plugins. If a theme or plugin already outputs a BreadcrumbList, don't add a second one for the same trail.

Validate and monitor

  • Test a page with the Rich Results Test; breadcrumbs are a Google-supported feature, so it reports errors and warnings.
  • After launch, the Breadcrumbs report in Search Console shows valid and invalid items across your site.
  • Use the URL Inspection tool to see how Google sees a single page.

Required properties

  • itemListElement[].@type=ListItem
  • itemListElement[].position
  • itemListElement[].name
  • itemListElement[].item (optional on the last item)
Single trail (the last item uses the page's own URL)
Validate
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Guides",
      "item": "https://example.com/guides"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Structured Data",
      "item": "https://example.com/guides/structured-data"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Breadcrumb Markup"
    }
  ]
}
Two trails to the same page
Validate
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Books",
        "item": "https://example.com/books"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Science Fiction",
        "item": "https://example.com/books/science-fiction"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Award Winners"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Literature",
        "item": "https://example.com/literature"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Award Winners"
      }
    ]
  }
]
Localized trail with a home link
Validate
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Inicio",
      "item": "https://example.com/es"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Guías",
      "item": "https://example.com/es/guias"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Datos estructurados",
      "item": "https://example.com/es/guias/datos-estructurados"
    }
  ]
}

FAQs

What does Google require for breadcrumb markup?Show

A BreadcrumbList with at least two ListItems. Each ListItem needs position (starting at 1), name, and item (the URL of that level). The last ListItem can leave out item; Google then uses the URL of the page.

Why don't my breadcrumbs show on mobile?Show

Since January 2025, Google shows breadcrumbs only in desktop search results. Google said breadcrumbs get truncated on small screens, so they weren't useful on mobile. Your markup still works on desktop.

Do I have to include the home page and the current page?Show

No. Google says a ListItem isn't required for the top level (your domain) or for the page itself. Include them if your visible breadcrumb shows them.

Should breadcrumbs follow my URL structure?Show

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

Can a page have more than one breadcrumb trail?Show

Yes. If there are several ways to reach the page, Google accepts several BreadcrumbList objects in one JSON-LD array, one per trail.

Does data-vocabulary.org breadcrumb markup still work?Show

No. Since January 29, 2021, data-vocabulary.org markup isn't eligible for Google rich results. Use schema.org BreadcrumbList.

Related types

Browse all schema types

References