Why Compare JSON Structurally?
A plain text diff flags every reordered key, every reindented line, and every harmless whitespace change as a "difference" — drowning the real changes in noise. A structural JSON diff ignores formatting and reports only what actually changed: a value flipped, a key added, an array item dropped.
Path-Based Output
Each difference is labelled with a dot-notation path — user.address.zip or roles[1] — so you know exactly where to look. No more eyeballing two pretty-printed blobs trying to spot the one character that changed.
Key Features
"42" and a number 42 are flagged as a change — type mismatches matter.
Pro Tip
Diffing API responses across two environments? Strip volatile fields like timestamp or requestId before comparing — otherwise every diff will be flooded with noise from values that always change.
Walkthrough: API Regression Testing
You've changed the response shape of a REST endpoint and want to be sure the new payload is a strict superset of the old one. Paste the old response on the left, the new one on the right, and click Compare. Every + Added entry confirms a new field; any − Removed entry is a breaking change you need to migrate consumers off. ~ Changed entries show value drift — useful for catching unintentional defaults swaps.
Frequently Asked Questions
Are arrays compared by index or by value?
By index. [1,2,3] vs [3,2,1] reports two changes (positions 0 and 2). For order-insensitive list comparison, sort both arrays before pasting.
What counts as "ignore key order"?
When enabled, both inputs are deeply re-sorted by key before comparison, so {"a":1,"b":2} and {"b":2,"a":1} are reported as identical.
Will it find a missing key inside a nested object?
Yes. The diff recurses into every level of nesting and reports the missing key with its full path, e.g. user.address.zip.
Can I diff two minified blobs?
Yes — formatting is irrelevant since both inputs are parsed before comparing. Minified, pretty-printed, mixed — the diff is the same.