Structured Data

What does your structured data actually say?

Search engines and AI models read your Schema.org markup as fact. This tool pulls every JSON-LD block out of your live HTML, validates it, and reports what is present, what is malformed and what is missing.

We fetch the page and parse its JSON-LD. Nothing is stored.

Every <script type="application/ld+json"> block on the page is extracted and parsed. Types are read from @type properties at every nesting level, and required-property checks follow Google's published rich result requirements. Microdata and RDFa are not parsed — JSON-LD is the format Google recommends and the one AI models handle most reliably.

The guide behind this tool Structured Data: The Schema Types That Actually Do Something Which Schema.org types earn rich results, how to connect them into a graph instead of isolated blocks, and the review markup that gets sites penalised. Read the guide · 5 min read →

What this tool checks

Every JSON-LD block on the page, extracted, parsed and checked against how Google and AI models actually use it.

  • Blocks found

    How many JSON-LD scripts are on the page and whether every one of them parses.

  • Organisation entity

    Whether an Organization, LocalBusiness or ProfessionalService node exists — the anchor everything else should attach to.

  • Connected graph

    Whether nodes reference each other with @id, or float as disconnected fragments.

  • Breadcrumbs

    BreadcrumbList replaces the raw URL in search results with a readable path. The easiest rich result to earn.

  • Question markup

    FAQPage and HowTo — the format most directly usable by AI answer engines.

  • Types declared

    The full list of Schema.org types found anywhere in the graph, at any nesting level.

  • Self-serving reviews

    aggregateRating on your own organisation is a documented cause of manual actions. We flag it.

  • Raw output

    The complete parsed JSON-LD, so you can see exactly what you are publishing.

How to read your result

A parse failure is the most urgent item. An invalid block is discarded entirely — a single trailing comma loses the whole thing, and nothing on the page tells you.

No organisation entity is the next priority. Without it, an AI model describing your business has to infer everything from marketing prose, and it will get things wrong with confidence.

A disconnected graph validates but underperforms. Three separate blocks say three unrelated things; three blocks joined by @id say "this organisation provides this service in these markets" — a claim a machine can retrieve and attribute.

If self-serving review markup is flagged, take it seriously. Google's policy on this is explicit, not a grey area, and ratings collected by you about you are ineligible. Move them to a Product or LocalBusiness node backed by genuine third-party collection, or remove them.

Why structured data matters more than it used to

For search: rich results

Structured data is what makes a result show a star rating, an FAQ accordion, a price, a breadcrumb trail or an event date. Those elements take up more space in the results page and consistently lift click-through, which is the actual mechanism — schema is not a ranking factor, it is a click-through factor.

For AI: unambiguous facts

This is the newer and increasingly larger reason. A language model reading your prose has to infer what your company is, where it operates and what it sells. A model reading your Organization node does not have to infer anything. When an AI answer engine states something about your business with confidence, structured data is often where that confidence came from.

Connect the graph

The most common mistake in otherwise correct implementations is publishing isolated blocks. An Organization block here, a Service block there, a BlogPosting somewhere else, none of them referencing each other.

Use @id to link them:

{
  "@type": "Service",
  "@id": "https://example.com/services/seo/#service",
  "provider": { "@id": "https://example.com/#organization" }
}

Now the service is attached to a specific organisation rather than floating unattached. A connected graph is what lets a search engine or a model answer "who provides this service and where are they" from your markup alone.

The types worth having

For most businesses, in order of value: Organization or LocalBusiness on every page, WebSite once, BreadcrumbList on every deep page, Service or Product on the relevant pages, FAQPage wherever you answer questions, and BlogPosting or Article on editorial content.

One thing not to do

Do not put aggregateRating on your own Organization node using reviews you collected yourself. Google's structured data policy treats self-serving organisation reviews as ineligible, and it is a documented cause of manual actions. Ratings belong on Product and LocalBusiness from genuine third-party review collection.

Frequently asked questions

Does structured data improve rankings?

Not directly. Google has been consistent that it is not a ranking factor. It changes how your result is displayed, and a result with an FAQ accordion or star rating gets clicked more than a plain blue link in the same position. The traffic gain is real; the mechanism is click-through, not position.

JSON-LD, Microdata or RDFa?

JSON-LD. Google explicitly recommends it, it sits in a single script tag instead of being woven through your HTML, and it survives template changes. There is no reason to start a new implementation in anything else.

Why does my markup validate but produce no rich result?

Valid markup is necessary, not sufficient. Google decides independently whether to show a rich result based on the query, the page's quality and its own confidence. It also requires that the marked-up content is visible on the page — marking up an FAQ that a user cannot see is a policy violation.

How much schema is too much?

There is no penalty for completeness, but there is a real cost to inaccuracy. Every property you add is a claim you are making. Mark up what is genuinely on the page, keep it in sync when the page changes, and do not add types speculatively hoping something triggers.

Other free tools

SEO & Speed Audit

Real Core Web Vitals from Google's API, plus live on-page checks against your actual HTML.

Tell us what you are trying to grow.

One team. Three offices. Twenty-six languages. Send us the problem and you get a senior answer — not a sales script.

A written proposal within one business day, in your language.