Paste your JSON-LD structured data and check it for syntax errors, missing required properties, and the recommended fields that determine whether Google can show a rich result. Everything runs in your browser - nothing you paste is uploaded, which matters when you're checking a client's markup before it goes live.
Schema.org JSON-LD Validator
LiveWhat this checks
| Level | What it means |
|---|---|
| Error | Invalid JSON, a missing @type or @context, or a required property absent. Google will not generate a rich result from this |
| Warning | A recommended property is missing. The markup is valid, but the rich result may be less complete or less likely to appear |
| Pass | Required properties present and the structure parses cleanly |
Required vs. recommended - the distinction that matters
Google's documentation separates properties into two tiers, and confusing them wastes a lot of time. Required properties are exactly that: omit one and the rich result simply won't be generated. Recommended properties don't block eligibility, but they populate the parts of a rich result that make it larger and more clickable - a star rating, a price, a preview image.
The practical consequence: a page can pass validation and still show no rich result, because eligibility also depends on content policy, page quality, and Google's own judgement about whether the result is useful for a given query. Valid markup makes you eligible; it doesn't make you guaranteed.
Step-by-step guide
- Copy the whole block including the script tag if that's easiest - the tool strips
<script type="application/ld+json">wrappers automatically. - Fix errors before warnings. A missing required property means no rich result at all; a missing recommended one means a smaller rich result. There's no point polishing the second while the first is broken.
- Check nested objects too. An
Offerinside aProduct, or aPersoninside anArticle, has its own requirements - this tool walks into them rather than only checking the top level. - Confirm with Google's Rich Results Test afterwards. This tool checks structure; only Google can tell you what it will actually render for a live URL.
Common mistakes
2026-01-15 or with a time and offset. "January 15, 2026" is not parsed, and the property is silently ignored rather than flagged."price": "$1,299.00" is invalid. Use "price": "1299.00" with the currency in priceCurrency - no symbol, no thousands separator.Frequently asked questions
Is anything I paste here uploaded?
No. Parsing and validation happen entirely in JavaScript in your own browser - there is no server request and nothing is stored. This is a genuine difference from URL-based validators, which necessarily send the page to a third party. If you're checking unreleased markup or a client's site before launch, that distinction matters.
My markup passes here but shows no rich result. Why?
Valid markup makes a page eligible; it does not guarantee display. Google also weighs content quality, whether the markup matches visible content, and whether a rich result helps for that query. Newly published pages often take days or weeks to show one, and some types are only shown in certain countries or for certain queries.
Should I use JSON-LD, Microdata or RDFa?
JSON-LD, which is what this tool validates and what Google explicitly recommends. It sits in a single script block separate from your markup, so it can be added, changed or removed without touching the HTML - a practical advantage that becomes obvious the first time you need to update it across a template.
Can I have several schema types on one page?
Yes, and it's normal - an article page commonly carries Article, BreadcrumbList and Organization together. Either use separate script blocks or a single block with an @graph array. What to avoid is two blocks describing the same thing, which is usually a plugin duplicating something you also wrote by hand.
Does structured data improve rankings?
Not directly - Google has been consistent that it isn't a ranking factor in itself. What it does is make a result larger and more informative in the listing, which tends to raise click-through. That indirect effect is real and worth having, but expecting a position change from adding markup alone will disappoint.
Which types does this validate?
Twenty-two of the most commonly used types, including Article, Product, Offer, FAQPage, HowTo, Recipe, Organization, LocalBusiness, Event, BreadcrumbList, VideoObject, Review, JobPosting, Course and SoftwareApplication. Types outside that list still get a full syntax check - you'll see a note that no property rules were applied rather than a false pass.
Related tools
See the full list of Generators, or try: