Skip to main content

BreadcrumbList Schema Missing

Issue No: 59

Category: Structured Data & Rich Results

Issue type: Issue

Priority: IMPORTANT

Description

Inner pages are missing BreadcrumbList schema, preventing Google from displaying breadcrumb paths in SERPs and reducing the engine's understanding of site hierarchy.

How do we capture it

  • For all non-homepage pages with depth > 1, check JSON-LD for "@type": "BreadcrumbList"
  • Validate each ListItem has name, position, and item (URL)

What to store

StructuredDataAudit with schemaType = BreadcrumbList, issueNumber = 57, plus StructuredDataField rows:

FieldTypeComment
item_countintegerNumber of ListItem entries in the breadcrumb
has_valid_itemsbooleanAll items have both name and item (URL)
last_item_is_pagebooleanFinal breadcrumb item matches current page URL

Core audit fields: isPresent, rawJson

Condition for trigger

The following rules trigger this issue:

  • Trigger Rule 1: Schema absent
    • Target Field: isPresent
    • Evaluation Logic: isPresent = false
    • Severity: CRITICAL
    • Diagnostic Message: "No BreadcrumbList on non-homepage page"
  • Trigger Rule 2: No items
    • Target Field: item_count
    • Evaluation Logic: item_count = 0 (StructuredDataField)
    • Severity: CRITICAL
    • Diagnostic Message: "Block exists but empty"
  • Trigger Rule 3: Invalid items
    • Target Field: has_valid_items
    • Evaluation Logic: has_valid_items = false
    • Severity: CRITICAL
    • Diagnostic Message: "Items missing name or URL"

Sources

Long description

One of the most-deployed schema types (38–42% of AI-cited pages). Replaces raw URLs in SERPs with readable paths like example.com › blog › post-title.

Example:

{
"@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": "Post Title" }
]
}

SERP without schema: https://www.example.com/blog/post-title SERP with schema: example.com › blog › post-title

How to Fix

  1. Add BreadcrumbList to all inner pages dynamically from CMS hierarchy
  2. Use sequential position values (1, 2, 3...)
  3. Match visible breadcrumb navigation on the page exactly
  4. Last item may omit item URL (it is the current page)