What is the JSON Diff?
JSON Diff compares two JSON documents by their structure, not just their text. Each difference is listed with its path (such as $.user.address.city) and the old and new values, so you can see at a glance what changed between two API responses, config versions or test fixtures.
Key order and formatting are ignored, because they do not change the data. You can also ignore the order of items in arrays. A side-by-side view shows both documents formatted the same way, with changed lines highlighted.
How to use it
- Paste the original JSON on the left and the changed JSON on the right, or click Example.
- The differences appear instantly as a list of paths.
- Switch to Side by side or Unified to see the full documents with changes highlighted.
- Turn on Ignore array order if the order of list items does not matter.
Example
Original: {"name":"Nova","plan":"free","tags":["a","b"]}
Changed: {"name":"Nova","plan":"pro","tags":["a"]}Changed $.plan "free" → "pro" Removed $.tags[1] "b"
Features
- Path-based changes. Every difference is reported with a JSON path and the before and after values.
- Ignores key order. Reordered keys and different formatting are not reported as changes.
- Optional array order. Treat [1, 2] and [2, 1] as equal when list order does not matter.
- Three views. A list of changes, a side-by-side view and a unified view with word-level highlights.
- Type changes. Spots when a value changes type, such as the number 1 becoming the string "1".
- Private. Both documents stay in your browser.
Frequently asked questions
Does key order matter?
No. {"a":1,"b":2} and {"b":2,"a":1} are the same data, so they are reported as identical. The side-by-side view sorts keys so only real changes stand out.
How are arrays compared?
By position: item 0 with item 0, item 1 with item 1, and so on. If order does not matter, turn on Ignore array order and items are matched after sorting.
What does the path $.items[2].name mean?
$ is the top of the document, .items is a key, [2] is the third item of an array (counting from 0), and .name is a key inside it.
Can it compare JSON with comments?
Not directly. Remove the comments first, for example with the JSON Minifier and its Allow comments option.
Are my files uploaded?
No. The comparison runs entirely in your browser.
Last updated · Free, no sign-up, runs in your browser.