Structured data (JSON-LD) explained
Structured data describes what a page is about in a format Google reads directly. It unlocks rich results and must parse cleanly.
Step by step, with screenshots: Article and BlogPosting schema: what Google actually uses →
Check your own site
Runs these 6 checks and the other 181, free, in about 45 seconds.
What a passing site looks like
- JSON-LD syntax: passesfail · −8 ptseffort S
- Structured data foundwarning · −3 ptseffort M
- Required schema properties: passeswarning · −3 ptseffort M
- Structured data entities are uniquewarning · −1 ptseffort S
- No microdata in useinfo onlyeffort M
- Structured data types: passesinfo onlyeffort S
1. JSON-LD syntax
Why it matters. A JSON-LD block with a syntax error is ignored completely, so Google reads no structured data from it. One stray comma or missing quote costs the whole block.
- Open the technical detail to see the parser message and the block number.
- Paste the block into a JSON validator, fix the character it points at, and run this check again.
2. No structured data found
Why it matters. Structured data lets Google show rich results such as prices, review stars, breadcrumbs and event dates. Without it, your listing is plain text.
- Add a JSON-LD script describing the page's main entity (Organization, Product, Article…).
- Most CMS SEO plugins generate this for you; check their schema settings.
In a report the technical detail reads: Detected 0 <script type="application/ld+json"> blocks and no microdata.
3. Required schema properties
Why it matters. Google shows a rich result (price, stars, breadcrumb, event date) only when the entity carries the properties it requires. Without them the block is valid but earns nothing in search.
- Open the technical detail for the full list, one line per entity type and property.
- Add each property to the JSON-LD block. In WooCommerce, Yoast or Rank Math this usually means filling in the price, image or author field on the item itself.
4. Duplicate schema entities
Why it matters. Two blocks describing the same Organization, WebSite or Product make Google pick one at random, and their properties may disagree. Usually a theme and an SEO plugin both emit the block.
- Keep one block per entity; turn off the schema output of either the theme or the SEO plugin.
- If both are needed, merge them into one @graph with a single entity per @id.
5. Microdata usage
Why it matters. Microdata (itemscope and itemprop attributes in the HTML) still works, but Google recommends JSON-LD and most tools only read JSON-LD. Nothing is broken; this is for your information.
- Keep it for now. When you next touch the template, move the same data into one JSON-LD block and remove the attributes.
6. Structured data types
Why it matters. These are the entities the page declares. Google can only show rich results for the types it documents, so the list tells you what you can earn from this page.
- Compare the list with the rich-result types Google supports (Product, Article, Event, BreadcrumbList, LocalBusiness…) and add the one that fits this page.