JSON Schema Validator
Validate the contract behind a JSON document, including required fields, value types, bounds, arrays and conditional rules. This tool first checks the schema itself, then evaluates data in a separate worker. Its declared Draft 7 local-pointer profile accepts only supported rules and references to schema positions inside the same document.
Key features
- Validate the schema against an included official Draft 7 meta-schema before evaluating data
- Check required/type/properties, array items, enum/const, bounds and allOf/anyOf/oneOf/if conditions
- Resolve local JSON Pointer references, including escaped property names and boolean schemas
- Distinguish data invalidity, input/profile errors and indeterminate timeouts or cancellation
- Reject duplicate JSON keys and numeric literals that would round to another decimal value
- Save CSV/JSON verdicts and up to 100 diagnostics with total and omitted counts
How to use
- Choose the fixed Draft 7 local profile and paste or read schema and data JSON.
- Declare the Draft 7 $schema identifier on object schemas; use only in-document pointer references.
- Run validation and inspect the result stage and instance/schema JSON Pointer paths.
- Correct inputs and rerun. Input changes remove the previous result.
- Download CSV or JSON reports; preview pages never alter the retained report.
Use cases
- Check API examples for missing required fields or unexpected properties
- Test conditional requirements for different record categories
- Validate array item types, tuple sizes and duplicate items
- Review a schema migration while unsupported keywords are reported explicitly
Frequently asked questions
Which JSON Schema dialect is supported?
The Draft 7 local-pointer profile only. Object root schemas must declare http://json-schema.org/draft-07/schema# or its HTTPS equivalent. Boolean roots use the selected Draft 7 profile. Draft 2019-09/2020-12, unknown keywords and format assertions are rejected rather than silently skipped; this is not a claim of complete Draft 7 support.
Can schemas refer to another URL or a named identifier?
No. Only # and #/… references to actual schema positions in the current document are accepted. $id, remote/URN/file references and named anchors are rejected. Reference resolution never makes network requests. Conflicting validation keywords next to $ref are rejected because Draft 7 would ignore those siblings.
Are descriptions, defaults and examples validated as schema rules?
They are recognized annotations and are counted, not applied as data constraints. Default values are not inserted. readOnly/writeOnly and contentMediaType/contentEncoding are also annotations, without access checks or content decoding. Objects inside defaults/examples are not mistaken for schemas.
Why might valid JSON be rejected before validation?
The parser rejects duplicate decoded keys, unpaired Unicode surrogates, oversized/deep inputs and numbers outside the supported precision profile. Nonfinite, overflow/underflow and literals whose shortest decimal representation changes on parsing are rejected. Values above the safe integer magnitude are outside scope; ordinary decimals use their shortest decimal values.
How are expensive schemas and cancellation handled?
Every run uses a fresh worker. A 4-second main-thread watchdog terminates it; evaluation/depth limits can stop it sooner. Timeout, engine failure and cancellation are indeterminate, never proof that the data is invalid. There is no synchronous fallback when workers are unavailable.
Does a report contain every possible error?
A completed run retains the interpreter’s first 100 returned diagnostics and its total count; additional diagnostics are explicitly counted as omitted. Alternative branches may be represented by a combination error, not exhaustive nested detail. JSON Pointer paths are preserved; unavailable schema positions are marked instead of guessed. Diagnostic source messages are in English. Each diagnostic message is retained up to 512 characters.
Privacy
Schema, JSON data and reports remain in current page memory. References are never fetched, no inputs are uploaded or automatically saved, and downloaded reports may contain your field names and diagnostic text.
Comments & questions