Add the original and updated data
Paste valid JSON into both editors, or load the example to explore the result tree. Automatic comparison updates the result after you pause typing.
JSON tools
Paste both JSON documents. Results update after you stop typing; turn off automatic comparison to run it manually.
Updated
Read-only display: formatting and record order are aligned using your comparison rules. Ignored paths are hidden; originals stay unchanged.
/users/0/id/users/0/idLoading comparison…
{
"users": [
{
"id": 1,
"name": "Ada",
"role": "reader"
},
{
"id": 2,
"name": "Lin",
"role": "editor"
}
],
"version": 1,
"updatedAt": "2026-09-01"
}
{
"users": [
{
"id": 2,
"name": "Lin",
"role": "admin"
},
{
"id": 1,
"name": "Ada",
"role": "reader"
},
{
"id": 3,
"name": "Sam",
"role": "reader"
}
],
"updatedAt": "2026-09-10",
"active": true
}
Your inputs stay in this browser tab. No upload or persistent storage.
Original JSON /users/0/id
1
Updated JSON /users/0/id
2
Original JSON /users/0/name
"Ada"
Updated JSON /users/0/name
"Lin"
Original JSON /users/0/role
"reader"
Updated JSON /users/0/role
"admin"
Original JSON /users/1/id
2
Updated JSON /users/1/id
1
Original JSON /users/1/name
"Lin"
Updated JSON /users/1/name
"Ada"
Original JSON /users/1/role
"editor"
Updated JSON /users/1/role
"reader"
Original JSON
Missing
Updated JSON /users/2
{"id":3,"name":"Sam","role":"reader"}Original JSON /version
1
Updated JSON
Missing
Original JSON /updatedAt
"2026-09-01"
Updated JSON /updatedAt
"2026-09-10"
Original JSON
Missing
Updated JSON /active
true
An API response can look completely different after a formatter runs, even when no data changed. JSON compare should help you find the changed field, not make you review every line again. A JSON diff should point at that field, not at the reformatting around it.
Use this JSON difference checker to compare JSON files copied from fixtures or configuration snapshots. Start with the sample, switch to ID matching, and watch array reorder noise disappear. The JSON diff then lists only the values that actually moved.
API responses often return the same records in a new order. When every object has a unique id, key matching aligns those records before comparing their fields. A changed permission remains visible without treating a reordered list as a series of unrelated edits. Use position mode when the sequence itself matters.
A fresh updatedAt value can distract from the configuration change you need to review. Exclude /updatedAt to skip that field and its descendants while keeping other differences visible. Exclusions use exact JSON Pointer paths, so choose the specific branch you intend to ignore.
Paste valid JSON into both editors, or load the example to explore the result tree. Automatic comparison updates the result after you pause typing.
Keep position mode for ordered lists, or choose key mode and enter a unique property such as id. Add one exact path per line to exclude fields such as /updatedAt.
Switch to View comparison to see deletions in red and additions in green. Navigate between changes or expand Structure details for original paths, then copy or download the report.
Expand the affected branches to inspect old and new values. Each change carries a JSON Pointer; matched array records retain separate paths for the original and updated documents.
Position mode compares index 0 with index 0. Key mode pairs array objects using one direct property such as id, so reordering records alone does not count as an edit.
Copy or download additions, removals, changes and the comparison options as JSON. Value snapshots are JSON source strings, preserving large numbers for downstream readers.
Yes. Object key order and whitespace outside strings are ignored. Whitespace inside a string remains meaningful.
Select key mode and enter a unique property, usually id. This aligns object records; primitive arrays still use positions. Missing or duplicate identities produce an error.
Expand the tree and follow its JSON Pointer. For a reordered record, the original and updated paths are both printed beside the corresponding values.
Yes, including objects inside arrays and arrays inside objects, up to the documented depth and node limits. Array matching applies recursively.
No upload is required. Copy and download are explicit actions; the page provides no account, saved comparison history or shareable payload URL.
Found a comparison case that looks wrong?
Load the sample, switch to ID matching, and the JSON diff drops the array reordering noise.