JSON Schema Lite
Validate JSON against a schema. Violations point at the exact value.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Live validation is on — the verdict updates as you type.
$ schema --check instance.json
Paste JSON and a schema above, or load the sample, and every violation lands here with its exact path, the instant it changes.
Capped at 100 violations — fix these first, then re-validate.
Validate against a schema in three steps
Paste both sides
Your JSON in the left editor, the schema it must satisfy on the right. The verdict runs as you type.
Read the violations
Every problem carries its exact path, like /users/2/email, so you can jump straight to the offending value.
Fix & re-run
Correct the JSON (or the schema) and watch the ledger shrink to zero. Copy or download the report.
Checking the shape, not just the grammar
Schema Lite tells you whether a valid JSON document matches the structure you expect. It covers a clearly-scoped subset of JSON Schema: types, required keys, additionalProperties, enum/const, numeric ranges, string lengths, and array/object size limits, and reports every violation with its exact path (like /users/2/email) so you can jump straight to the offending value. It is deliberately not the full spec: keywords it doesn't support are ignored per the JSON Schema rule, and the coverage line above the button states exactly what's active. It assumes its input is already valid JSON (run the Validator first if you're unsure), and everything runs locally, in a worker for large inputs.
Things to know
A required key is missing
The schema lists name as required, but the instance doesn't have it. The ledger names the exact path so you know which object is at fault.
{"role": "engineer"}A value has the wrong type
The schema expects a string but the value is a number. Type checks are the core of the lite subset. Load this and the violation points at the value.
{"name": 42}Unsupported keywords are ignored
Per the JSON Schema spec, unknown keywords never fail validation. A schema using $ref or anyOf won't error. It just won't enforce those parts. The coverage line states exactly what's active; $ref and combinators land in a planned v2.0 tool.
Assumes valid JSON
Schema Lite checks shape, not grammar. It expects its input to already parse as JSON. If you're unsure, run the syntax Validator first.
Try these
{"name": "Ada", "role": "engineer"}
{"type": "object", "required": ["name"]}A record that satisfies the schema should report valid.
{"role": "engineer"}
{"type": "object", "required": ["name"]}Set the instance to only role and the ledger flags the missing name.
{"name": 42}
{"type": "object", "properties": {"name": {"type": "string"}}}The schema wants a string; the value is a number.
pair this withCheck the syntax first → JSON Validator·Format either side → JSON Formatter·Generate data for a schema → Fake JSON Generator
Where to next
Frequently asked questions
Is my JSON uploaded anywhere?
No. Validation runs entirely in your browser (in a background worker for large inputs). Neither your data nor your schema ever leaves your machine.
What does "lite" mean?
A clearly-scoped subset of JSON Schema: types, required keys, additionalProperties, enum/const, numeric ranges, string lengths, and array/object size limits. Keywords we don't support yet are listed openly in the panel. We'd rather tell you what's out than pretend otherwise. The full validator (with $ref and combinators) is a planned v2.0 tool.
What happens to keywords you don't support?
They're ignored, per the JSON Schema spec. Unknown keywords never fail validation. So a schema using $ref or anyOf won't error; it just won't enforce those parts. The coverage line above the button states exactly what's active.
Why don't you just use Ajv?
Ajv is excellent but ~150KB gzipped, heavier than this entire site's philosophy allows for one tool. So the engine is hand-rolled on the same JSON grammar walker that powers the JSON Validator: zero dependencies, identical coordinates everywhere.