json‑schema‑compat

Old schema vs new schema → an honest compatibility verdict.

Your schemas never leave this device — the check runs locally, with zero network requests.
Old schema currently deployed / what stored documents were validated against
New schema the proposed next version
0 breaking 0 review 0 safe
Paste both schemas above to check them.

What this tool does — and its honest limits

What it does. json-schema-compat compares two versions of a JSON Schema and returns a verdict — compatible, breaking, or needs manual review — with every detected change listed by JSON-pointer path (/properties/email/type) so you can point at the exact line in review. The frame is always reader-backward compatibility of stored documents: a document that validated under the old schema must stay valid under the new one. That is the right question when you own the writers and worry about stored data — API request bodies, event payloads, config files, database document validators. Forward compatibility (old readers against new documents) is a different question and is deliberately not computed.

A review rail, not a prover. This is a conservative checker: a “compatible” verdict is only ever produced from flat, covered keywords, and anything the checker cannot decide with certainty lands in needs review — never silently assumed safe. Concretely: composition keywords (allOf/anyOf/oneOf/not/if) are never composed, so a schema built mostly out of them will come back “review” with little detail — that is intentional, not a bug. Uncovered keywords (patternProperties, dependentRequired, …) are flagged by name rather than ignored.

Honest limits. There is no regex analysis (pattern changes are always review, even a plainly-widening one), no format semantics (any format change is review), and external $refs are never fetched — zero network — so they route to review too. Internal #/… refs are resolved, so a change to a referenced definition is classified normally.