RoastMyOpsec

News

Breadcrumb JSON-LD vs Visible Nav for Public Sites

April 30, 2022

Breadcrumb JSON-LD vs visible nav for public sites is a markup-versus-UI decision: BreadcrumbList should repeat a trail users can actually see and click, while primary nav is the site-wide menu and does not have to be a breadcrumb. Do not invent a JSON-LD trail that lists internal or unpublished sections. RoastMyOpsec does not score BreadcrumbList as a standalone F, and fake crumbs are a public map if you fill them with sensitive prefixes.

The practical difference

Google’s breadcrumb structured data is a BreadcrumbList of ListItems with position, name, and item URL. It is meant to match a visible breadcrumb. A header nav with Products / Docs / Blog is not automatically a breadcrumb. Using JSON-LD to describe a trail that is not on the page is how rich results disagree with reality.

The OPSEC miss is encoding a trail like Home > Internal > Staging that never appears in the UI. That is a sitemap-quality leak in Schema.org clothing. Visible nav that links only to public sections is ordinary. JSON-LD that adds extra unpublished crumbs is not.

Breadcrumbs are not access control. A 200 on each item URL is still a 200.

How to choose based on what you shipped

If the template already shows breadcrumbs, mirror them in JSON-LD (or Microdata) one-for-one. If you only have a global nav, skip BreadcrumbList. Never add crumbs “for SEO” that point at URLs you would not put in the footer.

OptionWhen it winsWatch-outTakeaway
Visible breadcrumbs + JSON-LDThe page already shows a matching trailDrift between UI and graphMirror, do not invent
Visible nav onlyA flat marketing site with no trail UIForcing BreadcrumbList anywaySkip the type
JSON-LD without UIAlmost neverAdvertising URLs users cannot seeDo not ship a ghost trail
Sitemap insteadYou want crawlers to find public sectionsListing URLs that should stay unpublishedDifferent job than crumbs

When breadcrumb JSON-LD still wins

Breadcrumb JSON-LD still wins when the visible trail is real and you want search to show it. Visible nav still wins as the actual way humans move. Missing BreadcrumbList on a homepage is normal. A graph that invents extra sections is the miss.

Common mistakes

The first mistake is adding BreadcrumbList items that do not appear in the page UI.

The second mistake is putting unpublished or internal section URLs in the trail graph.

The third mistake is treating missing breadcrumb JSON-LD as a security finding.

What a URL roast can prove

RoastMyOpsec does not grade BreadcrumbList, other JSON-LD, Open Graph, or hreflang as standalone Fs. It does roast chatty robots.txt Disallow lines and exposed paths such as .git/HEAD and .env, plus headers, TLS, cookies, and js-secrets. Do not use structured crumbs as a second sitemap of sensitive prefixes.

Free audit the URL you own

RoastMyOpsec is a defensive public-surface roast: headers, cookies, sensitive paths, and more — no exploit payloads. Start with the free audit, then open the vault if the blurred findings look expensive.

Free audit now

FAQ

Must breadcrumbs be in JSON-LD?
Only if you want that rich result and the trail is visible. A nav menu alone does not require BreadcrumbList.
Can JSON-LD breadcrumbs hide a URL?
No. They advertise URLs. If a URL should not be public, do not list it and do not serve it.
Does RoastMyOpsec fail missing breadcrumbs?
No. Structured trails are not a scored F.

Sources

Related guides