How to compare JSON responses
- Paste the earlier payload under Original JSON and the newer one under Updated JSON.
- Select Compare JSON to find added, removed, or changed values.
- 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.