JSON Diff
Compare two JSON documents and see what changed.
JSON Diff – Compare Two JSON Documents Online
JSON Diff compares two JSON documents by their data, not their formatting. Paste the original on the left and the modified version on the right; you immediately get a list of every added, removed, and changed value with its exact JSONPath.
Semantic comparison
Line-based diff tools get confused by JSON: a different indentation, reordered keys, or a minified vs. formatted file make everything look different. This tool parses both sides and walks them together, so formatting and key order are ignored. What's left are the real differences:
- Added (+) – keys or array items present only in the modified document.
- Removed (−) – keys or items present only in the original.
- Changed (~) – same path, different value or type, shown as
old → new.
Array handling
Arrays are compared position by position by default, which is right for ordered data such as steps, coordinates, or versions. When arrays are really sets — tags, permissions, IDs — switch on Ignore array order so that ["a","b"] and ["b","a"] count as equal and only missing or extra items are reported.
Typical uses
- Checking what changed between two API responses or two versions of an endpoint.
- Reviewing configuration changes before a deployment.
- Debugging failing snapshot tests.
- Verifying that a migration or transformation kept the data intact.
Tips
Use Swap to flip the comparison direction and Copy report to paste the list of differences into a ticket or pull request. For readable input, clean up both sides first with the JSON Beautifier or remove noise with the JSON Cleaner.
Frequently Asked Questions
Why not just use a text diff?
A text diff compares lines, so reformatting or a different key order makes everything look changed. JSON Diff compares the parsed data, so only real differences in values, keys, and array items are reported.
How are arrays compared?
By default item by item, by position: [a, b] vs [b, a] shows two changes. Turn on “Ignore array order” to treat arrays as unordered collections, which only reports items that exist on one side but not the other.
What do +, − and ~ mean?
+ is a key or item that exists only in the modified JSON (added), − exists only in the original (removed), and ~ exists in both with a different value or type (changed).
Is key order considered a difference?
No. JSON objects are unordered, so {"a":1,"b":2} and {"b":2,"a":1} are reported as equal.