Skip to content

Schema Validation Module

Module ID: schema_validator | Type: Conditional | Profiles: full, seo, local, ecommerce

The Schema Validation module extracts all JSON-LD blocks from the page, validates JSON syntax, checks that @context is schema.org, verifies @type against known Schema.org types, and ensures required properties are present for common types.


What It Checks

Check What It Looks For
JSON syntax Valid JSON in all <script type="application/ld+json"> blocks
@context Must be "https://schema.org" or "http://schema.org"
@type Must be a recognised Schema.org type
Required properties Type-specific required fields (e.g. Product needs name, offers)
Nested types Validates nested objects (e.g. Offer within Product)
Multiple schemas Checks all JSON-LD blocks on the page
@graph support Handles @graph arrays with multiple entities

Type-Specific Checks

Schema Type Required Properties
Organization name, url
LocalBusiness name, address, telephone
Product name, offers
Article headline, author, datePublished
BreadcrumbList itemListElement
FAQPage mainEntity
WebSite name, url
Event name, startDate, location

Scoring Breakdown

Criterion Deduction Condition
Invalid JSON syntax -15 per block JSON parse error
Missing @context -10 per block No schema.org context
Unknown @type -10 per block Type not in Schema.org vocabulary
Missing required properties -5 per property Type-specific required fields absent
No JSON-LD at all -10 No structured data on the page

Example Findings

P0 CRITICAL: Invalid JSON in JSON-LD block
  The second JSON-LD block has a syntax error: trailing comma before
  closing brace. Search engines will ignore this structured data.
  Fix: Remove the trailing comma and validate with Google's Rich Results Test.
  Effort: Low

P1 HIGH: Product schema missing "offers" property
  The Product JSON-LD has name and description but no offers. Google
  cannot show price information in rich results without offers.
  Fix: Add an "offers" property with @type Offer, price, priceCurrency.
  Effort: Low