JSON Diff
Compare two JSON documents key-path by key-path and get every difference as a list.
JSON A (left)
JSON B (right)
How to use it
- Paste the first JSON document into panel A - this is treated as the old or left side.
- Paste the second document into panel B - the new or right side.
- Click Compare, or keep typing - differences refresh automatically.
- Read the list: ~ means the value changed, - exists only in A, + exists only in B.
- Use Copy to take the full report with you.
Common use cases
- Reviewing API responses - diff yesterday's payload against today's to see which fields moved, appeared or vanished.
- Checking config drift - compare two environment config files and spot the exact key that differs.
- Verifying data migrations - confirm a transformed dataset kept every value it should have kept.
- Debugging saved state - diff a snapshot from before an action against one from after.
Why it stays private
Both documents are parsed and compared in your browser's memory. Config files with secrets and payloads with user data never leave your device.
FAQ
Q: How are paths formatted? A: Object keys join with dots (user.name) and array elements use bracket indices (user.tags[2]). An empty object or empty array is treated as its own leaf so its presence or absence is still reported.
Q: How are different types treated? A: A number and a string with the same digits count as different, because JSON.stringify distinguishes them. An object compared against a scalar is reported as a change at that path, not a crash.
Q: Does it compare arrays element by element? A: Yes, by index. Shifting every element by inserting one at the front will report many index changes, since a positional comparison is the only unambiguous one for JSON arrays.
Your data stays on this device
JSON Diff runs 100% locally. Everything you paste or drop is processed by your own browser and never transmitted. Nothing is stored on our servers — close the tab and it is gone.
Nothing you type is sent to a server, logged, or used for analytics. The page works even with your network disconnected after first load.