JSON Diff
Runs in your browserCompare two JSON documents by structure. Key order and formatting are ignored, so you only see changes that actually matter.
About this tool
Diffing JSON as text produces noise: reserialising a payload reorders keys and changes indentation, and a line-based diff reports all of it as changes. A structural comparison parses both sides and walks the resulting values, so reordered keys are correctly reported as no change at all, and every real difference is reported as a path — $.user.email — that tells you precisely where to look.
How to use
- Paste the original JSON on the left and the new JSON on the right.
- Differences appear as paths, marked added, removed or changed.
- An empty result means the documents are structurally identical.
When to use this tool
- Finding what changed between two API responses.
- Comparing configuration between staging and production.
- Verifying that a refactor did not alter a payload.
- Checking a fixture against recorded output in a failing test.
Tips
- Arrays are compared by position, so an item inserted at the start shifts everything after it.
- If you only care about formatting differences, use the Text Diff instead.
- Format both sides with the JSON Formatter first if you want to eyeball them as well.
FAQ
- Is my data uploaded?
- No. Both documents are parsed and compared in your browser. Nothing is transmitted or stored.
- Does key order matter?
- No — and that is the point. JSON objects are unordered, so {"a":1,"b":2} and {"b":2,"a":1} are reported as identical, which a text diff would not do.
- How are arrays compared?
- By index. Inserting an element at the beginning therefore shows every subsequent position as changed, because positionally that is exactly what happened.