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: JSON-LD basics: adding structured data without breaking anything →
Check your own site
Runs these 6 checks and the other 187, free, in about 45 seconds.
Or run only this check with the free Schema markup generator, the free AI crawlers check or the free AI visibility checker.
What it is
Structured data is code that describes what a page is about in a fixed vocabulary search engines read directly, such as "this is a Product, its price is 49 EUR, it is in stock". Most sites write it as JSON-LD, a script block of type application/ld+json, using the types and properties from schema.org.
Google uses it to understand pages and to decide whether they qualify for rich results such as prices, review stars, breadcrumbs and event dates. It is not a ranking factor in itself, and a block with one syntax error, such as a stray comma, is ignored completely.
OK looks like this: at least one JSON-LD block describing the page's main entity, every block parses, each entity appears once, and the required properties for its type are present. getReport parses every block, lists the types it finds and names missing properties.
What a passing site looks like
- Structured data foundfail · −12 ptseffort M
- JSON-LD syntax: passesfail · −8 ptseffort S
- 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. No readable structured data found
Why it matters. Structured data lets Google show rich results such as prices, review stars, breadcrumbs and event dates. Without it, or when every block has a syntax error, Google reads none and your listing is plain text.
- Add a JSON-LD script describing the page's main entity (Organization, Product, Article…). If the page already has one that cannot be parsed, fix its syntax first.
- Most CMS SEO plugins generate this for you; check their schema settings.
2. 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.
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.
Questions people ask
What is schema markup?
Schema markup is structured data that uses the schema.org vocabulary to label the content of a page, such as a product's price, an article's author or a business's opening hours. Search engines read it to understand the page and to build rich results. Google recommends writing it as JSON-LD.
What is structured data?
Structured data is information organised in a standard format that machines can read without guessing, as opposed to free text. On websites it means code that tells search engines exactly what the page contains, written as JSON-LD, Microdata or RDFa with the schema.org vocabulary.
What is schema.org?
schema.org is a shared vocabulary of types and properties, such as Product, Organization, Article and price, launched in 2011 by Google, Microsoft and Yahoo and later joined by Yandex. Structured data uses its names so that every search engine understands the same labels. It lists hundreds of types, but Google supports rich results for a few dozen.
What are the types of schema markup?
schema.org has hundreds of types, but the ones that matter most for websites are Organization and LocalBusiness, WebSite, BreadcrumbList, Product with Offer, Article, Event, Recipe, VideoObject and Review. Use the type that matches what the page really is, and check Google's search gallery for which ones earn rich results.
What is JSON-LD?
JSON-LD (JavaScript Object Notation for Linked Data) is a format for writing structured data as a JSON object inside a <script type="application/ld+json"> tag. It sits apart from the visible HTML, so it is easy to add and maintain, which is why Google recommends it over Microdata and RDFa.
Does schema markup help SEO?
Indirectly. Google has said structured data is not a ranking factor, but it can make a page eligible for rich results, which take more space in search and often earn more clicks. It also helps search engines and AI tools understand your business, products and content accurately.