First, a terminology correction that matters for diagnosis: what’s being described here is the breadcrumb trail displayed in place of a URL under a search result, not classic sitelinks (the multi-link block Google sometimes shows beneath a homepage-level result for the same site). BreadcrumbList structured data only ever influences that breadcrumb-path display, never the separate sitelinks feature, which Google generates independently and which has no corresponding structured data type at all. The reason the displayed breadcrumb can look “wrong” even with valid markup is that Google treats BreadcrumbList JSON-LD as one signal among several about your site’s structure, not as a directive; when your marked-up breadcrumb disagrees with what Google infers from your URL path and internal linking, Google can and does display something that matches none of your inputs exactly.
Mechanism: markup is a hint, not a control panel
Google’s own Search Central documentation for breadcrumb structured data is explicit that implementing BreadcrumbList does not guarantee the breadcrumb rich result will appear, and that Google uses “many sources of information” to determine the site hierarchy shown in search results, including but not limited to the marked-up data. In practice, the signals feeding this are the BreadcrumbList JSON-LD itself, the physical URL path structure (directory-style paths often get parsed directly), and the site’s internal navigation and linking patterns as crawled by Googlebot. These three sources are supposed to agree in a well-structured site, but when they don’t, Google’s system resolves the discrepancy algorithmically, and the output can be a hybrid that doesn’t match any single source cleanly, which is what practitioners experience as an “incorrect” breadcrumb.
A few concrete disagreement patterns that produce this: a site whose BreadcrumbList markup says Home > Category > Subcategory > Product, but whose actual URL is a flat /product-name with no category segment; a site that recently restructured its navigation (moving a page to a new parent category) without updating the corresponding breadcrumb markup on that page, so the schema still asserts the old hierarchy; or a site where internal links to a page overwhelmingly come from a different section than the one its breadcrumb markup claims, so Google’s crawled link-graph understanding of “where this page lives” conflicts with the explicit schema.
Diagnosis workflow
Step 1: Confirm the schema is valid. Run the page through Google’s Rich Results Test. This confirms syntactic validity (correct BreadcrumbList type, correctly ordered ListItem entries with position values starting at 1, valid item URLs) but a pass here only proves the markup itself is well-formed. It does not confirm Google will display it, and it says nothing about whether the hierarchy asserted in the markup matches the site’s actual structure. Don’t stop here; a clean Rich Results Test pass is necessary but not sufficient.
Step 2: Check URL path and navigation consistency against the markup. Manually compare the breadcrumb trail asserted in JSON-LD against the literal URL path segments and against the actual clickable breadcrumb (if any) rendered on the page for users. If these three don’t agree with each other, that’s very likely the root cause, since it directly creates the multi-source conflict described above. Pay particular attention to pages that have been recategorized, merged, or moved as part of a site restructure, since stale breadcrumb schema is one of the most common causes of this drift; the HTML template may not have been updated in every location the hierarchy is asserted.
Step 3: Check Search Console’s breadcrumb report. Under Search Console’s Enhancements section (or Legacy report tools, depending on your account’s UI version), the Breadcrumbs report shows valid, invalid, and warning counts for pages with BreadcrumbList markup detected. Errors here (like missing required fields or incorrect nesting) will explain outright rendering failures. However, this report reflects markup validity, not whether the specific hierarchy is the one that will appear in search results, so a page showing zero errors here can still show a different breadcrumb path in live search results than the one in its schema, which is not a bug on Google’s end, just a consequence of markup being advisory.
Step 4: Check the actual rendered SERP. Search for the specific page (using a site: search or by searching its exact title) and look at what breadcrumb trail actually displays. Compare it against both your markup and your real navigation. If it matches neither, this confirms Google’s system is resolving a genuine structural disagreement between your marked-up data and your crawled site structure, and the fix is to bring those into alignment rather than to further tweak the schema in isolation, since the schema is not being ignored due to a technical error but because a stronger competing signal (URL structure or link graph) disagrees with it.
Practical implication and correction
Once a mismatch is confirmed, the correction is structural, not just a markup edit: update the BreadcrumbList JSON-LD to reflect the page’s current, real position in the site hierarchy, and simultaneously verify the physical URL structure and the on-page navigational breadcrumb (if present) both agree with that same hierarchy. If the mismatch stems from a legitimate difference in how you want the page categorized versus its literal URL path (for example, a flat URL structure that predates a taxonomy the site now uses conceptually), recognize that the URL path is a stronger, harder-to-override signal in Google’s resolution process than JSON-LD alone, based on how Google describes using “many sources”; changing only the schema without changing or reinforcing internal linking and URL structure toward the desired hierarchy may not durably change what displays.
Set the expectation correctly with stakeholders too: even after full alignment across markup, URL, and navigation, Google explicitly reserves the right not to display the breadcrumb rich result at all, since it’s documented as a feature Google may or may not apply, similar to other rich results. Perfect technical implementation improves the odds Google’s displayed breadcrumb matches your intended hierarchy; it does not guarantee the rich result appears, and it has no bearing whatsoever on the separate sitelinks feature, which remains entirely outside structured data’s control.