JSON Diff
See which fields were added, removed, or changed.
Runs entirely in your browser — nothing you enter is uploaded or sent to a server.
Arrays are compared by position, so reordering items shows up as changes — that keeps the diff predictable, but read array changes with that in mind. Read our full disclaimer.
About this tool
Structurally compares two JSON values and tells you exactly what changed going from the old one to the new one: which fields were added, which were removed, and which had their value changed — each with a dotted path like user.roles[0]. It recurses through nested objects and arrays, so deep changes surface clearly. Perfect for comparing API responses, config versions, or fixtures.
Try it
Change age from 30 to 31, drop a role, and add active: true, and the tool reports one changed field (age), one removed (roles[1]), and one added (active).
How to use
- 1Paste the old JSON on the left and the new JSON on the right.
- 2Read the change list: added, removed, and changed fields.
- 3Each change shows its path and the old and/or new value.
- 4Fix any parse error shown if the JSON is invalid.
Features
- Deep structural diff of nested objects and arrays.
- Added / removed / changed, each with a full dotted path.
- Clear parse errors that name which side is invalid.
Frequently asked questions
How are arrays compared?
By index — position 0 to position 0, and so on. Reordering an array will therefore show as changes. This keeps the diff simple and predictable.
How do I compare two JSON objects?
Paste the old JSON on the left and the new on the right; the tool lists every added, removed, and changed field with its dotted path (like user.roles[0]), recursing through nested objects and arrays.
Does the order of keys matter?
No. Objects are compared by key, not by the order the keys appear, so reformatting or reordering keys won't show as a difference. Arrays, though, are compared by position.
Is my JSON sent anywhere?
No. Both sides are parsed and compared in your browser, so nothing you paste leaves your device — safe for API responses or config that contains secrets.
What counts as a 'changed' field?
A field present in both, where the value differs — including a type change (say an object becoming an array). Unchanged fields aren't listed.
More developer tools
View allJSON Formatter
Paste raw JSON and get it neatly indented, minified, or validated — entirely in your browser, with a clear error message pointing to anything invalid.
Open toolText Diff
Compare two blocks of text line by line and see exactly what was added, removed, or left unchanged — a quick side-by-side diff that runs in your browser.
Open toolJSON ↔ CSV ↔ YAML
Convert data between JSON, CSV, and YAML in any direction — paste one, pick a target, and copy the result. Runs entirely in your browser, nothing uploaded.
Open tool