JSON diff checker

Compare two JSON documents and get a list of exactly what changed, by path. Key order and formatting don't count as differences, so you only see changes to the data.

  • 100% free
  • Runs in your browser
  • No uploads
Show

Paste two JSON documents. Differences are listed by path, like $.owners[0].email.

How to compare two JSON files

  1. Paste or open both documents. Put the older version on the left and the newer one on the right. Each box accepts a dropped file.
  2. Read the list of changes. Each line shows the path, whether it was added, removed or changed, and the old and new values.
  3. Switch to Side by side to see both documents with keys sorted and the differing lines marked, which helps with big nested changes.
  4. Copy the summary to paste into a ticket, a code review or a chat.

Example: a changed subscription

Original: {"plan": "pro", "seats": 5, "features": ["sso", "audit"], "billing": {"cycle": "monthly", "currency": "USD"}}
Changed:  {"seats": 8, "plan": "pro", "features": ["sso", "audit", "api"], "billing": {"currency": "USD", "cycle": "yearly"}}

The keys are in a different order in each, but the comparison lists only three real differences:

~ $.seats: 5 → 8
+ $.features[2]: "api"
~ $.billing.cycle: "monthly" → "yearly"

What counts as a difference

OriginalChangedResult
{"a": 1, "b": 2}{"b": 2, "a": 1}Same: key order is ignored
{"price": 1.50}{"price": 1.5}Same: equal numbers
{"id": 1}{"id": "1"}Changed: number vs string
[1, 2, 3][3, 1, 2]Different, unless array order is ignored
{"a": null}{}Removed: a missing key isn't the same as null

When a JSON diff helps

  • Checking what an API now returns compared with a saved response, after a deploy or a version upgrade.
  • Reviewing changes to config files such as package.json, app settings or feature flags, without noise from reformatting.
  • Comparing test fixtures or snapshots, where a field that silently disappeared matters.
  • Checking JSON that an AI assistant rewrote: see exactly which values it changed instead of rereading the whole file.

Frequently asked questions

Why not just use a text diff?

A text diff compares lines, so reordered keys, different indentation or a minified file show up as changes even when the data is identical. This JSON diff compares values: {"a": 1, "b": 2} and {"b":2,"a":1} are equal, and 1.0 equals 1. You only see differences that change the meaning.

How are arrays compared?

By default, order matters and items are lined up the way a good text diff lines up lines, so inserting one item at the start is reported as one addition rather than every item changing. Tick Ignore the order of array items when the array is really a set, such as a list of tags or IDs.

What do the paths mean?

$ is the whole document, .name is a key and [2] is the third item of an array (counting from 0). $.owners[0].email is the email of the first owner. Keys with spaces or symbols are written like $["first name"].

Are large numbers compared exactly?

Yes. IDs such as 12345678901234567890 and 12345678901234567891 are reported as different, although most JavaScript-based tools see them as equal because they round both to the same value.

Is my data uploaded?

No. Both documents are parsed and compared in your browser, in a background worker. Nothing leaves your device.

Learn more