Developer Tools

JSON Schema Validator

Validate JSON against a documented Draft-07 schema subset in your browser. Inspect error paths, use local nonrecursive references and download a report. Unsupported features produce no verdict.

Your content stays on your device Free, with no account
Check your data against its rules Draft-07 subset · local worker

Need several developer steps together? Open Developer Studio →

Per input: 100,000 UTF-16 units, 20,000 values, 64 nested containers. Up to 1,000 schema nodes. Validation stops at the first failing path; a 5-second limit includes worker startup.

Ready. Paste JSON data and a supported schema.

Supported rules

Types, enum/const, numeric bounds, string lengths and patterns, properties/required/additionalProperties, patternProperties/propertyNames, array items/tuples/contains/uniqueItems, size limits, allOf/anyOf/oneOf/not and if/then/else. Local nonrecursive JSON Pointer references and definitions are supported.

Unsupported features are rejected: format, multipleOf, dependencies, $id, $anchor, remote/recursive references, $defs and newer drafts. References use ASCII pointer paths; percent-encoded references are not supported. Constraints alongside $ref are rejected. Annotation keywords do not change data.

Numbers use binary64. Unsafe integers, non-finite values and nonzero underflow are rejected; ordinary decimal rounding still applies. Inputs are never coerced, defaulted or modified.

JSON Schema Draft-07 reference ↗
A FEW SIMPLE STEPS

How to use JSON Schema Validator

  1. Paste JSON data and a supported Draft-07 schema, or load the example.
  2. Review the supported-feature list. Remote schemas, newer drafts and unsupported keywords are rejected rather than ignored.
  3. Select Validate JSON. Review a match/mismatch report or an input/schema error with no verdict. Cancel or edit to stop pending work.
  4. Copy or download the report. Reports may contain data or schema fragments in diagnostic messages, so review before sharing.
PRIVATE BY DESIGN

Why use this tool?

Validation runs locally in a disposable worker with a self-hosted interpreter. It requires no upload, account, external reference lookup or unsafe code generation. Inputs are never defaulted or coerced, and edits clear stale verdicts.

Tool inputs stay in your browser. Only your theme preference is saved on this device.

A few things worth knowing

Does this support every JSON Schema feature?

No. This is a strict Draft-07 subset. It supports types, enum/const, numeric bounds, string lengths/patterns, object property rules, array item/tuple rules, contains/uniqueItems, size limits, boolean schemas and conditional/combinator rules. Unsupported or unknown keywords are rejected. Format, multipleOf, dependencies, IDs, anchors, remote/recursive references and newer-draft keywords are not supported. See the workspace list before relying on a verdict.

How are schemas checked?

An explicit supported-keyword and shape check runs before data validation. Malformed rules, duplicate keys, invalid regular expressions, unresolved references and unsupported features produce an error with no verdict. This is not a complete meta-schema validation service. Title/description/comment/default/examples/readOnly/writeOnly are accepted as annotations and do not modify data.

Which references can I use?

Use local nonrecursive JSON Pointer references such as #/definitions/person. Definitions must be included in the pasted schema. References use ASCII pointer paths with ~0 and ~1 escapes; anchors and percent-encoded references are not supported. Schema/reference graph cycles are rejected, even in unused definitions. Validation siblings alongside $ref are rejected; put constraints in the referenced schema. No URL is fetched.

Are all validation errors listed?

The engine stops at the first failing path. Combinators can add several contextual diagnostics, so this is not a list of every invalid field. Up to 100 diagnostics are shown, with instance and schema locations. Data that fails a supported schema gets a mismatch verdict; processing errors and unsupported schemas get no verdict.

How are numbers and object keys handled?

Validation uses JavaScript binary64 numeric semantics. Unsafe integers, non-finite values and nonzero underflow to zero are rejected in both inputs. Ordinary decimal rounding can still occur, so this tool is not an arbitrary-precision numeric validator. Duplicate JSON keys are rejected. Objects are represented internally without inherited properties so names such as constructor or __proto__ remain own data.

Which library and limits apply?

The engine is self-hosted @cfworker/json-schema 4.1.1 (MIT), selected because it interprets schemas without eval/new Function. Each input accepts 100,000 UTF-16 units, 20,000 values and 64 nested containers; schemas are limited to 1,000 nodes and patterns to 2,000 units. A five-second deadline includes worker startup. Cancel, edits or page exit terminate work. Errors never expose a stale or partial verdict.