JSON Schema Validator

Validate JSON against a JSON Schema with detailed per-path error reporting.

Provide schema and data to validate.

About JSON Schema Validator

JSON Schema Validator checks a JSON document against a JSON Schema and reports any violations with a JSON Pointer path to the offending field — `/users/2/email must match format "email"`. All major JSON Schema drafts are supported (Draft-04, 06, 07, 2019-09, 2020-12) and the validation engine is AJV under the hood, so the error messages match what your CI pipeline or production code will produce.

Reach for it whenever you have a schema and a payload and you need to know whether they agree: validate an API response against the OpenAPI schema for the endpoint, check a config file against its published schema, debug why one document validates locally but fails in production, or sanity-check a fixture before checking it in. JSON Schema Generator is the inverse — given a sample document, produce a schema. Validator is the consumer of that schema; Generator is the producer.

Examples

Input
schema: {"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"}}}
doc: {"email":"not-an-email"}
Output
invalid:
  /email — must match format "email"

Single error reported with the JSON Pointer path. Toggle *all errors* to keep validating after the first failure.

Frequently asked questions

Which JSON Schema drafts are supported?

Draft-04, Draft-06, Draft-07, 2019-09, and 2020-12. The schema's `$schema` keyword is honoured automatically; without it the validator falls back to Draft-07, the most common in the wild.

How is this different from JSON Schema Generator?

Validator takes a schema and a document and reports errors; Generator takes a sample document and produces a schema. They are paired but opposite directions — generate once, validate many.

Are format keywords like `email` and `date-time` enforced?

Yes when the *strict formats* option is enabled. By default JSON Schema treats `format` as advisory; the validator can be set to enforce common formats (email, date-time, ipv4, ipv6, uri, uuid) or to accept any string regardless.

Will it follow `$ref` references?

Internal `$ref` (within the same schema document) is resolved automatically. External `$ref` (pointing to a different file or URL) is not fetched — the tool runs entirely in the browser and does not make network requests. Inline external definitions before validating, or paste the bundled schema if you have one.