How to use the JSON Schema validator
- Paste your schema into JSON Schema (draft-07). The sample requires an
idandemailand allows only three role names. - Paste the document to check into JSON data.
- Read the result. Valid — the data conforms to the schema. means every rule passed.
- Otherwise, the Violations table has one row per problem: Path, Keyword and Problem.
If either box holds invalid JSON, the tool points at the line and column first.
What it does and when to use it
A schema describes what a valid document looks like: required fields, types, ranges, allowed values. Use this tool to check a sample API request before you send it, to see why a config file fails validation in CI, or to test a schema you are writing against good and bad examples. Because every violation is listed, not just the first, you can fix them all in one pass.
To get a starting schema from an example document, use the JSON Schema generator. To check that the data is valid JSON at all, use the JSON validator. For typed code from the same sample, see JSON to TypeScript.
How it works
The validator walks the data and the schema together, following the draft-07 validation vocabulary. It checks type, enum, const, number limits (minimum, exclusiveMaximum, multipleOf and the rest), string length (counted in characters, so an emoji is one), pattern, format, array rules (items, additionalItems, contains, uniqueItems, length limits), object rules (required, properties, patternProperties, additionalProperties, propertyNames, dependencies, size limits), and the combiners allOf, anyOf, oneOf, not and if/then/else. As draft-07 says, other keywords next to a $ref are ignored. Nothing leaves your browser.
Worked examples
The default schema with this data:
{"id": 0, "email": "asha@example", "roles": ["admin", "admin", "owner"], "name": "Asha"}
Not valid — 5 problems found.
id | minimum | Must be ≥ 1.
email | format | Must be a valid email.
roles | uniqueItems | Items 0 and 1 are identical; items must be unique.
roles[2] | enum | Must be one of "admin", "editor", "viewer".
name | additionalProperties | Property "name" is not allowed.
A conditional rule: if plan is "pro", then seats must be at least 5. The data {"plan": "pro", "seats": 2} gives seats | minimum | Must be ≥ 5.
The date "2026-02-30" against {"type": "string", "format": "date"} fails with Must be a valid date., because February has no 30th.
Limits and tips
- For
anyOf,oneOfandnot, you get one summary row, not the reasons inside each branch. Test the branches one at a time to see which rule fails. - Very deep or circular
$refchains stop after 200 levels with a message.
Frequently asked questions
Which JSON Schema version does it support?
Can it load a $ref from a URL?
Is "format" checked?
Which regex rules does "pattern" use?
How do I generate a schema from sample data?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.