JSON Schema validation & revision review

Catch the breaking change before it ships.

Schema Labs compares two JSON Schema revisions and validates payloads against them — right in your browser. Every finding names the exact JSON path and why it was flagged.

  • Runs in a browser worker
  • No upload, no account
  • Free developer preview
purchase.schema.jsonv1 → v2+3−3
11{
22 "$schema": "https://json-schema.org/draft/2020-12/schema",
33 "title": "Sample Purchase",
44 "type": "object",
55 "properties": {
66 "id": { "type": "string" },
7 "status": { "type": "string", "enum": ["pending", "paid", "refunded"] },
8 "total": { "type": "number", "minimum": 0 },
7 "status": { "type": "string", "enum": ["pending", "paid"] },
8 "total": { "type": "integer", "minimum": 1 },
99 "currency": { "type": "string", "enum": ["USD", "VND"] }
1010 },
11 "required": ["id", "total"]
11 "required": ["id", "total", "currency"]
1212}
Ready to compare.Computed locally. No network upload.
Sample schemas · same engine as the playgroundOpen in playground

Revision review

Three labels. Each one says what to do next.

Comparison is directional: baseline to candidate. Every structural change is labelled by whether it narrows what the baseline used to accept.

Breaking
A recognized rule became more restrictive. Data the baseline accepted may now be rejected.
Example finding/properties/total/typeAllowed types narrowed.
Review
The effect needs a human decision. Changed advanced rules, such as composition, land here too.
Example finding/properties/status/enumEnum values were both added and removed.
Compatible
A recognized rule became more permissive. A local finding about that change, not a guarantee for the whole API.
Example finding/properties/status/enumAllowed enum values widened.
Validate payloadSample payload
{
  "id": "order_demo",
  "status": "paid",
  "total": "42.50",
  "currency": "USD"
}
Payload needs attention1 finding
Invalid
/totalmust be number

Payload validation

Test the payload against the contract.

Types, required fields, enums and constraints are checked by Ajv against JSON Schema 2020-12 or draft-07. Inputs are not coerced and missing fields are not filled in — a numeric string is still a string.

Validate a payload

Built with restraint

A tool, not a black box.

Deterministic checks and explicit limits. This is what runs, where it runs, and what it leaves out.

Engine
Ajv, with JSON Schema 2020-12 and draft-07.
Where it runs
A browser worker in this tab. Documents are not uploaded.
References
Resolved within the document. Remote references are never fetched.
Limits
512 KB of UTF-8 per editor. A check past 8 seconds is stopped.
Advanced rules
Changed composition and other advanced rules are flagged for manual review.
Reports
JSON with findings, timestamp and mode — not your source documents.
Not included
Accounts, hosted CI pipelines or third-party data tracking.
Availability
Free to use as a developer preview.

Make the next change
a deliberate one.

Start with the example. Then bring your own contract.