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
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Sample Purchase", "type": "object", "properties": { "id": { "type": "string" }, "status": { "type": "string", "enum": ["pending", "paid", "refunded"] }, "total": { "type": "number", "minimum": 0 }, "status": { "type": "string", "enum": ["pending", "paid"] }, "total": { "type": "integer", "minimum": 1 }, "currency": { "type": "string", "enum": ["USD", "VND"] } }, "required": ["id", "total"] "required": ["id", "total", "currency"]}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.
{
"id": "order_demo",
"status": "paid",
"total": "42.50",
"currency": "USD"
}/totalPayload 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 payloadBuilt 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.