No BreadcrumbList schema
What Is This Issue
BreadcrumbList schema is missing from your website’s inner pages. BreadcrumbList schema helps search engines understand your site’s hierarchy and enables breadcrumb navigation to appear in search results.
Without BreadcrumbList schema:
- Search results won’t show breadcrumb navigation paths
- Users can’t see the page hierarchy in search results
- Search engines have less understanding of your site structure
- Internal linking structure is less clear to search engines
A proper BreadcrumbList schema should include: @type (BreadcrumbList), itemListElement with ListItem items, each having position, name, and item (URL).
Why Is This Important
BreadcrumbList schema is important for user experience and SEO:
- Search result appearance: Breadcrumbs appear in search results, showing users the page hierarchy
- User navigation: Helps users understand where they are on your site
- Site structure: Search engines better understand your site’s organization
- Click-through rates: Breadcrumbs can improve CTR by showing clear page context
- AI search context: AI engines use breadcrumbs to understand content relationships
Resolving this issue improves your SEO health score by enhancing search result appearance and site structure understanding.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing BreadcrumbList schema:
-
Check non-homepage pages: The crawler examines all pages with URL depth greater than 1 (inner pages, not the homepage)
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for BreadcrumbList schema: The crawler verifies if any schema block has:
@typeset toBreadcrumbListitemListElementproperty containing an array ofListItemobjects
-
Validate schema completeness: If BreadcrumbList schema is found, the crawler checks for:
- At least one
ListItemin theitemListElementarray - Each
ListItemhasposition,name, anditem(URL) properties - The last
ListItem’sitemURL matches the current page URL
- At least one
-
Trigger conditions: The issue is flagged when:
- Inner page doesn’t have BreadcrumbList schema
- BreadcrumbList exists but has no
ListItementries - Any
ListItemis missingnameoritem(URL) properties
How To Fix
-
Add BreadcrumbList JSON-LD structured data to all inner pages (non-homepage pages with depth > 1):
{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" }, { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.example.com/blog" }, { "@type": "ListItem", "position": 3, "name": "Article Title", "item": "https://www.example.com/blog/article-title" } ] } -
Ensure each ListItem has required properties:
position: Sequential number starting from 1name: Human-readable name for the pageitem: Full URL of the page
-
Make the last item match the current page URL
-
Validate with Google’s Rich Results Test
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Array of required fields that are missing |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed
Examples
Example 1: Missing BreadcrumbList Schema on Inner Page
Problematic state:
<!-- Inner page without BreadcrumbList schema -->
<html>
<head>
<title>Article Title - Example Blog</title>
</head>
<body>
<h1>Article Title</h1>
<p>Article content goes here...</p>
</body>
</html>Corrected state:
<!-- Inner page with BreadcrumbList schema -->
<html>
<head>
<title>Article Title - Example Blog</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.example.com/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "Article Title",
"item": "https://www.example.com/blog/article-title"
}
]
}
</script>
</head>
<body>
<h1>Article Title</h1>
<p>Article content goes here...</p>
</body>
</html>Example 2: BreadcrumbList with More Levels
Corrected state (deeper hierarchy):
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Products",
"item": "https://www.example.com/products"
},
{
"@type": "ListItem",
"position": 3,
"name": "Electronics",
"item": "https://www.example.com/products/electronics"
},
{
"@type": "ListItem",
"position": 4,
"name": "Headphones",
"item": "https://www.example.com/products/electronics/headphones"
}
]
}Example 3: Incomplete BreadcrumbList Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1
}
]
}Missing name and item properties
Corrected state:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com"
}
]
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-59-breadcrumblist-schema.test.js
Purpose
Validates that the crawler correctly validates BreadcrumbList JSON-LD schemas and does not report false positives when the schema is properly formed.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 59
- Issue Code:
breadcrumblist_schema - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Valid BreadcrumbList schema: Page has a
BreadcrumbListschema with a validitemListElementarray containingListItementries — no issue reported.
Negative Test Cases
None — the test only validates that valid schemas pass.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no crash.
Expected Outcome
Pass
Issue should not be reported when a valid BreadcrumbList schema with itemListElement is present.
Fail
No negative test cases are defined.
Validation
- Correct pass-through of valid BreadcrumbList schemas
- Graceful handling of empty HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers valid BreadcrumbList schema detection
- Covers empty HTML resilience
References
- Schema.org — BreadcrumbList — Schema.org
- Google — Breadcrumb — Google Search Central
- Google Rich Results Test — Google Search Central