About this json diff
A text diff is distracted by indentation and object key order. This checker parses both documents first, then compares the resulting JSON values so whitespace-only changes disappear.
Object members are matched by name and reported with paths rooted at $. Arrays remain ordered and are compared by index because changing array order can change meaning.
A text diff tool can't understand JSON structure. When you compare two JSON documents line-by-line, whitespace variations and key reordering hide the actual changes, wasting your time. This free JSON diff checker understands JSON semantics, ignoring cosmetic changes and focusing on what actually matters: the values themselves.
Use cases span development, DevOps, and data management: compare API response schemas across versions, detect unintended changes in configuration deployments, verify data migrations completed correctly, or review changes in large configuration files before pushing to production. The structured comparison reveals changes at exact JSON paths, making root-cause analysis fast and reliable.
Arrays, objects, and primitive values all get the right treatment. The tool uses object-aware matching by keys and array-by-index comparison, so you see exactly where values were added, removed, or changed. Works with local files, pasted content, and supports files up to practical sizes—all processing happens in your browser with no uploads or external dependencies.
How to use this tool
-
01
Add the original value
Paste the earlier JSON document on the left. It must be valid JSON, but its whitespace and key order do not matter.
-
02
Add the changed value
Paste the version you want to compare on the right and select Compare JSON.
-
03
Read each path
The table labels values as added, removed or changed and shows the before and after value at that path.
Worked examples
Changed value and added member
Before: {"name":"Ada","active":true}
After: {"name":"Ada Lovelace","active":true,"team":"tools"}$.name — changed
$.team — addedObject order is not a change
Before: {"a":1,"b":2}
After: {"b":2,"a":1}No structural differencesLimits and edge cases
- Arrays are compared by index. Inserting the first element can therefore produce several later changes; this tool does not infer moved array records.
- The checker refuses documents with duplicate object names because a native JSON parser cannot preserve every repeated member.
- The checker refuses unsafe integers and decimal or exponent values native JavaScript would round, overflow or underflow. Quote exact high-precision values before comparing.
- The page renders at most 500 rows to protect responsiveness, while the status still reports the complete difference count.
Standards and references
Common questions
Does JSON property order affect the comparison?
No. Object member order is ignored. Array order remains significant and values are compared at the same array index.
Can I compare private API responses?
The documents are parsed and compared locally. As with any browser tool, use a trusted device and tab when handling sensitive values.