JSON Structural Diff
Compare two JSON documents by their data, not their formatting: added, removed and changed keys, with key order and whitespace ignored.
Frequently Asked Questions
How is this different from a text diff of JSON?
A text diff compares lines, so re-indenting, reordering keys, or a trailing comma makes two documents with identical data look completely different. This tool parses both sides first and compares the actual values: an object's keys are matched by name regardless of order, so only real differences in the data show up.
How are added, removed and changed values shown?
Each difference is listed with its full path (like $.user.tags[2]) and, for a changed value, both the old and new value. A key present only on one side is reported as added or removed; a key present on both sides with a different value is reported as changed.
How are arrays compared?
By index: element 0 against element 0, element 1 against element 1, and so on. Inserting an item in the middle of an array shows up as a change at every position after it, since the tool has no way to know an insertion happened rather than every later value coincidentally changing.
What happens if a value changes type, like a string becoming a number?
It is reported as a single changed value at that path rather than compared field by field, since there is nothing meaningful to recurse into once the shape no longer matches.
Is my JSON sent anywhere?
No, parsing and comparison both happen in your browser.