Skip to Content

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:

  1. Check non-homepage pages: The crawler examines all pages with URL depth greater than 1 (inner pages, not the homepage)

  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for BreadcrumbList schema: The crawler verifies if any schema block has:

    • @type set to BreadcrumbList
    • itemListElement property containing an array of ListItem objects
  4. Validate schema completeness: If BreadcrumbList schema is found, the crawler checks for:

    • At least one ListItem in the itemListElement array
    • Each ListItem has position, name, and item (URL) properties
    • The last ListItem’s item URL matches the current page URL
  5. Trigger conditions: The issue is flagged when:

    • Inner page doesn’t have BreadcrumbList schema
    • BreadcrumbList exists but has no ListItem entries
    • Any ListItem is missing name or item (URL) properties

How To Fix

  1. 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" } ] }
  2. Ensure each ListItem has required properties:

    • position: Sequential number starting from 1
    • name: Human-readable name for the page
    • item: Full URL of the page
  3. Make the last item match the current page URL

  4. 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

FieldTypeDescription
schemaTypeSchemaTypeThe type of schema (e.g., Organization, Person)
schemaFormatSchemaFormatThe format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifierString?Unique identifier for the schema
rawJsonJson?The raw JSON-LD or structured data content
schemaErrorsJson?Array of validation errors found in the schema
isValidSchemaBoolean?Whether the schema is valid according to validation
missingFieldsJson?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 BreadcrumbList schema with a valid itemListElement array containing ListItem entries — 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
  • xeopix-crawling-v2/toggleGroups/structuredDataRichResults.js
  • xeopix-crawling-v2/issueCodes.js
  • xeopix-crawling-v2/utils/context.js
  • xeopix-crawling-v2/utils/issues.js
  • xeopix-crawling-v2/utils/schema.js

Coverage Summary

  • Covers valid BreadcrumbList schema detection
  • Covers empty HTML resilience

References

Last updated on