Skip to content
{ }JSON Formatter

JSON Schema Validator

Validate a JSON document against a JSON Schema — see every violation with its exact path and reason. Draft-07 and 2020-12 supported, formats checked.

JSON Schema
JSON data to validate

What a JSON Schema checks

A JSON Schema is itself JSON that describes the shape your data must have: which properties are required, each field's type, numeric minimum/maximum, string minLength and pattern, allowed enum values, array item schemas, and whether additionalProperties are permitted. This validator compiles your schema and reports every place the document violates it — not just the first.

Reading the errors

Each row shows an instance path (/age, /items/2/price) and the reason: should be integer, is missing required property "email", has an unexpected property "extra", must be equal to one of the allowed values. The load-the-sample button demonstrates all of these at once — a negative age, a malformed email, an out-of-enum role, and a stray property.

Formats and drafts

String format keywords — email, date-time, uri, uuid, ipv4 and more — are checked (via ajv-formats). Draft-07, 2019-09 and 2020-12 schemas all work; add "$schema" to pin one. Need to generate a starting schema from an example document instead? Infer the types with the code generators, or explore the sample in the tree viewer first.

Frequently asked questions

Which JSON Schema drafts are supported?

The tool uses ajv, which supports draft-07 and the 2019-09 and 2020-12 drafts. Add a $schema keyword to your schema to pin a draft explicitly; otherwise ajv applies sensible defaults.

What do the error paths mean?

Each error shows the instance path into your data — for example /items/2/price points at the price field of the third array element. (root) means the top-level value itself failed a constraint.

Are string formats like email and date validated?

Yes — ajv-formats is enabled, so format: "email", "date-time", "uri", "uuid", "ipv4" and the rest are checked. Formats are assertive here (a bad email is an error), which is the useful behaviour for a validator.

Why does additionalProperties matter?

With "additionalProperties": false, any property not declared in the schema is an error — useful for catching typos and stray fields. Remove it (or set it to a schema) to allow extra properties.

Is my schema or data uploaded anywhere?

No. Compilation and validation run entirely in your browser via ajv. Nothing is sent to a server, so validating internal schemas and payloads is safe.