Schema markup checker: which validator to use, and how to read what it tells you

Two tools answer two different questions. Here is which to run when, how to read errors against warnings, and how to validate a whole site instead of one URL.

Published by AI Knows Us · Updated 12 October 2026

Use two checkers, because they answer two different questions. Google's Rich Results Test tells you whether a page qualifies for a rich result in Google and lists the required properties you are missing. The Schema Markup Validator at validator.schema.org tells you whether your markup is correct against the schema.org vocabulary itself, including types Google does not use for rich results. Run the Rich Results Test when you care about how the page appears in Google, run the Schema Markup Validator when you care about whether the data is right, and then watch the Enhancements reports in Search Console, because those are the only reports based on your actual live pages rather than on a single test fetch.

This page covers which checker to use for which job, how to read errors against warnings, the problems a checker reliably catches, and how to validate at scale instead of one URL at a time. Both tool links above were checked on 10 October 2026.

The four checks, and the question each one answers

CheckQuestion it answersRun it
Rich Results TestIs this page eligible for a Google rich result, and which required properties are missing?Before release, on one URL or on a pasted code block
Schema Markup ValidatorIs the markup valid schema.org, with correct types, properties and nesting?Whenever you use a type outside Google's supported list, or when the Rich Results Test says nothing is detected
Search Console Enhancements reportsWhat does Google find on my live pages, across the whole site, over time?Weekly, and after every template change. Search Console is free
Bing URL InspectionWhat does Bing see on this URL, including schema issues?Alongside the Google checks, since Bing's index feeds other assistants. See Bing Webmaster Tools and the Bing webmaster documentation

The pairing matters. A page can be perfectly valid schema.org and still show no rich result, simply because Google does not produce a rich result for that type. Equally, a page can pass the Rich Results Test and contain a property you have misspelled, because that test only reports on what it needs for the feature.

How to run each check properly

  • Rich Results Test, by URL. Paste the live URL. Choose the user agent, because the mobile and desktop crawls can differ on sites that serve different markup. Read the detected items, then open each one and work through the issues list. The rendered HTML tab shows you what the crawler received, which is where you discover that your markup was injected too late.
  • Rich Results Test, by code. Paste the JSON-LD block itself. This is the right mode for a page that is not published yet, for a staging site behind a login, and for checking a block you have just written before it goes anywhere near a template.
  • Schema Markup Validator. Paste a URL or the code. It reports the full structure it parsed, so use it to confirm nesting: that the address really is inside the organisation, that the offer really is inside the product, and that your identifiers tie entities together as you intended.
  • Search Console. Open the Enhancements section and read the valid, warning and error counts per type, then use the example URL lists. This is the report that catches the problem affecting four thousand pages rather than the one you happened to test.

Errors, warnings, and what each one is worth

  • An error means the feature is off. A missing required property stops eligibility for that rich result. Fix every error, and fix it in the template rather than on the page.
  • A warning means a recommended property is absent. The page can still qualify, and adding the recommended property usually makes the result richer or more accurate. Work through warnings in order of how many pages they affect.
  • Nothing detected is the most useful message of all. It almost always means one of four things: the markup is not in the response the crawler received, the JSON has a syntax error, the script tag is missing its application/ld+json type, or the page you tested is not the page you edited.
  • Valid and still no rich result in search means eligibility rather than entitlement. Google decides per query whether to show the feature, and the structured data gallery in Google's introduction to structured data, checked on 10 October 2026, is the list of types that can produce one at all.

The seven problems a checker reliably catches

ProblemHow it shows upFix
Invalid JSONNothing detected, or a parse errorA trailing comma or a smart quote from a word processor. Generate the block from data instead of typing it
Markup and page disagreeWarning or manual spotting: price in markup differs from the price shownPopulate both from the same field. Every value in the markup should be visible somewhere on the page
Missing required propertyError naming the propertyAdd it in the template, then revalidate one example of each page type
Wrong type for the pageValid markup, no eligibilityProduct on product pages, Article on editorial, LocalBusiness on location pages. One type per page type
Two blocks contradicting each otherMultiple detected items of the same typeOne block per entity per page, with a stable identifier
Markup injected by JavaScript too lateNothing detected by URL, detected when the code is pastedRender it server side or at build time so it is in the first response
Review markup on the wrong pageError or ineligibility on self serving reviewsRead the eligibility rule first, which our review schema guide sets out

A block to test with

Paste this into either checker, replace the values, and you have a working baseline to compare your own output against.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#org",
  "name": "Example Supplies",
  "url": "https://example.com/",
  "logo": "https://example.com/images/logo.png",
  "sameAs": ["https://www.linkedin.com/company/example"],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+44 20 7000 0000",
    "contactType": "customer support",
    "areaServed": "GB"
  }
}
</script>

Checking at scale, not one URL at a time

  • Crawl your own site and extract the markup. Any crawler that can report structured data per URL turns a one page check into a site wide inventory. Export it and sort by page type.
  • Validate at build time. If your markup is generated from data, add a test that parses every generated block and fails the build on invalid JSON or a missing required property. This stops the problem reaching production at all.
  • Keep one example URL per template on a watch list. Ten URLs revalidated monthly covers a site of any size, because the markup lives in the template.
  • Diff after every release. Compare the extracted markup before and after a deploy. Most structured data regressions arrive with an unrelated template change.

The monthly routine

  • Open Search Console Enhancements and clear anything counted as an error.
  • Revalidate one URL per template in the Rich Results Test.
  • Run the Schema Markup Validator on the home page and the main money page, to confirm identifiers still tie your entities together.
  • Spot check that a price, a stock status and an opening time in the markup match what the page shows today.
  • Inspect one URL in Bing Webmaster Tools, since a second engine's view catches different problems.

This page covers validating and monitoring structured data. For what structured data is and the types worth adding first, see what schema markup changes. For copyable blocks by type, see LocalBusiness and Organization. On WordPress, see schema plugins for WordPress.

What gets asked about schema markup checker

What happened to the Structured Data Testing Tool?

Google retired it and split the job in two. Eligibility checking moved to the Rich Results Test, and vocabulary checking moved to the Schema Markup Validator at validator.schema.org, which schema.org hosts. Both were checked on 10 October 2026.

Which checker should I use first?

The Rich Results Test, because it tells you whether the page can produce the result you want. Move to the Schema Markup Validator when the Rich Results Test detects nothing, or when you are using a type outside Google's supported list.

Can I check markup before the page is live?

Yes. Both tools accept a pasted code block, which is the right way to validate a new template or a staging page behind a login.

My markup is valid but I see no rich result. What next?

Confirm the type can produce a rich result at all, confirm the page is indexed, then check Search Console for the type to see whether Google has processed the live page. Google decides per query whether to display the feature, so a valid page is eligible rather than entitled, and the gain in clarity for every system reading the page holds either way.

How often should I validate?

One URL per template monthly, plus a full check after any template or plugin change. Markup breaks during releases far more often than it breaks on its own.

Valid markup, and then what an assistant makes of the page

A validator confirms that your markup parses and that eligible rich results can show. It says nothing of how an assistant, reading the same page, will describe the business.

Both checks are worth having, and they answer different questions. After the validator is green, ask an assistant about the entity the markup describes. AI Knows Us does that across several assistants and shows which names and facts come back, so you can set them beside the schema you wrote.

Read next

Or browse the whole archive.

See what AI says about you.

The first scan is free, it needs no account, and it asks the questions your buyers ask.

Free. No card. We ask 5 real buyer questions on 2 AI apps.

Already sure you want this? Join the waitlist. We open on 31 October 2026. It costs an email address. No card, and nothing is charged. Or talk to a person if you have a question first. Or read how we fix what it finds.