Diff

JSON Diff & Comparison Tool

Compare two JSON payloads side by side. Identify added, removed, and changed fields at any depth, with a clear summary and path notation.

Compare 2 to 4 payloads. Use A as the baseline, then add alternate responses to spot added, removed, and changed fields quickly.

Base
Compare B

Paste JSON into the panels above and click Compare

Supports 2–4 payloads · press ⌘↵ to compare

Debugging API payload changes

JSON diff is most valuable when an API response changes unexpectedly — a shape change in staging, a webhook that started sending new fields, or a data migration that altered records. Paste the old and new payloads to instantly see exactly what changed, down to the nested field level, without reading through large JSON objects manually.

Identifying breaking changes

A removed field is nearly always a breaking change if any consumer depends on it. A type change (string → number, object → null) is also a breaking change. Added fields are generally safe for consumers that ignore unknown fields — but worth documenting. Use this tool to quickly categorize the impact of API changes before deploying.

It compares two JSON objects field by field and reports: added fields (present in B but not A), removed fields (present in A but not B), and changed fields (present in both but with different values). Field paths use dot notation for nested objects and bracket notation for arrays.

The comparison is recursive. Nested objects are traversed to their leaf values, so you see the exact path to any change — for example, "user.address.city" changed rather than just "user changed".

Arrays are compared by index. Item at index 0 in A is compared to item at index 0 in B, and so on. If the arrays have different lengths, extra items are shown as added or removed. This is an index-based diff, not a semantic content diff.

Common scenarios: comparing API response shapes between environments (staging vs production), debugging webhook payload changes, reviewing breaking changes in an API, understanding migration effects on a data model, or seeing what a feature flag changes in a config payload.

Yes. The string "1" and the number 1 are different values and will be flagged as changed. Null and a missing key will also be treated differently — a null value is a field that exists with a null value, while a missing key is a removed field.