BreadcrumbList Schema: breadcrumb markup

How to add BreadcrumbList structured data to your site: required fields, JSON-LD examples, impact on snippets and navigation, common mistakes.

In brief

BreadcrumbList Schema is a structured data type from schema.org for marking up navigation breadcrumb trails. It allows Google to display a clean chain of section names instead of a long URL in the snippet, improving click-through rate.

What is BreadcrumbList Schema

BreadcrumbList Schema is a structured data vocabulary that helps search engines understand the page hierarchy on your site. Breadcrumbs are a navigation trail showing the path from the homepage to the current page. Example: Home › Blog › SEO › Optimization.

When you add BreadcrumbList markup, Google may display a readable trail instead of the URL in the snippet. This improves CTR because users immediately see the site structure and understand how deep they are.

BreadcrumbList is not a direct ranking factor, but improved snippets increase click-through rates and good navigation reduces bounce rates — these are indirect SEO benefits.

Required fields

For valid BreadcrumbList markup, you must include the following fields:

  • @context — always https://schema.org
  • @type — BreadcrumbList
  • itemListElement — an array of ListItem objects, each representing a step in the trail.
  • position — the order number of the element (starting at 1).
  • name — the text label of the element (e.g., 'Home', 'Electronics').
  • item — the URL of the element (for the last element, item may be omitted).

The first element always links to the homepage. The last element is the current page — for it, the item field is not needed since it points to the current URL.

Example JSON-LD markup

Below is a complete example of breadcrumb markup for a blog article page.

JSON
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://example.com/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "SEO",
      "item": "https://example.com/blog/seo"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "How to optimize breadcrumbs"
    }
  ]
}

Insert this code inside a <script type="application/ld+json"> tag in the <head> or just before closing </body>. Google recommends JSON-LD as the preferred format.

Mistakes and nuances

When implementing BreadcrumbList, common mistakes include:

  • Omitting the item field for the first element — always provide the homepage URL.
  • Providing item for the last element — this creates a self-referential link, which is unnecessary.
  • Incorrect position order — positions must be sequential (1,2,3…).
  • Using relative URLs — all items should be absolute (with https://).
  • Adding breadcrumbs to the homepage — they are not needed there and may confuse Google.
Important: if breadcrumbs are visually present on your site, you must also include structured data. Without markup, Google may ignore the navigation or misinterpret it.

After adding the markup, test it using the Rich Results Test (https://search.google.com/test/rich-results). Make sure you see a preview with breadcrumbs.

Common questions

Yes, to all pages that have breadcrumbs (except the homepage). Google expects markup on every unique path.
Yes, but JSON-LD is simpler and more reliable. Google supports both formats, but JSON-LD is preferred for BreadcrumbList.
Choose one primary path to display in breadcrumbs. Use that path in your markup. Other paths can remain for user navigation, but only include the canonical path in schema.
Indirectly — by improving snippets and navigation. On mobile, breadcrumbs are often displayed more compactly, saving space and attracting attention.
Update it immediately when URLs or section names change. Outdated markup will cause Google to show incorrect breadcrumbs.
Direct contacts

Discuss your project?

Share your goals and website context — I will suggest a practical next step.

BreadcrumbList Schema: breadcrumb markup — What is it?