Validation controls
Defaults favor correctness and useful diagnostics. Format assertions are explicit because Draft 2020-12 treats format as annotation unless a validator chooses assertion semantics.
Validate JSON against modern schemas without surrendering precision or privacy. Load a whole schema pack, resolve local references, preserve integers beyond JavaScript’s safe range, validate documents or records in bulk, and inspect every failure with exact instance and schema pointers.
Defaults favor correctness and useful diagnostics. Format assertions are explicit because Draft 2020-12 treats format as annotation unless a validator chooses assertion semantics.
References are resolved from the root schema, nested $id resources, anchors and files you explicitly load. Remote schemas are never fetched behind your back.
The example is loaded. Validate to see exact instance paths, schema paths and audit findings.
Create a portable validation record for debugging, CI handoff or issue tracking. Exports contain diagnostic metadata and value previews, not a hidden cloud copy of your source data.
Search validation failures, inspect exact pointers, and review schema-level warnings before shipping.
| Doc | Instance pointer | Keyword | Message | Schema location |
|---|---|---|---|---|
| Validate to populate the error navigator. | ||||
This tool separates three questions that are often mixed together: is the schema itself coherent?, can every reference be resolved?, and does the JSON instance satisfy the resulting contract? You get a distinct audit trail for each layer.
$schema. Force a draft only when validating legacy material that lacks a declaration.Draft 2020-12, Draft 2019-09 and Draft-07 have materially different array and reference behavior. Draft 2020-12 uses prefixItems for tuples and changed items; Draft 2019-09 and Draft-07 still support array-form items. The audit warns when a schema uses a keyword that its selected dialect will ignore.
Load all related schema files together. Relative file references such as common.schema.json#/$defs/id, absolute $id resources, JSON Pointer fragments, $anchor, Draft 2020-12 $dynamicRef/$dynamicAnchor, and Draft 2019-09 recursive references are resolved locally. For privacy and reproducibility, this tool does not fetch missing remote schemas from the internet.
Most browser JSON tooling silently rounds integers above 9,007,199,254,740,991. OneFreePlace keeps the original numeric token and performs integer, range, enum, const, uniqueness and multipleOf checks with exact decimal arithmetic. IDs such as 9007199254740993123456789 are therefore not changed before validation.
In modern JSON Schema, format can be annotation-only unless format assertion is explicitly enabled. The Formats control makes that decision visible. When enabled, this standalone version asserts common formats including date, time, date-time, duration, email, hostname, IPv4, IPv6, UUID, URI, URI-reference, regex, JSON Pointer and relative JSON Pointer. Unknown format names remain annotations and produce an audit warning instead of a false rejection.
Smart mode reduces combinator noise by showing the parent anyOf/oneOf failure plus the closest branch. Complete mode includes branch failures for deep debugging. Either mode preserves JSON Pointer instance paths and schema locations.
Root array = records validates each array element independently against the root schema. JSON Lines validates each non-empty line as a separate document and records its source line. This is different from validating the root array itself as one JSON instance.
Parsing, reference resolution, schema auditing, validation and report generation run locally in your browser. No account is required. The validator intentionally refuses unresolved remote references instead of silently making network requests. Custom vocabularies and unknown format names are treated as annotations unless they use supported standard validation keywords.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer", "minimum": 9007199254740993 },
"email": { "type": "string", "format": "email" }
},
"additionalProperties": false
}