NitroSERP

July 24, 2026·6 min read·By NitroSERP Editorial Team

Updated

Breadcrumb Schema: JSON-LD Example & Fixes (2026)

Add BreadcrumbList JSON-LD with a copyable example, required fields, and fixes for missing names, URLs, and positions. Includes Google's mobile display change.

What is breadcrumb schema?

Breadcrumb schema describes a page's place in a navigation hierarchy using a BreadcrumbList. It is separate from the clickable navigation visitors see. A publishing tool might sit under Home → SEO tools → Meta tag generator.

You may also see it called breadcrumbs structured data or BreadcrumbList schema. The practical task is the same: describe a useful navigation trail, give each ancestor its correct URL, and check the published result.

Google supports breadcrumb search appearance on desktop. Its January 2025 mobile change removed the breadcrumb trail from mobile results, not the navigation on your website. Source: Google's mobile breadcrumb announcement.

To build your own markup, open our schema markup generator, choose BreadcrumbList, and enter your real site URL and paths. Return to the checklist below before publishing.

Already have a Search Console error? Use the focused missing field item troubleshooting guide to locate the broken ancestor and fix the template that generated it. This page covers the broader implementation.

Copyable BreadcrumbList JSON-LD example

This example is for a hypothetical page at https://example.com/tools/meta-tag-generator. Replace the domain, labels, and paths.

<script type="application/ld+json">
{
  "@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/category/seo-analysis"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Meta tag generator"
    }
  ]
}
</script>

The current page is the final item, so its URL is omitted intentionally. Do not paste the same final label onto every page: a JSON formatter needs its own label and relevant ancestors.

Which fields are required?

For the simple URL-string implementation above:

PropertyWhat to supply
itemListElementAt least two ordered ListItem objects.
positionOrder in the trail, beginning with 1.
nameA readable label. In the alternative Thing-object form, a nested name can supply it.
itemThe ancestor page URL; optional on the final breadcrumb.

The name is not merely recommended for this example. Google also advises describing a typical user path rather than copying the URL folders literally. Source: Google's BreadcrumbList requirements.

Where do you put breadcrumb JSON-LD?

Place the script in the HTML of the page it describes. Google supports JSON-LD in the head or body. In a CMS, first check whether your theme or SEO plugin already generates BreadcrumbList; edit that source instead of pasting another copy. Source: Google's structured data introduction.

For a shared template, build the trail from each page's real navigation data. The final label must change with the page. Keep parent URLs consistent with your preferred HTTPS hostname.

Add visible navigation too

Before writing code, sketch the trail using actual page names. For NitroSERP's Meta Tag Generator, Home → SEO Analysis → Meta Tag Generator is a useful route because the middle page lists related tools. A URL folder alone is not a reason to invent a category page.

JSON-LD does not create clickable links. Here is matching HTML you can adapt:

<nav aria-label="Breadcrumb">
  <ol>
    <li><a href="/">Home</a></li>
    <li><a href="/category/seo-analysis">SEO tools</a></li>
    <li aria-current="page">Meta tag generator</li>
  </ol>
</nav>

Style it for your layout while preserving the links and accessible label. Test with a keyboard and on a narrow screen. The current page should be understandable without relying on color alone.

A blog might use Home → Blog → Article title. Documentation might use Docs → Integration → Setup. Add categories because they help navigation, not to reach an arbitrary number of levels.

Common breadcrumb errors and fixes

Missing field “name”

Check every ListItem. A CMS category with no title can create an empty string. Populate labels from the actual navigation items.

Missing or empty “item”

Omitting the final item's URL can be intentional. An empty URL on a parent item is different: fix the category link instead of putting the current page URL everywhere.

Wrong domain in URLs

Copied examples often use example.com. Search your finished output for that domain. In NitroSERP's generator, set your site origin explicitly; root-relative paths resolve against it.

Blank rows or duplicate positions

Generate positions from the cleaned list after removing blank input rows. Check that the order leads from a broader section to the current page.

Conflicting schema blocks

A theme and an SEO plugin may both generate markup. Inspect both before removing one. Multiple legitimate navigation trails can be useful; duplicate blocks with outdated labels are a maintenance problem.

Old URLs after a migration

Check HTTPS, your preferred hostname, and changed category paths. Use working destination URLs instead of old redirecting paths.

Validate before and after deployment

  1. Follow the ancestor links as a visitor. Do they lead to useful pages?
  2. Use the JSON formatter to check manually edited JSON, without script tags.
  3. Test the page or code in Google's Rich Results Test.
  4. Inspect the deployed HTML. Development output is not proof your production template shipped correctly.
  5. Check Search Console's Breadcrumbs report after Google processes the page. Record the deployment date to distinguish older reports from newer changes.

A successful test is an implementation check, not a traffic forecast or guarantee of search appearance.

Rich Results Test says valid, but Google shows no breadcrumb

Validation and search appearance are separate checks. Use this order:

  1. Confirm you are checking a desktop result; Google's mobile display no longer includes the trail.
  2. Test the published URL, not only a pasted code sample.
  3. Inspect that URL in Search Console to check indexing and the Google-selected canonical.
  4. Check whether Google last crawled the page before your fix. A successful live test does not mean the indexed version has changed.

Valid markup does not guarantee that Google will display a breadcrumb. Keep useful navigation even when the search result looks different. Source: Google's breadcrumb troubleshooting guidance.

Frequently asked questions

Why did breadcrumbs disappear on mobile Google results?

Google changed the mobile URL display in January 2025. Keep your site's own navigation if it helps visitors.

Do I have to include Home?

Not necessarily. Choose a useful navigation trail. The example includes Home, but your documentation or category structure may work without it.

Can JSON-LD replace internal links?

No. The script describes the trail; the HTML links let visitors move through it. Add both deliberately.

Is this affected by the FAQ rich-result retirement?

No: FAQPage describes questions and answers; BreadcrumbList describes navigation. Read our FAQ schema maintenance checklist for that separate change.

Final pre-publish checklist

  • Replace example domains and labels.
  • Check all ancestor URLs.
  • Order positions consistently.
  • Provide useful visible navigation.
  • Test the deployed markup.

Then improve the page's actual answer and usability. Breadcrumbs are not a substitute for useful content.