Free JSON Diff & API Response Comparator
Compare two JSON payloads structurally, not as text — so reordered keys are not false positives and a real API regression is impossible to miss. Ignore volatile fields like timestamps and request IDs in one click. Nothing you paste here leaves your browser.
How this JSON diff tool works
Both payloads are parsed and compared as data structures, so the diff is key-order independent: {"a":1,"b":2} and {"b":2,"a":1} are identical, and a serialiser that changes key order between builds will not fill your report with noise. A plain text diff cannot tell those two cases apart, which is why text-diffing API responses produces so many false alarms.
Every difference is reported as a JSONPath-style path such as $.data.items[0].qty, ready to paste straight into a bug ticket or an assertion. Differences are split into four kinds, because they mean different things when you are triaging a failure: changed (same type, new value), type changed (for example the number 200 became the string "200", a genuine contract break that a loose comparison would miss), added, and removed.
Two options exist because real API responses are noisy. Ignore array order matches list items by value instead of position, so a collection returned in a different order is not flagged. Ignore volatile fields drops the keys that legitimately change on every call — request IDs, timestamps, durations, session tokens — so what is left is only the difference that matters. Edit that list to match your own payloads.
Everything runs in your browser. Slightly-invalid JSON is repaired where it is unambiguous (trailing commas, // and /* */ comments) and flagged so you know it happened; anything worse gives you the exact line and column instead of failing silently.
Is this JSON diff tool free?
Yes, completely free with no login, no signup, and no size or usage limit beyond what your browser can hold in memory.
Is my JSON uploaded anywhere?
No. Parsing and diffing happen entirely in your browser and no network request is made, so you can safely compare responses from an internal or pre-production environment.
What is the difference between a structural JSON diff and a text diff?
A text diff compares characters, so it reports a difference when only formatting changed: reordered keys, different indentation, or a trailing newline. A structural diff parses both sides into data first and compares values by path, so it only reports differences that would actually change how a client behaves.
Why does the tool treat a type change separately?
Because it is the difference most likely to break a consumer while looking harmless in a report. A field that changes from the number 200 to the string "200" renders the same in a log but fails strict schema validation and any typed client. Calling it out separately from an ordinary value change makes contract breaks obvious at a glance.
Can I compare JSON with different key order and still get a clean result?
Yes. Key order is never treated as a difference. If you also want list order ignored, leave the "Ignore array order" option on and items are matched by value rather than by index.
Diffing responses by hand after every deploy? ContextQA asserts them for you.
ContextQA runs your API checks on every build, compares responses against the expected contract automatically, and tells you which endpoint drifted — before your users find out.
See API testing in action