JSON Diff is a free tool that compares two JSON documents by their data and lists every difference: values that changed, and properties or items that were added or removed, each with its exact path. Key order and formatting are ignored. Both documents are compared in your browser.
How to compare JSON
- Paste the original JSON on the left and the changed JSON on the right.
- The differences are listed below, with a summary count.
- If arrays are unordered sets, such as tags or permissions, tick Ignore the order of items in arrays.
Reading paths
$is the whole document.$.settings.themeis thethemeproperty insidesettings.$.roles[1]is the second item ofroles(counting starts at 0).$.meta["x-id"]is used for keys that contain special characters.
Common uses
- Checking what changed between two API responses, or between staging and production.
- Reviewing changes to configuration files or feature flags.
- Debugging failing snapshot tests.
Why not a text diff?
Two JSON files can contain identical data but look very different: keys in another order, other indentation, or everything on one line. A text diff would flag all of that. JSON Diff parses both documents first, so only real differences in the data are reported. Numbers and strings are compared strictly:1 and "1" count as different.
Frequently asked questions
How is this different from a text diff?
A text diff compares lines, so reformatting or reordering keys shows up as changes. JSON Diff compares the data itself: key order and whitespace never matter, only real differences in values.
What do the paths mean?
$ is the top of the document. $.user.email is the email property inside user, and $.items[2] is the third item of the items array.
What does “ignore the order of items in arrays” do?
It treats arrays as unordered lists, so ["a","b"] and ["b","a"] count as the same. Leave it off when order matters, such as steps or rankings.
Is 1 the same as "1"?
No. A number and a string are different types, so they are reported as a change.
Last updated