aiwebpageseo / SEO Tools / JSON-LD Checker / JSON-LD Schema Guide

JSON-LD Schema: Implementation and Validation Guide

JSON-LD structured data tells Google exactly what your content is about — your business, your products, your reviews, your FAQs. Get it right and Google may reward you with rich results that dramatically increase your click-through rate.

📋 Check JSON-LD Schema All Audit Tools →

Why structured data matters for SEO

Search engines understand natural language but they understand structured data better. JSON-LD schema removes ambiguity — instead of Google guessing that a number on your page is a price, you explicitly declare it as a price using schema markup. This enables rich results: enhanced search listings with star ratings, prices, FAQ dropdowns, recipe cards and more.

Click-through rate impact: Rich results consistently achieve higher click-through rates than standard blue link results for the same ranking position. FAQ rich results in particular can double the space your result takes in search pages, pushing competitors further down.

The most important schema types for most websites

Organization or LocalBusiness

Add this to your homepage to tell Google your business name, address, phone number, logo and social profiles. This powers your Google Knowledge Panel and local search results.

FAQPage

Add FAQ schema to any page with question and answer content. Google displays these as expandable dropdowns directly in search results, dramatically increasing your visual presence.

BreadcrumbList

Add breadcrumb schema to show your site structure in search results. Google displays the breadcrumb path instead of the URL, making results cleaner and more informative.

Article

Add Article schema to blog posts and news content with datePublished, dateModified, author and publisher. Required for inclusion in Google News and Top Stories carousels.

Quick win: Add FAQPage schema to your top 5 landing pages. Write 3-5 questions your customers actually ask, with concise answers. Submit the pages for indexing in Search Console after adding the schema.

Eligibility is not display — and rich results are no longer the only reason to mark up

Valid schema makes you eligible for a rich result. It does not entitle you to one. Google decides, per query, per page, whether to render the enhancement — and it will decline if it judges the page low quality, if the markup does not match what a visitor sees, or simply if it prefers a different presentation for that search. This is why "my schema validates but I have no stars" is such a common and frustrating position: the markup was never the whole condition.

What changed in 2023, and what it actually means

In August 2023 Google narrowed which enhancements it draws in search results. FAQ rich results — the expandable question dropdowns — were restricted to a small set of authoritative government and health sites, and HowTo rich results were withdrawn from the results page altogether.

The conclusion many people drew from this was that the markup had become pointless. That conclusion is wrong, and the reason matters more now than the rich result ever did.

The audience for structured data changed. A blue-link enhancement was only ever one consumer of your markup. The others — answer engines, AI assistants, and any system that has to parse your page rather than read it — need exactly what schema provides: an explicit, unambiguous statement of what the question is and what the answer is. Q&A content that is marked up is machine-readable. The same content in unmarked prose has to be inferred. When the thing doing the reading is assembling a synthesised answer and choosing whom to cite, being unambiguous is the entire game.

So the practical position on FAQPage is: mark it up. Not because Google will draw a dropdown next to your result — for most sites it will not — but because it declares, in a format designed for machines, that this page contains a direct answer to a specific question. That is the currency of answer engine optimisation, and it costs nothing to supply.

The rule that gets sites penalised: markup must describe visible content

Google's structured data guidelines are explicit, and this is the one place where schema can actively harm you rather than merely fail to help.

The markup must describe content that is visible on the page. A question in your FAQPage JSON-LD that does not appear anywhere a visitor can read it is a violation. Review markup on a page with no reviews on it is a violation. A price in Product markup that differs from the price on the page is a violation.

The consequence is not that the rich result fails to appear. It is a manual action for structured data spam, which suppresses all rich results for the site, and which has to be fixed and appealed before anything is restored.

This happens innocently more often than deliberately. The usual routes:

The test to run on every page you mark up: take each value in the JSON-LD — every question, every answer, every price, every rating — and find it with Ctrl-F in the rendered page. If it is not there, either put it on the page or take it out of the markup. There is no third option.

The errors that break JSON-LD, in order of how often they occur

Almost all of these are JSON syntax failures rather than schema failures, and a single one invalidates the entire block — not the offending property. One trailing comma and none of your markup exists.

  1. A trailing comma. Legal in JavaScript, illegal in JSON. The commonest single cause of a schema block that Google reports as simply absent.
  2. Single quotes. JSON requires double quotes, for both keys and string values. Copying an example out of a blog post that used single quotes produces silently invalid markup.
  3. Unescaped double quotes inside a string. An answer containing a quoted phrase terminates the string early. Escape them as \".
  4. HTML entities inside the JSON. & and " belong in HTML, not in JSON strings. A templating engine that HTML-escapes its output will corrupt every schema block on the site at once.
  5. A price with a currency symbol. "price": "£19.99" is invalid. The value must be the bare number as a string — "19.99" — with the currency given separately in priceCurrency. Thousands separators break it too.
  6. Dates that are not ISO 8601. "datePublished": "15/05/2026" is not a date to a machine. Use 2026-05-15.
  7. Case-sensitive type names. FAQpage, Localbusiness and Breadcrumblist are not types. Schema.org types are case-sensitive and a typo makes the block meaningless rather than erroneous.
  8. A missing or wrong @context. It must be https://schema.org. Without it, nothing resolves.
  9. An image given as a filename rather than a URL. Schema image properties require absolute URLs.

Two validators, two different questions

People use these interchangeably and then wonder why they disagree. They are answering different questions and you generally need both.

ToolAnswersUse it when
Google's Rich Results Test"Is this eligible for a Google rich result?"You want the enhancement in Google's SERP
Schema Markup Validator (validator.schema.org)"Is this valid schema.org?"You are marking up for correctness and for machines other than Google

The distinction matters directly for anything written with answer engines in mind. Google's Rich Results Test will ignore, or warn about, perfectly valid schema.org markup that Google happens not to use for any of its own SERP features. That is not an error in your markup — it is Google telling you about Google. The schema.org validator will confirm the markup is correct regardless of whether Google chooses to draw a picture with it.

And a third check that is not a validator but catches what neither will: view the rendered DOM, not the source. If your JSON-LD is injected by JavaScript, it exists only after rendering — which Google can handle, but which adds a delay and a dependency, and which many other crawlers and answer engines will simply never see. Server-render your structured data. It is the difference between markup that is always there and markup that is there if the machine reading you happens to execute JavaScript.

Duplicate and conflicting schema: the plugin problem

On a typical WordPress site, an SEO plugin, a theme, a review plugin and an ecommerce plugin may each be emitting their own JSON-LD. The result is three Organization blocks with three different names, two BreadcrumbList blocks describing different paths, and a WebSite block that nobody remembers installing.

Google's response to contradictory statements about the same entity is to trust the page less, not to average them. It is a genuinely damaging state and it is entirely invisible unless you look.

Use @graph and @id to say things once

The clean pattern is a single JSON-LD block containing an @graph array, in which each entity is declared once with a stable @id, and everything else references that @id rather than repeating the entity. Your Article's publisher is not a second copy of your Organization — it is a pointer to the one you already declared. This eliminates contradiction by construction, because there is only ever one statement of each fact.

To audit this: search the rendered page source for application/ld+json and count the blocks. More than one is not automatically wrong, but more than one describing the same entity always is.

Choosing the right type, and the ones that are commonly misused

Keep dateModified honest. Bumping it on every deploy, on pages that have not changed, is a signal that stops meaning anything — and if Google decides your freshness dates are unreliable, it stops using them. Update it when the content actually changes.

Frequently asked questions

What is JSON-LD?

JSON-LD (JavaScript Object Notation for Linked Data) is the recommended format for adding schema markup to web pages. It is placed in a script tag with type='application/ld+json' in the head or body of your page. Google prefers JSON-LD over microdata and RDFa because it can be added without modifying the visible HTML of the page.

Which schema types get rich results in Google?

Schema types that currently generate rich results in Google include FAQPage (expandable Q&A in results), HowTo (step by step instructions), Recipe (with ratings, cook time and calories), Product (with price and availability), Review and AggregateRating (star ratings), Event (with date and location), and LocalBusiness (with address and hours in the local panel).

How do I validate my JSON-LD schema?

Run the JSON-LD Checker in aiwebpageseo Audit Tools. It validates your schema against the schema.org specification and identifies errors that prevent rich results. You can also use Google's Rich Results Test at search.google.com/test/rich-results to see which rich results your schema is eligible for.

Is FAQPage markup still worth adding if Google rarely shows FAQ rich results?

Yes. Since August 2023 Google has shown FAQ rich results only for a narrow set of authoritative government and health sites, and it withdrew HowTo rich results from the results page. But a blue-link enhancement was only ever one consumer of the markup. Answer engines and AI assistants have to parse a page rather than read it, and schema states explicitly what the question is and what the answer is. Marked-up Q&A is machine-readable; the same content in unmarked prose has to be inferred. That is the reason to add it now.

Why does my schema validate but produce no rich result?

Valid markup makes a page eligible for an enhancement; it does not entitle it to one. Google decides per query and per page, and will decline if the page is judged low quality, if the markup does not match what a visitor can see, or if it simply prefers a different presentation for that search. Validation and display are separate questions.

What is the most common reason a JSON-LD block is ignored entirely?

A JSON syntax error, which invalidates the whole block rather than the offending property. In order of frequency: a trailing comma, single quotes instead of double quotes, an unescaped double quote inside a string, HTML entities such as & leaking into JSON strings, a price written with a currency symbol, and a date that is not in ISO 8601 format. Type names are also case-sensitive — FAQpage is not a type.

Can structured data get my site penalised?

Yes. Google requires markup to describe content that is visible on the page. Questions in FAQ markup that appear nowhere a visitor can read them, review markup on a page with no reviews, or a marked-up price that differs from the displayed price can trigger a manual action for structured data spam — which suppresses rich results across the whole site until it is fixed and appealed. Check every value in the JSON-LD against the rendered page.

📋 Check JSON-LD Schema Now

Run the JSON-LD Checker and get actionable results in minutes. Pay as you go — no subscription needed.

Check JSON-LD Schema →

Related tools

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical website tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.