JSON A

JSON B

Diff Result

What is a JSON Diff Tool?

You deployed a config change and something broke — but what exactly changed? Or you got two API responses from different environments and need to see what's different. A JSON diff tool solves this without you having to scan line by line yourself. It compares two JSON documents and highlights exactly what changed — which keys were added, removed, or got a new value. It works recursively through nested objects using dot-notation paths like user.address.city.

Instead of reading two JSON blobs line by line yourself, the tool does the heavy lifting and presents a clear, structured summary of every difference. The output format is inspired by classic diff tools, and the change operations map closely to the RFC 6902 JSON Patch standard.

How to Use the JSON Diff Tool

1

Paste JSON A

Paste your first JSON object into the left JSON A panel.

2

Paste JSON B

Paste your second JSON object into the middle JSON B panel.

3

Read the Diff

The right panel instantly shows every key that was added (+), removed (-), or changed (~).

Example

Here is a quick example showing how the diff output looks:

Comparing two user objects

JSON A (Input):

JSON A (Input)

JSON B (Input):

JSON B (Input)

Diff Result:

Diff Result

Frequently Asked Questions

How do I compare two JSON objects online?

Paste the first JSON into the left panel (JSON A) and the second into the middle panel (JSON B). The diff result appears instantly on the right — showing every key that was added, removed, or changed between the two.

What does the JSON diff output mean?

+ added means the key exists in JSON B but not A. - removed means it was in JSON A but not B. ~ changed means the key exists in both but the value is different. Paths use dot-notation for nested keys like user.profile.email. If you need to apply those changes programmatically, check out the JSON Patch format.

Does this tool support nested JSON?

Yes. The diff tool recursively walks all nested objects and arrays, reporting changes at every level with a full dot-notation path. So a change deep inside a nested config shows up as something like server.db.connection.host.

Is my data sent to a server?

No. All comparison logic runs entirely in your browser using JSON.parse(). Your JSON never leaves your device.

Related Tools

See also: JSON Formatter, JSON Validator, JSON Merge.