Schema validator
Free public tool that extracts and parses the structured data on any URL, reports every schema type detected, and shows each JSON-LD block in full.
Last updated 2026-08-06
Summary#
The Free Schema Markup Validator fetches a page, extracts every JSON-LD block plus any Microdata and RDFa, parses each one, and reports the schema types it found along with the full source of each block. It runs at /free-tools/schema-validator with no account.
Purpose#
Structured data is how you tell a machine what a page is rather than making it guess. It decides whether you are eligible for rich results in Google, and it is one of the strongest signals answer engines use to identify your entities and quote you accurately.
It is also invisible. Nothing on the rendered page changes when a template stops emitting JSON-LD, or when a stray comma breaks the JSON so the whole block is discarded. This validator makes that visible in one fetch.
Overview#
The tool requests the page with a realistic browser user agent, because many sites return 403 to an obvious bot and that used to look identical to "no structured data". If the first request fails it retries with a Googlebot user agent.
From the HTML it extracts every <script type="application/ld+json"> block and attempts to parse each as JSON. It counts Microdata items and RDFa vocabularies separately. Types are collected deeply, following @graph, arrays and nesting, so a single block declaring several entities reports all of them.
Benefits#
- Reports what your page actually publishes, block by block, rather than a pass or fail.
- Retries with a second user agent, so bot protection does not masquerade as missing markup.
- Collects types through
@graphand nested objects, which is where most real markup lives. - Shows each block's full source so you can copy it into an editor.
- No account, no credits.
Use Cases#
- Confirming a plugin works. You installed schema markup; this shows whether it reaches the served HTML.
- Debugging a broken block. A parse error names the character position.
- Auditing a competitor's markup. See exactly which types they publish.
- Pre-launch check on a template. Run it on one page of each content type.
Requirements#
A public URL returning HTML. Private, loopback and internal hosts are refused.
Permissions#
Anyone. No account, plan or role. A shared hourly fair-use limit applies per IP address across the free tools.
Cost#
Free. Zero credits.
Navigation Path#
metricvaultai.com → Free tools → Schema Validator
The page is at /free-tools/schema-validator.
Inputs#
| Field | Label / placeholder | Required | Valid value | Notes |
|---|---|---|---|---|
| URL | example.com | Yes | A bare domain or a full URL | https:// is added if omitted. Enter the full path of the page whose markup you want to see. |
Helper line: No signup · No credit card · Unlimited free use.
Step-by-Step Guide#
- Open
/free-tools/schema-validator. - Enter the page in the field marked
example.com. - Select Validate Schema. The button reads
Validating…and the result area showsFetching page and scanning structured data…. - Check the four headline numbers, confirm the detected types are the ones you expect, then read any block marked
✗ Invalid.
Reading the Results#
The four headline numbers.
| Tile | Meaning |
|---|---|
| Total Blocks | How many application/ld+json script blocks were found |
| Valid JSON-LD | How many of those parsed successfully |
| Invalid | How many failed to parse. Red when above zero |
| Microdata items | How many Microdata items were detected |
Detected Schema Types (N). A chip per type name found across all valid blocks, collected through @graph, arrays and nested objects. This is the list to check against what you intended to publish.
Per-block cards. One card per JSON-LD block, headed JSON-LD Block #N with a status pill of ✓ Valid or ✗ Invalid. A failed block shows Parse error: <message> with the JSON parser's own description. A valid block lists its types as chips and then shows the block's source, formatted, up to roughly 60,000 characters.
No structured data. When no JSON-LD is found the page shows an amber card:
No JSON-LD blocks found. This page has no <script type="application/ld+json"> tags. Consider adding structured data to unlock rich results in search engines.
A blocked fetch. If the page cannot be read at all, the tool says so rather than reporting an empty result:
The page returned HTTP <n>, so its HTML could not be read. This is usually bot protection on the site, not missing structured data — check the URL in a browser or Google's Rich Results Test.
That distinction matters. "We could not read it" and "there is nothing there" are different answers and the tool never conflates them.
Examples#
Example: A product page reports Total Blocks 3, Valid JSON-LD 2, Invalid 1. The invalid card reads Parse error: Unexpected token } in JSON at position 412. A template variable rendered empty and left a trailing comma. Everything in that block, including the Offer pricing, was being discarded by every consumer.
Example: A publisher expects Article, Organization and BreadcrumbList and the chips show only Organization. The article schema is emitted by a plugin that runs client-side, so it never reaches the served HTML that crawlers read.
Screenshots#
" chip row.)
Tips#
- Compare the detected types against the types your page should have. A missing chip is more informative than a green count.
- If types you can see in your CMS do not appear here, the markup is probably being injected by JavaScript after load.
- Copy a block's source into a JSON formatter when a parse error's position is not obvious.
- Run AI Overview checker on the same URL. Structured data is worth 20 of its 100 points, and this tool tells you whether that markup is real.
Best Practices#
- Use JSON-LD rather than Microdata or RDFa for new markup. It is the format Google recommends and the one this tool inspects in most depth.
- Publish types that describe the page honestly. Marking a blog post as a
Productto chase a rich result is the kind of thing that gets markup ignored. - Keep one canonical source of truth for schema. Two plugins both emitting
Organizationproduce contradictory blocks. - Validate against Google's Rich Results Test as well before you rely on rich result eligibility. This tool tells you what you publish; Google decides what it will use.
Common Mistakes#
- Reading
✓ Validas "correct". It means the JSON parsed. It does not mean every required property for that type is present. - Assuming a 403 means no markup. The tool names that case explicitly. Read the message before concluding anything.
- Testing only the homepage. Schema is usually per template.
- Expecting rich results because the markup exists. Eligibility is a precondition, not a promise.
Limitations#
- One URL per run. No crawl.
- Server-rendered HTML only. Schema injected by JavaScript after load is not seen, and the tool flags a page that looks client-rendered.
- The free page shows parse validity, not property completeness. The underlying check does compare common types against their required and recommended properties, but the public result surfaces block-level parse status and detected types rather than a per-property error list. For required-property feedback, use Google's Rich Results Test or the in-app Schema Tool.
- Microdata is reported as a count only, and RDFa is not displayed on this page.
- Block source is shown up to roughly 60,000 characters, then truncated.
- No export, history, scheduling or recommendations panel. See Free tools, no account needed.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
That does not look like a valid domain. Try example.com | The input is not a plausible hostname | Enter example.com or a full URL |
Validation failed: Schema check failed: <message> | The request could not be completed | Confirm the URL loads in a browser |
Validation failed: Unexpected response from validator | The response did not contain a result payload | Retry; if it persists, check the URL in a browser |
| The blocked-fetch note about HTTP status and bot protection | The site refused both user agents | Test the URL in Google's Rich Results Test to confirm the markup exists |
No JSON-LD blocks found on a page that has schema in the CMS | The markup is injected client-side | Move it into the server-rendered HTML |
A block shows ✗ Invalid with a position | A syntax error in the JSON, often a trailing comma | Fix the template that generates it |
Hourly fair-use limit reached (100 light-tool calls/hour)… | Too many free-tool runs from one network within the hour | Wait for the next hourly reset |
FAQs#
Which formats does it detect? JSON-LD in depth, with Microdata counted and RDFa detected server side. JSON-LD is the format to use for new markup.
Does ✓ Valid mean my rich result will show? No. It means the block is syntactically valid JSON. Rich result eligibility also depends on the required properties for the type and on Google's own judgement.
Why did it find fewer types than my plugin claims to add? Either the markup is added client-side and never reaches the served HTML, or a block failed to parse and was discarded. The Invalid count answers which.
Can I validate a page behind a login? No. The tool fetches the page as an anonymous visitor.
Is it really free? Yes. No account, no card, no credits, and the page's own helper line says Unlimited free use.
What does the in-app version add? Schema Tool runs the same extraction inside your workspace, where the result is saved to your history and can be exported, and surfaces the required-property validation alongside the detected types.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.