Royking Niba

Breadcrumb Schema: Google’s Four Required Properties, and Where Breadcrumb Links Actually Send Authority

· Royking Niba

A footpath leading through a forest between tall trees and green undergrowth. Stock photograph used as an illustration of a breadcrumb trail.

Breadcrumb schema is structured data that tells Google where a page sits in your site’s hierarchy. It is a BreadcrumbList containing an ordered array of ListItem entries, and Google’s documentation requires only four properties to accept it: itemListElement on the list, and item, name and position on each entry. That part takes ten minutes. The part most guides skip is what the visible breadcrumb trail does to your internal linking, so below are Google’s rules verbatim, a table mapping common errors to the rule each one breaks, and a 2,000-page model of where breadcrumb links actually send authority.

What Google’s documentation says, verbatim

Quoted from Google Search Central’s breadcrumb structured data page, last updated 8 September 2026, checked today.

A breadcrumb trail on a page indicates the page’s position in the site hierarchy, and it may help users understand and explore a site effectively.

What a breadcrumb trail is for

If the breadcrumb is the last item in the breadcrumb trail, item is not required. If item isn’t included for the last item, Google uses the URL of the containing page.

On the last item

If there are multiple ways to navigate to a page on your site, you can specify multiple breadcrumb trails for a single page.

On multiple trails

And from the general structured data guidelines, last updated 10 July 2026, which govern breadcrumbs like every other type:

Don’t mark up content that is not visible to readers of the page.

Structured data general guidelines

Google does not guarantee that your structured data will show up in search results, even if your page is marked up correctly according to the Rich Results Test.

Structured data general guidelines

The first general rule is the one that matters most for breadcrumbs and it is the one I see broken most often. Breadcrumb markup is supposed to describe a trail the visitor can see. A template that emits a BreadcrumbList on pages with no visible breadcrumb, or a different trail in the markup than on the page, is marking up content that is not there.

The four required properties

TypePropertyGoogle’s descriptionWhat it means in practice
BreadcrumbListitemListElement“An array of breadcrumbs listed in a specific order.”Order is the data. Shuffle it and the trail is wrong even if every entry is valid.
ListItemitem“The URL to the webpage that represents the breadcrumb.”Required on every entry except the last, which may omit it.
ListItemname“The title of the breadcrumb displayed for the user.”Should match the label the visitor sees, not a keyword variant of it.
ListItemposition“The position of the breadcrumb in the breadcrumb trail. Position 1 signifies the beginning of the trail.”Starts at 1, not 0, and counts up without gaps.

A valid example, and what it weighs

A four-level product trail for an imaginary shop, following Google’s own example structure. The last item has no item URL, which the documentation allows.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example-shop.com/"},
    {"@type": "ListItem", "position": 2, "name": "Running", "item": "https://www.example-shop.com/running/"},
    {"@type": "ListItem", "position": 3, "name": "Trail running shoes", "item": "https://www.example-shop.com/running/trail-shoes/"},
    {"@type": "ListItem", "position": 4, "name": "Ridgeline 4 trail shoe"}
  ]
}

I measured it. Minified, that object is 451 bytes, and 495 bytes once wrapped in its script tag. Pretty-printed it is 627 bytes. On a 2,000-page site the whole breadcrumb layer is under a megabyte of HTML in total, so weight is never the argument against it. The arguments against bad breadcrumb markup are all about accuracy.

Eight common errors, mapped to the rule each one breaks

This is the table I use when auditing a template. Every row traces back to one of the quoted rules above, so the fix is never a matter of opinion.

ErrorRule it breaksFix
Positions start at 0“Position 1 signifies the beginning of the trail”Start the counter at 1 in the template loop.
Positions skip a number after a level is hiddenitemListElement is “listed in a specific order”Renumber after filtering, not before.
A middle entry has no item URLitem is optional only for the last itemEvery ancestor needs its URL. Usually a category with no archive page.
name is empty or a placeholdername is “the title of the breadcrumb displayed for the user”Use the visible label from the same data source as the HTML trail.
Markup on pages with no visible trail“Don’t mark up content that is not visible”Emit the JSON-LD only where the template renders the HTML trail.
Markup trail differs from visible trailStructured data must be “a true representation of the page content”Generate both from one function so they cannot drift.
Ancestor URLs that redirect or are noindexeditem is “the URL to the webpage that represents the breadcrumb”Point at the final, indexable URL of each ancestor.
Two plugins each emitting a BreadcrumbListNot an error in itself, since multiple trails are allowedOnly valid when both are real trails a visitor can follow. Two copies of the same trail is duplication, so switch one off.

The last row is the one that surprises people. Google explicitly allows several trails per page, so a validator will not flag two BreadcrumbList objects. The question is whether each one is a genuine route to the page. On WordPress the usual cause is an SEO plugin and a theme both outputting the same trail, and that is worth cleaning up even though nothing reports it.

The part nobody models: where breadcrumb links send authority

Breadcrumb schema is the markup. The visible trail it describes is a set of real HTML links, and on most sites it is the most consistent internal linking pattern in the whole template. So I modelled a typical catalogue to see where those links go.

The model: 2,000 pages in four levels. One homepage, 10 categories, 100 subcategories (ten per category) and 1,889 products spread evenly across the subcategories. Every page shows a trail with its ancestors linked and itself unlinked, which is how almost every breadcrumb template renders.

Page typePagesBreadcrumb links each page gives outBreadcrumb links each page receives
Homepage101,999
Category101198.9 on average
Subcategory100218.9 on average
Product1,88930
Total2,0005,877 links5,877 links

Three things fall out of that table.

  • Breadcrumbs only ever link upwards. 5,877 links, and not one of them points at a product. Breadcrumbs are excellent at concentrating authority on category and subcategory pages and do nothing at all for the pages that sell.
  • The distribution follows catalogue size, not commercial value. Each category receives about 199 breadcrumb links because it has about 199 descendants. Put 600 products in one category and 20 in another and the first gets thirty times the breadcrumb links, whether or not it is the one you want to rank.
  • The homepage link is nearly worthless as a signal. 1,999 of the 2,000 pages link to it from the trail, which is what the navigation already does. The useful breadcrumb links are the middle ones.

The limits of the model, stated plainly. It assumes an even spread of products, one trail per page, and that every breadcrumb link counts equally, which is a simplification of how link signals actually work. It does not include navigation, related-product or contextual links, which on a real site carry most of the downward flow. That is the point of it. If breadcrumbs are your main internal linking structure, your products are being fed by everything except the breadcrumbs, and you should check that something is actually doing that job. My 106-page model of internal link equity and the guide to finding orphan pages cover what to put in its place.

Breadcrumbs, your URL structure and search results

A breadcrumb trail and a URL path are two different things, and they do not have to match. Google’s own example trail of Books, Science Fiction, Award Winners would be valid on a URL with no folders at all. What has to match is the trail in the markup and the trail on the page. If your hierarchy lives in the trail rather than the URL, that is a perfectly sound choice, and it means a site architecture change can be made in the template without a URL migration.

On presentation, be careful with promises. In January 2025 Google published a Search Central post titled “Simplifying the visible URL element on mobile search results”, and how breadcrumbs appear in a result varies by device and over time. The guidelines quoted above are explicit that correct markup does not guarantee any appearance at all. I recommend breadcrumb schema because it describes your hierarchy unambiguously to Google and to AI systems that read structured data, which I cover in schema markup for AI search, and not because of a particular look in the results.

The checklist I run

  1. Confirm every template that renders a visible trail also emits a BreadcrumbList, and no template emits one without a visible trail.
  2. Check that the HTML trail and the JSON-LD come from the same function or data source.
  3. Validate positions start at 1 and run without gaps on the deepest template you have.
  4. Check every ancestor URL returns 200, is indexable and is the canonical version.
  5. Look for a second BreadcrumbList from a plugin or theme and keep only real alternative trails.
  6. Count breadcrumb links received per category against the commercial priority of that category, using the model above.
  7. Confirm products receive internal links from something other than breadcrumbs.

None of these checks takes long, and the last two are where breadcrumbs stop being a schema task and start being an internal linking one. That is the half worth your time.

Related reading

Need help with your own site?

Tell me where it stands. I reply within a day, and the first look is free.

Send me a message

Goes straight to my inbox. I reply within a day.

Leave a Reply

Your email address will not be published. Required fields are marked *