JSON Diff
Paste two JSON documents and see exactly which keys were added, removed, or changed between them.
How this works
Both sides are parsed as JSON, then compared key by key and index by index. Keys only on the right are additions, keys only on the left are removals, and keys present on both sides with different values are changes. Order of object keys doesn't matter, only the values do.
How it works
Both sides go through JSON.parse first, so if one isn't valid JSON you get
the parser's own error message pointing at the problem instead of a garbage diff. The
comparison then walks the two parsed structures recursively: for objects it takes the
union of both key sets and recurses into each key, for arrays it compares index by index,
and leaf values are considered equal only if they serialize identically. Every difference
is emitted as a path like user.address[1].zip tagged as added, removed, or
changed, then summarized into counts.
Because the diff runs on parsed values rather than text, formatting is invisible: indentation, key order, and whitespace differences produce zero noise, which is the whole point versus a line-based text diff. The trade-off to understand is array alignment. It's positional, so inserting one element at the front of a long array reports every following index as "changed" plus one addition at the end. When you see a wall of changed entries that all look shifted by one, read it as "something was inserted or removed early in this array", not as dozens of independent edits.
Parsing and comparison happen entirely in this page's JavaScript. Open DevTools' Network tab and hit Compare: no request carries your JSON, so API responses and config files with secrets in them stay on your machine.
Common questions
Does key order matter?
No. Two objects with the same keys and values but in a different order are treated as identical. Only actual value differences and added/removed keys are reported.
How are arrays compared?
Index by index. If an array grew, the extra trailing items show as additions; if it shrank, the missing items show as removals. Reordering array items will show up as changes since this compares positions, not content matching.
Is my JSON sent anywhere?
No, the comparison runs entirely in your browser's JavaScript engine. Nothing is uploaded.