JSON Diff

Compare two JSON documents and see what changed.

JSON Diff – Compare Two JSON Documents Online

JSON Diff compares two JSON documents by their data, not their formatting. Paste the original on the left and the modified version on the right; you immediately get a list of every added, removed, and changed value with its exact JSONPath.

Semantic comparison

Line-based diff tools get confused by JSON: a different indentation, reordered keys, or a minified vs. formatted file make everything look different. This tool parses both sides and walks them together, so formatting and key order are ignored. What's left are the real differences:

  • Added (+) – keys or array items present only in the modified document.
  • Removed (−) – keys or items present only in the original.
  • Changed (~) – same path, different value or type, shown as old → new.

Array handling

Arrays are compared position by position by default, which is right for ordered data such as steps, coordinates, or versions. When arrays are really sets — tags, permissions, IDs — switch on Ignore array order so that ["a","b"] and ["b","a"] count as equal and only missing or extra items are reported.

Typical uses

  • Checking what changed between two API responses or two versions of an endpoint.
  • Reviewing configuration changes before a deployment.
  • Debugging failing snapshot tests.
  • Verifying that a migration or transformation kept the data intact.

Tips

Use Swap to flip the comparison direction and Copy report to paste the list of differences into a ticket or pull request. For readable input, clean up both sides first with the JSON Beautifier or remove noise with the JSON Cleaner.

Frequently Asked Questions

A text diff compares lines, so reformatting or a different key order makes everything look changed. JSON Diff compares the parsed data, so only real differences in values, keys, and array items are reported.

By default item by item, by position: [a, b] vs [b, a] shows two changes. Turn on “Ignore array order” to treat arrays as unordered collections, which only reports items that exist on one side but not the other.

+ is a key or item that exists only in the modified JSON (added), − exists only in the original (removed), and ~ exists in both with a different value or type (changed).

No. JSON objects are unordered, so {"a":1,"b":2} and {"b":2,"a":1} are reported as equal.