JSON Diff — Compare Two JSON Files
See exactly what changed between two JSON documents — key order and formatting ignored.
Paste two JSON documents and get a structural diff: which keys were added, which were removed, and which values changed, each with its path. Because the comparison is on parsed data rather than text, reordered keys and reformatted whitespace don’t show up as false differences. It all runs in your browser.
Structural diff vs. text diff
A normal text diff (like git diff) flags reordered keys and reindented blocks as changes, even when the data is identical. A structural JSON diff parses both sides first, so it only reports real differences in the data. That’s what you want when comparing an API response before and after a deploy, or two versions of a config file that a formatter has touched.
A note on arrays
Arrays are ordered, so they’re compared by position. If you insert an element near the beginning, every element after it shifts and shows as changed. There’s no reliable way around this without a stable key per element — it’s a property of JSON arrays, not a limitation of the tool.
Privacy
Both documents are parsed and compared locally. Nothing is uploaded — compare production data safely. The same guarantee covers the formatter, viewer and validator.
Frequently asked questions
- How does the JSON diff work?
- Both sides are parsed into data structures and compared key by key and index by index — not line by line. That means reordered keys or reformatted whitespace are ignored; only real differences in values, added keys and removed keys are reported.
- Is my data uploaded?
- No. Both documents are parsed and compared entirely in your browser. Nothing is sent to a server — safe for comparing production configs or API responses.
- Does key order matter?
- No. Because the comparison is structural, {"a":1,"b":2} and {"b":2,"a":1} are reported as identical. This is usually what you want when diffing JSON.
- How are arrays compared?
- Arrays are compared by index: element 0 on the left against element 0 on the right, and so on. Inserting an item near the start therefore shows every later element as changed — JSON arrays are ordered, so there is no reliable way to match moved items without a key.
- What do added, removed and changed mean?
- Added = the key or index exists only on the right. Removed = it exists only on the left. Changed = it exists on both but the value differs.
- Can I diff two formats, like JSON vs minified JSON?
- Yes — formatting is irrelevant because the comparison is on parsed data, not text. A pretty-printed document and its minified form compare as identical.