How to Create and Validate JSON-LD Schema Markup: A Practical 2026 Guide
Create correct JSON-LD schema markup and validate it properly in 2026 — syntax is not the same as rich-results eligibility.
Published August 30, 2026 · AEO Spotlight Editorial
How to Create and Validate JSON-LD Schema Markup (2026)
JSON-LD is Google's recommended format for structured data, and in 2026 it has become the universal language between your site and all machines — Google, Bing, ChatGPT, and Perplexity. The catch: you can have syntactically perfect code that passes every validator and still be ineligible for rich results. Understanding the difference between valid JSON-LD and eligible markup is the whole game.
TL;DR:
- Every JSON-LD block needs @context ("https://schema.org") and a correct, properly-cased @type.
- Use @graph mode to link all entities together for clearer entity relationships.
- Validate in two layers: syntax first, then rich-results eligibility.
- Pair a schema validator with Google's Rich Results Test.
- Keep dates (datePublished, dateModified, priceValidUntil) current — stale dates hurt eligibility.
How to Create JSON-LD Schema
Start with the two required keys:
{
"@context": "https://schema.org",
"@type": "Article"
}
Then add the properties your type requires. Article needs headline, author, and datePublished. Product needs name, image, and an offer. Check Google's documentation for the type you are implementing — required fields are listed per type.
For pages with several entity types (Organization, Person, Breadcrumb, Article), use @graph to link them into one script:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.com/#org", "name": "Example" },
{ "@type": "Article", "headline": "…", "author": { "@id": "https://example.com/#org" } }
]
}
How to Validate JSON-LD
Validation has two layers:
- Syntax: confirm the JSON is well-formed, @context and @type are present and correctly cased, and you are using real schema.org terms.
- Eligibility: test the page in Google's Rich Results Test to confirm the markup qualifies for the specific rich feature you want.
Best practice in 2026: start with a schema markup validator to confirm correctness, then use the Rich Results Test to verify eligibility.
Common Mistakes That Waste Valid Markup
- Wrong or misspelled @type (for example, "Article" vs "BlogPosting").
- Missing required fields for the target rich feature.
- Date fields that never update (dateModified and priceValidUntil must be current).
- Duplicate schema blocks from server-side rendering + client-side injection (Google sees the page twice).
- Markup for a feature that was retired — FAQ rich results were retired by Google in May 2026, so FAQPage markup no longer produces a classic FAQ snippet.
Frequently Asked Questions
What is a JSON-LD validator? A tool that checks whether your structured data is well-formed and uses real schema.org terms — it confirms syntax but not rich-results eligibility.
Is JSON-LD Google's recommended format? Yes. Google recommends JSON-LD for structured data, and most third-party validators and the Rich Results Test accept it.
Do I need to validate every page? Validate every unique template once, then automate. Hand-checking each page doesn't scale, and templates are where structured-data bugs actually live.
Sources
- Google Search Central — Intro to How Structured Data Markup Works
- Metaflow — JSON-LD Testing: How to Validate Structured Data at Scale
- JSON-LD Generator — JSON-LD Validator: Test and Fix Your Schema Markup (2026 Guide)
- Technova Partners — Structured Data & Schema.org: JSON-LD SEO Guide
- AISO System — Schema Markup: Complete Guide 2026 for Google and AI
Frequently Asked Questions
What is a JSON-LD validator?
A tool that checks whether your structured data is well-formed and uses real schema.org terms — it confirms syntax but not rich-results eligibility.
Is JSON-LD Google's recommended format?
Yes. Google recommends JSON-LD for structured data, and most third-party validators and the Rich Results Test accept it.
Do I need to validate every page?
Validate every unique template once, then automate. Hand-checking each page doesn't scale, and templates are where structured-data bugs actually live.