Free SEO Tool
Schema Markup Validator
Paste a JSON-LD block or an entire HTML page and get a per-block report: whether the JSON parses at all, whether @context and @type are there, and which of the properties Google documents as required or recommended for that type are missing. Nothing is uploaded — the parse runs in your browser, so you can check staging pages and drafts that are not public yet.
How it works, plainly: this is a rule-based generator, not an AI model. Every result is assembled from tested formulas, templates and validators that run entirely in your browser — no model call, no cost, and nothing you type is uploaded.
- Free
- Reads a whole HTML page
- Handles @graph & arrays
- Runs in your browser
Field rules on file for: Article, Product, FAQPage, LocalBusiness, Organization, Person, BreadcrumbList, WebSite. Other types get the structural checks only.
How it works
- 01 Paste markup or a page
A bare JSON-LD object, or the full HTML — we pull out every <script type="application/ld+json"> block we find.
- 02 Every block is parsed separately
One broken block does not hide the others. @graph containers and top-level arrays are flattened so each node is judged on its own.
- 03 Structure first, then properties
Missing @context or @type is an error. Then each node is checked against the required and recommended properties for its type.
- 04 Fix the source, not the paste
If a block only parses after we strip a trailing comma, we say so — search engines do not perform that repair.
Next step
FAQ
Frequently asked questions
- Will valid markup get me a rich result?
- No tool can promise that, and this one does not. Valid structured data makes a rich result possible; whether one appears is Google's decision, based on the query, the device, the page's quality and its own judgement. What a validator can tell you is the part that is objectively checkable: whether the JSON parses, whether the type is declared, and whether the properties documented as required are present. Treat a clean report as removing a blocker, not as a prediction.
- What does this check that a JSON linter does not?
- Three things. It knows the schema.org shape — that @context and @type are structural requirements, not just any two keys. It knows which properties Google documents as required versus recommended for common types like Article, Product, FAQPage and LocalBusiness, and grades them differently: a missing required property is an error, a missing recommended one is a warning. And it looks inside nested objects, so a Product price declared under offers.price is recognised rather than reported as missing.
- Can I paste a whole page?
- Yes, and it is the better way to use this. Paste the full HTML source and every ld+json block on the page is extracted and checked, which catches the common failure that a validator pointed at one block will not: two blocks on the same page declaring conflicting or duplicate types, usually because a plugin and a theme each add their own.
- My markup is fine but shows an unknown type warning. Why?
- Because schema.org has hundreds of types and this tool carries field rules for the common ones. An unknown type is reported as a warning, not an error, and the structural checks still run on it. It means we did not check its properties — not that the type is wrong.
- Is anything uploaded?
- No. The extraction, the JSON parse and every rule run in your browser. Nothing you paste leaves the page, which is the point when the markup you need to check is on a staging site behind a login.