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 →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.
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.
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.
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.
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.
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.
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.
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.
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:
aggregateRating from an average that is not displayed anywhere.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.
\".& 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."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."datePublished": "15/05/2026" is not a date to a machine. Use 2026-05-15.FAQpage, Localbusiness and Breadcrumblist are not types. Schema.org types are case-sensitive and a typo makes the block meaningless rather than erroneous.@context. It must be https://schema.org. Without it, nothing resolves.People use these interchangeably and then wonder why they disagree. They are answering different questions and you generally need both.
| Tool | Answers | Use 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.
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.
@graph and @id to say things onceThe 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.
LocalBusiness: use the most specific subtype available. Dentist, Plumber, Restaurant, AutoRepair all exist and all say more than the generic parent. Specificity is the whole point of a type system.FAQPage versus QAPage. They are not interchangeable. FAQPage is for questions you wrote and answered — a single authoritative answer each. QAPage is for user-generated question-and-answer content where multiple people may answer and answers can be voted on. Marking a forum thread as FAQPage, or your own FAQ as QAPage, is a type error.Organization or LocalBusiness, are self-serving and are not eligible for review enhancements. Marking up your own testimonials page will not produce stars.Article: supply datePublished, dateModified, a real author and a publisher. Google's guidance is to keep the headline reasonably short — around 110 characters is the conventional ceiling — and it should match the page's actual headline, not be a keyword variant of it.BreadcrumbList: the cheapest markup with a visible payoff, because Google displays the breadcrumb path in place of the URL. It must match the breadcrumb trail the user can actually see.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.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.
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).
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.
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.
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.
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.
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.
Run the JSON-LD Checker and get actionable results in minutes. Pay as you go — no subscription needed.
Check JSON-LD Schema →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.