Compare two JSON documents and see exactly what was added, removed, or changed — with a clear path to every difference and a colour-coded before/after view, all in-browser.
Spotting what changed between two versions of a JSON document by eye is slow and error-prone, especially when the objects are deeply nested. A structured diff with an exact path to each change makes code reviews, API debugging, and config audits far faster — you see precisely which key moved, which value flipped, and what was added or removed.
★★★★★
Use Cases
API Debugging
Compare a request or response before and after a change
Config Audits
See what changed between two config files
Code Review
Verify only the intended fields changed
Data Migration
Confirm a transform produced the right output
What this tool does
JSON Diff compares two JSON documents — an original and an updated version — and reports exactly what changed. Every difference comes with a precise path (like user.roles[2]) and a colour-coded before/after value, so you can review changes in seconds instead of squinting at two text blocks.
How it works
Both sides are parsed, then walked recursively. Objects are matched by key and arrays by index; differing values are classified as added, removed, or changed. The tool counts each kind and lists them with their paths. Invalid JSON on either side produces a clear, friendly error.
Privacy
Everything is parsed and compared locally in your browser. Nothing you paste is uploaded, logged, or stored.
Frequently Asked Questions
How does the JSON diff work?
Both documents are parsed, then compared with a deep recursive walk. Objects are matched by key and arrays by index. When two values differ, the tool records the exact path and whether the change was an addition, a removal, or a value change.
How are array changes handled?
Arrays are compared element by element using their index. If the updated array is longer, the extra elements show as added; if shorter, the missing ones show as removed; and elements that differ at the same index show as changed, each with a path like items[3].
What counts as a 'changed' value?
Any time the value at a given path differs — including a type change such as the string "1" becoming the number 1 — it is reported as a single changed entry with both the before and after values, so you always see what it was and what it became.
Does the order of object keys matter?
No. JSON objects are unordered, so reordering keys without changing their values produces no differences. Only genuine additions, removals, and value changes are reported.
Is my data stored anywhere?
No. Both documents are parsed and compared entirely in your browser. Nothing you paste is uploaded, logged, or stored — refreshing the page clears everything.