According to Google's public structured-data error reports, roughly 78% of JSON-LD failures are plain syntax: trailing commas, smart quotes pasted from a CMS, unclosed brackets, missing @context, duplicate keys. The remaining 22% are structural — missing required fields per Google's rich-result eligibility specs.
Knowing which failure category you are in matters because the fix is different. Syntax errors are caught by Schema.org Validator. Field-completeness errors only show up in Google's Rich Results Test. You need both validators to catch both layers.
Required fields cheatsheet
Here are the required fields for the schema types most websites use. These are what Google needs to consider your page eligible for rich results in SERPs.
- Product — name, image, offers
- Recipe — name, image, recipeIngredient, recipeInstructions
- Event — name, startDate, location
- Organization — name, url (logo, sameAs, contactPoint are recommended)
- LocalBusiness — name, address, telephone
- FAQPage — mainEntity (array of Question/Answer pairs)
- BreadcrumbList — itemListElement
- VideoObject — name, description, thumbnailUrl, uploadDate
- Person — name
- HowTo — name, step
- Review — itemReviewed, reviewRating, author
- Course — name, description, provider
- JobPosting — title, description, datePosted, hiringOrganization
- SoftwareApplication — name, applicationCategory, operatingSystem
The trap of "it validates but does not show"
JSON-LD can validate (parse cleanly, no syntax errors) and still fail rich-result eligibility because of missing required fields. This is the most common cause of "I added schema and nothing changed in search" frustration.
Schema.org Validator only checks structure. Google's Rich Results Test checks eligibility. Both pass when your JSON-LD is complete. Our auditor runs both layers in one pass per JSON-LD block.
Two gotchas that bite everyone
ISO 8601 dates only. datePublished, dateModified, startDate, uploadDate — all must be in ISO 8601 format. Either 2026-05-01 or 2026-05-01T14:30:00Z. The friendly format May 1, 2026 will silently fail to parse.
Absolute URLs for image, url, sameAs, logo. Relative URLs in these fields are silently dropped by Google. image: "/og.png" does not work — it must be image: "https://yoursite.com/og.png".
How we catch it
Our auditor parses every JSON-LD block, checks required and recommended fields against the table above per type, validates ISO 8601 date formats with a strict regex, and flags any relative URL in image, url, sameAs, or logo fields. All three layers of failure surface in one pass with a specific copy-paste fix per finding.