Skip to JSON diff
Edwin Lab

JSON Diff

See what changed between two API responses without being distracted by formatting or object key order.

Strict JSON. Combined input limit: 5 MiB UTF-8. Your data stays in this browser.

Object key order is ignored. Arrays are compared by index.

Ready. Add two JSON values and select Compare JSON.

How to compare JSON responses

  1. Paste the earlier payload under Original JSON and the newer one under Updated JSON.
  2. Select Compare JSON to find added, removed, or changed values.
  3. Filter the results or copy a plain-text report for a review or bug report.

For example, if an API response changes from {"status":"pending","amount":1200} to {"status":"paid","amount":1200,"receipt":"R-42"}, this JSON diff reports /status as changed and /receipt as added.

What added, removed, and changed mean

Added means a value exists in the updated JSON but not the original. Removed means it existed only in the original. Changed means values differ at the same location, including when their JSON types differ. A new or removed object or array is shown as one subtree change at its path.

Paths use JSON Pointer escaping: ~ becomes ~0 and / becomes ~1. The root value is labeled (root).

Comparison rules and limits

Object keys are compared by name in a deterministic order, so key order and whitespace do not matter. Arrays are compared by index and are not sorted or matched by an ID. Moving an item can therefore appear as changes at multiple positions. Numeric values use JavaScript number semantics: 1, 1.0, and 1e0 compare equally; -0 and 0 compare equally. Other decimal values use the browser's JavaScript number precision.

Both inputs together are limited to 5 MiB of UTF-8 text. JSON nesting is limited to 100 levels, and results stop after 500 differences. Inputs containing duplicate keys, unsafe integer values, non-finite numbers, or numbers that underflow to zero are rejected rather than silently changing their meaning. To compare a large numeric ID, quote it as a JSON string.

Comparison runs locally in this browser. Input is not uploaded, stored, or added to the page URL.

Frequently asked questions

Does JSON key order matter?

No. Object properties are compared by key, regardless of their order in the text. Formatting whitespace is also ignored.

How are arrays compared?

Items are compared at the same index. The tool does not sort arrays or match objects by an ID, so reordered items may be reported as changed values.

Is a missing field the same as null?

No. A missing field is reported as added or removed, while an explicit null is a present JSON value.

Why are large numeric IDs rejected?

JavaScript cannot represent every integer beyond its safe integer range exactly. Quote an identifier such as 9007199254740993 so it remains an exact string.

Are my JSON payloads uploaded?

No. Parsing and comparison happen locally in your browser. The page does not send input to an API.

Related developer tools

Check input syntax with JSONLint, convert configuration with the JSON ↔ YAML Converter, or explore Developer Tools.