JSON Diff
ConverterCompare two JSON documents and highlight deep differences with an inline view for spotting API response changes and configuration drift issues. Copy the report.
{ "name": "Alice" "age": 30 "tags": [ "admin" "user" ]}{ "name": "Alice" "age": 31 "tags": [ "admin" ] "email": "a@x.com"}Related Tools
About JSON Diff
Comparing two JSON documents by eye (e.g. an API before/after a change, or old/new config) makes it easy to miss differences. This tool does a structural diff of two JSON inputs locally in your browser, ignoring key order and formatting, and precisely marks added, removed, and changed fields. Nothing is uploaded — safe for production configs. For example, diffing {"name":"A","age":1} against {"name":"B","age":1} highlights only the name change, ignoring the identical age.
How to Use
- Open the JSON Diff tool
- Select the source and target formats
- Adjust the output options as needed
- Click the Convert button; results appear in real time
- Copy or export the result
Use Cases
- API regression — Compare responses before and after an API upgrade to confirm field changes are expected.
- Config audit — Compare config JSON across two environments (staging/prod) to find inconsistencies.
- Debug regressions — Compare data snapshots from normal and faulty cases to pinpoint differing fields.
- Version comparison — See the actual changes in package.json and similar configs between two git revisions.
- Data validation — Verify that JSON before and after processing changed only in expected fields.
- Schema migration — Compare JSON output after a schema change to confirm only expected fields were added or removed.
- Merge conflict — Paste the two sides of a JSON merge conflict to see exactly which keys differ.
FAQ
Does it ignore key order?
Yes. JSON object keys are inherently unordered, so the tool compares by key name, not position — different order is not flagged as a difference.
How are arrays compared?
Arrays are compared item by item by index. Reordered array elements may be flagged as differences because JSON arrays are ordered.
Can it compare deeply nested JSON?
Yes. It recursively compares nesting of any depth and reports difference paths down to the leaf node.
Does formatting affect the result?
No. Indentation and whitespace differences are ignored — only actual data content is compared.
What if one JSON is invalid?
The tool validates both inputs first; syntax errors are reported and must be fixed before comparing.
Can I ignore array element order?
By default arrays are compared element-by-element by index, so reordered elements show as differences. For unordered sets (like tag lists), sort them first before diffing.
Why is 1 vs "1" reported as a difference?
In JSON, a number and a string are different value types: the number 1 is of type number while "1" is a string. The tool compares by type plus value, so 1 vs "1", true vs "true", and null vs "" are all treated as different. This usually happens when an API returns a numeric field as a quoted string, or when environments serialize types inconsistently. If you want to compare literal content only and ignore type, normalize the type on one side first, then re-diff or confirm the expected value manually.