Breadcrumb Schema Guide: Get Breadcrumb Paths in Google Search Results

Last Updated: February 25, 2026 · 9 min read

Breadcrumbs in Google Search replace the URL in your search snippet with a clean, human-readable path like Home › Guides › Breadcrumb Schema Guide. This tiny change makes your listing more clickable — users instantly understand where the content lives in your site structure.

BreadcrumbList schema is one of the easiest structured data wins you can implement. It takes about 10 minutes per page template, and the results show up in search within days.

💡 What Breadcrumb Rich Results Look Like

Instead of:

https://example.com/guides/how-to-fix-schema-errors/

Google shows:

example.com › guides › how-to-fix-schema-errors

1. BreadcrumbList Schema Structure

Every breadcrumb schema follows the same pattern: a BreadcrumbList containing an array of ListItem objects, each with a position, name, and URL:

<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": "Electronics",
      "item": "https://example.com/electronics/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Smartphones",
      "item": "https://example.com/electronics/smartphones/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "iPhone 17 Review",
      "item": "https://example.com/electronics/smartphones/iphone-17-review/"
    }
  ]
}
</script>

2. Rules for Valid BreadcrumbList Schema

  • Positions must start at 1 (not 0) and must be sequential whole numbers
  • The last item (current page) may omit the item URL — Google shows it as text, not a link
  • Name should match your visual breadcrumb text on the page
  • Breadcrumb schema must match the actual visible breadcrumb navigation on the page — don't invent paths that don't exist
  • Add it to every page that has a category/subcategory structure — not just the homepage

3. E-commerce Breadcrumb Examples

E-commerce sites get huge value from breadcrumb schema. Google shows the category path, which helps users understand where the product sits and encourages exploration.

Product page on a clothing store:

Home › Clothing › Women's › Dresses › Summer Floral Midi Dress

Support article:

Home › Help Center › Account › How to reset your password

Blog post:

Home › Blog › SEO › Schema Markup › Article vs BlogPosting Schema

4. Implementing in Next.js

In Next.js, create a reusable breadcrumb component that accepts an items array and renders both visual breadcrumbs and JSON-LD:

// components/Breadcrumb.tsx
interface BreadcrumbItem {
  name: string;
  href: string;
}

export default function Breadcrumb({ items }: { items: BreadcrumbItem[] }) {
  const schema = {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": items.map((item, index) => ({
      "@type": "ListItem",
      "position": index + 1,
      "name": item.name,
      "item": `https://example.com${item.href}`
    }))
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      <nav aria-label="Breadcrumb">
        <ol className="flex items-center gap-2 text-sm text-gray-600">
          {items.map((item, index) => (
            <li key={item.href} className="flex items-center gap-2">
              {index > 0 && <span aria-hidden>›</span>}
              {index === items.length - 1 ? (
                <span className="text-gray-900 font-medium">{item.name}</span>
              ) : (
                <a href={item.href} className="hover:text-blue-600">{item.name}</a>
              )}
            </li>
          ))}
        </ol>
      </nav>
    </>
  );
}

5. WordPress: Yoast, RankMath, and Themes

Most major WordPress setups already add breadcrumb schema from one source. The key issue is duplication:

  • Yoast SEO: Automatically adds BreadcrumbList schema — no extra code needed. Ensure breadcrumb display is enabled in Yoast settings.
  • RankMath: Adds breadcrumb schema automatically. Ensure only one plugin handles it.
  • Genesis / Divi / Avada themes: May add their own breadcrumb schema that conflicts with plugin schema. Check with SchemaValidator.org for duplicates.

⚠️ Check for Duplicates

Having multiple BreadcrumbList schemas on the same page (from different plugins or a plugin + theme) usually isn't harmful, but it's cleaner to have just one. Use SchemaValidator.org to check for duplicate breadcrumb schemas on your pages.

6. Common Breadcrumb Schema Mistakes

Homepage breadcrumb with incorrect URL

Home URL must be your exact canonical homepage URL including trailing slash if you use one: https://example.com/ not https://example.com

Breadcrumb path doesn't match site structure

If your URL is /electronics/smartphones/iphone-17, your breadcrumbs should reflect that hierarchy — not a different one you invented for schema

Skipping positions (1, 3, 4 instead of 1, 2, 3, 4)

Positions must be sequential integers starting from 1. Gaps cause parsing errors.

Breadcrumb schema on homepage with just one item

A one-item breadcrumb ('Home') is valid but provides no SEO value. Add it only from the second level onwards.

7. Frequently Asked Questions

Does BreadcrumbList schema directly improve rankings?

Not directly — breadcrumb schema is not a confirmed ranking signal. Its primary value is replacing the URL in the search snippet with a clean, human-readable category path, which improves CTR. Higher CTR can indirectly benefit rankings through engagement signals.

Should the last breadcrumb item include an item URL?

The last item (the current page) may omit the item URL — Google shows it as plain text, not a clickable link. This is valid per Google's documentation. However, some SEOs include it anyway for completeness; both approaches work.

Can I have BreadcrumbList on the homepage?

A one-item breadcrumb only showing "Home" is technically valid but provides no SEO value. Add breadcrumb schema starting from the second level of your URL hierarchy (category pages, blog posts, product pages).

How do I handle multiple breadcrumb paths for the same page?

If a product appears in multiple category hierarchies (e.g., a laptop could be under Electronics → Computers or Brands → Dell), pick the most authoritative canonical path and use that one consistently in schema. Google will display whichever path its algorithm determines is most relevant to the query.

Do I need breadcrumb schema if my CMS already shows visual breadcrumbs?

Yes — visible breadcrumbs and breadcrumb schema serve different purposes. The visual breadcrumb is for human navigation; the schema is the machine-readable version that tells Google what to show in search results. Without the schema, Google may not show the breadcrumb path in your search snippets.

Yoast already adds breadcrumb schema — should I add another?

No. If Yoast is outputting valid BreadcrumbList schema (verify via SchemaValidator.org), do not add a second one. Duplicate BreadcrumbList schemas are usually harmless but add unnecessary complexity.

Can I use JavaScript-rendered breadcrumb schema?

Google can process JavaScript-rendered schema, but there is an inherent delay as Googlebot must first render the page. For maximum reliability, add the JSON-LD as a static script block in the HTML <head> so it is available immediately without rendering.

My breadcrumb shows in the Rich Results Test but not in actual Google Search — why?

The Rich Results Test shows eligibility, not guaranteed display. Google decides whether to show the breadcrumb path based on query relevance, page authority, and whether the structured format serves the searcher. New or low-authority pages may not see breadcrumb display for weeks to months after implementation.

Validate Your Breadcrumb Schema

Check your BreadcrumbList structured data for errors and duplicates — paste any page URL below.

Validate Breadcrumb Schema →