Schema.org supports three syntaxes for structured data: JSON-LD, Microdata, and RDFa. They describe the same vocabulary of types and properties, but the implementation model is different enough that the choice affects how maintainable your structured data actually is, not just how it looks in the page source.
The short answer: use JSON-LD for new implementations, unless you have a specific legacy constraint tying you to Microdata. Here's the reasoning, not just the recommendation.
How each format actually works
JSON-LD is a single script block, typically placed in the page head, that describes entities independently of the visible HTML. Because it isn't tied to specific DOM elements, it can be generated programmatically from a CMS field, database record, or API response and injected as one block, regardless of how the visible template changes.
Microdata annotates the HTML elements themselves using itemscope, itemtype, and itemprop attributes. The structured data is embedded directly in the markup that renders the visible page, which means the schema and the display template are the same code.
RDFa works similarly to Microdata but uses a different attribute vocabulary (typeof, property, resource) originally designed for the broader Resource Description Framework, not specifically for schema.org. It shows up occasionally in older CMS themes and some publishing platforms, but it's the least common of the three in modern implementations.
Why JSON-LD wins in practice
The core advantage is separation of concerns. Because JSON-LD doesn't live inside the visible markup, a template redesign, a CSS refactor, or a component library migration doesn't touch it — the schema keeps working as long as the script tag ships. Microdata and RDFa don't have that protection: change a div structure or remove an element during a redesign, and the itemprop attribute goes with it, silently, with no visual indication anything broke.
This matters more at scale than it looks. A single static page with hand-written Microdata is manageable. A CMS template used across ten thousand product pages, where a developer touches the template for an unrelated reason, is where Microdata implementations quietly break — because nothing about a missing itemprop attribute causes a visible rendering problem. The page looks identical. The structured data is just gone until someone runs a validator.
JSON-LD also maps more directly onto how most sites actually generate content: from a data layer (CMS, database, headless API), not from hand-authored HTML. Generating a JSON-LD object from that same data layer is straightforward — serialize the fields you already have into the correct schema.org shape. Doing the equivalent in Microdata means threading itemprop attributes through every relevant template element, which is a larger and more fragile engineering task for the same output.
Is JSON-LD better than Microdata for schema markup, specifically for Google?
Google has stated a preference for JSON-LD in its own developer documentation and uses it as the default example format across nearly all of its structured data guides. Google's crawlers and rich-result parsers support all three formats, so choosing Microdata or RDFa won't cause a page to fail rich-result eligibility on format grounds alone — but every practical maintenance advantage points at JSON-LD, and it's the format Google itself demonstrates first.
Why JSON-LD is called "linked data"
The LD in JSON-LD stands for Linked Data — a W3C data-modeling approach built around the idea that entities should be described independently of any single document and connected to each other (and to external identifiers) by reference. That's precisely the property that makes @id and @graph work: a JSON-LD schema markup block isn't just describing one page in isolation, it's declaring nodes in a graph that can point at each other and at external linked-data sources like Wikidata. Microdata and RDFa were not built around that same graph-first model, which is part of why representing multi-entity relationships is more natural in JSON-LD than in either alternative.
Does Google actually prefer JSON-LD, or is that a myth?
It's not a myth, and it's easy to verify: open Google Search Central's structured data documentation for any schema type — Article, Product, FAQ, whichever — and the example markup shown by default is JSON-LD. Google does support Microdata and RDFa in its parsers, and older enterprise CMS implementations that used those formats haven't lost rich-result eligibility because of the format alone. But every piece of Google's own current guidance demonstrates JSON-LD first, and Google's John Mueller has stated the same preference directly in public Q&A sessions. There's no ambiguity left in whether Google supports one format over another for parsing purposes — the ambiguity is only in whether format choice matters beyond Google's stated preference, and practically, it matters far more for your own maintenance burden than for anything Google does differently with the parsed output.
What this means for testing
Any structured data testing tool — Google's Rich Results Test, the Schema.org validator, or a third-party structured data testing tool — will accept a correctly formed JSON-LD schema markup block, correctly formed Microdata, or correctly formed RDFa with equal success. Don't expect a testing tool to surface a format preference as an error or warning; it won't, because there isn't one at the validation level. The preference is entirely about long-term maintainability, not pass/fail testing outcomes.
Format choice and AI Overviews
As AI Overviews and other generative answer engines increasingly rely on structured data to decide what to cite, the practical argument for JSON-LD gets stronger — not because AI systems parse JSON-LD schema differently than the same data encoded as Microdata, but because JSON-LD's linked-data structure keeps entity relationships intact and machine-parseable even as your site's templates evolve. An AI system pulling facts from a page benefits from the same reliability a Microdata implementation risks losing silently during a redesign — the format that survives your next template change is the format that keeps feeding accurate structured data signals to every system reading it, human-facing search result or AI system alike.
When Microdata still makes sense
There's one legitimate case for sticking with Microdata: an existing large-scale implementation that already works, is validating cleanly, and would require significant engineering effort to migrate with no functional upside. Migrating purely for the sake of using the "preferred" format isn't worth the risk of introducing new bugs into a working system. New pages, new templates, and any site being rebuilt from scratch should default to JSON-LD regardless.
One practical migration pattern worth knowing: you don't have to migrate an entire site's structured data format in one project. Google's crawlers handle a site that mixes JSON-LD on new templates with legacy Microdata on untouched older templates without penalty — there's no site-wide format-consistency requirement. That makes an incremental migration realistic: default every new template and every touched template to JSON-LD, and leave stable legacy Microdata alone until its template naturally comes up for other work. Trying to force a big-bang migration purely to standardize format, on a codebase where nothing else needs the templates changed, introduces more regression risk than it removes.
RDFa is harder to justify keeping in any scenario — it's less documented, less commonly supported by third-party structured data tools, and offers no advantage over JSON-LD that would make migration effort a bad trade.
Testing the difference yourself
Run the same page through Google's Rich Results Test and the Schema.org validator with each format and compare the parsed output. In practice, correctly implemented JSON-LD, Microdata, and RDFa all validate and parse identically from Google's side — the difference isn't in what Google sees on a working page, it's entirely in how easy each format is to keep working as your site changes over time. That maintainability gap is the real argument for JSON-LD, not a hidden ranking or eligibility advantage.
Related articles
Schema Markup for SEO: The Complete Practitioner's Guide
Rich snippets get the attention, but entity disambiguation is the bigger reason schema markup matters — especially as AI Overviews take a growing share of search.
Edge Schema Injection via Cloudflare Workers
Deploying schema through a legacy CMS often means a developer ticket queue. Injecting it at the edge skips that entirely.
Does Schema Markup Help with Google AI Overviews?
Schema markup doesn't earn a citation on its own — it removes friction in the retrieval process that decides which pages are confident enough to cite.
Organization Schema: The Full Property Guide
Organization schema is the entity everything else on your site references. Get it right once, and every other type inherits a stable identity to point back to.

Written by
Paul Lovell
International SEO Consultant & Founder of Always Evolving SEO. 15+ years running technical audits, log-file analysis, and root-cause fixes for multimillion-dollar businesses — speaker at SMX London, Search & Content Summit, and SEMrush events.