BreadcrumbList schema markup: example, required fields and WordPress setup

BreadcrumbList schema describes where a page sits in your site's hierarchy, as an ordered list of links from the top level down to the current page. It is small, nearly free to add, and describes structure rather than content, so it runs alongside any other type on the page.

Google requires itemListElement, and each ListItem needs position, name and item (the URL). The last item, the current page, may leave out item. The trail should reflect a real path a visitor could take, not a list of keywords.

JSON-LD example

Copy this into a <script type="application/ld+json"> tag and replace the values with your own.

json
{
  "@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": "Coffee Brewing",
      "item": "https://example.com/guides/coffee-brewing/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Iced Pour-Over"
    }
  ]
}

Properties

PropertyStatusWhat it is
itemListElementRequiredAn ordered array of ListItem entries, at least two.
ListItem.positionRequiredThe item's place in the trail, starting at 1.
ListItem.nameRequiredThe label shown for that level, such as the category name.
ListItem.itemRequiredThe URL of that level. Optional for the last item, which is the current page.

When to use it

Almost everywhere below the homepage: posts, pages, categories, product pages. A breadcrumb trail is most useful on sites with real depth, where the path tells a searcher what kind of page they are about to open.

A page can have more than one trail if it genuinely lives in two places, such as a product in two categories. Add one BreadcrumbList per trail. For most sites, one trail through the primary category is clearer.

The trail in the markup should match the visible breadcrumbs, if you show them. Visitors and machines should see the same hierarchy.

Add it in WordPress

By hand. Build the trail in wp_head from the post's category or page parents. The fiddly parts are archives, search pages and custom post types.

With Hydrogen SEO. BreadcrumbList schema is printed from your schema settings whether or not you show visible breadcrumbs. It uses the same trail as the visible breadcrumbs, so what search engines read matches what visitors see. To show the trail on the page, turn on Enable breadcrumbs under Hydrogen SEO > Breadcrumbs and place the [hydrogen_seo_breadcrumbs] shortcode or the hydrogen_seo_breadcrumbs() PHP function in your theme. Each post's Breadcrumb Title shortens its label in the trail, and its primary category decides which category the trail goes through. Hiding the home link or current page in the visible trail does not remove them from the schema.

One-off markup. The free schema generator in the Hydrogen SEO app at /seo/schema-generator builds BreadcrumbList JSON-LD from a list of names and URLs.

Common mistakes

  • Positions out of order or starting at 0. Start at 1 and count up.
  • Relative URLs. Use full absolute URLs in item.
  • Keyword-stuffed labels. "Best Cheap Coffee Guides 2026" is not a category name.
  • A trail that does not exist on the site. Every intermediate URL should be a real, indexable page.
  • Two trails from two sources. A theme's breadcrumbs plus a plugin's can print conflicting lists. Use one. See invalid structured data.
  • Linking the trail through "Uncategorized". Set a primary category.

Test it

While drafting, the JSON-LD validator flags the BreadcrumbList properties Google requires. Once the page is live, Google's Rich Results Test has the final say. Search Console's Breadcrumbs report shows items with errors across the site, which is the fastest way to catch a template problem affecting every post.

Common questions

Do I need visible breadcrumbs to use BreadcrumbList schema?

Google does not strictly require a visible trail, but the markup should describe a real hierarchy on your site. Showing the same trail to visitors is good practice.

Does the last breadcrumb need a URL?

No. The final item, which represents the current page, can omit item.

Do breadcrumbs help rankings?

Not directly. They help Google understand site structure and can replace a raw URL with a readable path in desktop results.

Why don't I see breadcrumbs on mobile results?

Google stopped showing breadcrumb trails in mobile results in early 2025 and shows only the domain there. Desktop results can still show them.