{ } JSON Workbench0 network requests. Check DevTools

What is this JSON compare tool?

A semantic diff for JSON: it parses both documents and compares structure, so key order and formatting never register as changes. Only real differences do. Two features most online diffs lack: ignore keys (exclude noisy fields likeupdatedAt everywhere) and array identity matching (match array items by a key such as id, so reorders aren't false positives). View results side-by-side with colored JSON or as a collapsible tree diff, entirely in your browser, with nothing uploaded.

How to use

  1. Paste JSON into JSON A and JSON B (or load files / samples).
  2. Optionally add Ignore keys (e.g. updatedAt) and set Match array items by (e.g. id).
  3. Press Compare. The side-by-side view opens at the first difference: green added, red removed, amber changed.
  4. Switch to Tree diff for a collapsible structural view with change counts.
  5. Use Copy share link to share the diff. The data lives in the URL fragment, never sent to a server.

Examples

Key order never shows as a change

Input
A: {"name":"Ada","id":1}
B: {"id":1,"name":"Ada"}
Output
✓ Identical (semantic compare:
key order is ignored)

Ignore noisy keys (updatedAt)

Input
Ignore keys: updatedAt
A: {"id":1,"updatedAt":"2026-07-03"}
B: {"id":1,"updatedAt":"2026-07-04"}
Output
✓ Identical (updatedAt excluded
everywhere in the document)

Match array items by id: reorder ≠ change

Input
Match by: id
A: [{"id":1,"n":"a"},{"id":2,"n":"b"}]
B: [{"id":2,"n":"b"},{"id":1,"n":"a"}]
Output
✓ Identical (items matched by "id",
not by position)

A real change is pinpointed

Input
A: {"user":{"active":true}}
B: {"user":{"active":false}}
Output
~1 changed
user.active: true → false

Edge cases & gotchas

FAQ

What is a semantic JSON diff?

It compares parsed structure, not text, so key order, whitespace, and formatting never show as changes. Only real differences in values, keys, and array items are reported.

How do I ignore keys like updatedAt or requestId?

Add them to the Ignore keys list before comparing. Ignored keys are excluded everywhere in the document. Perfect for timestamps, IDs, and other noise.

How do I compare JSON arrays by id?

Set “Match array items by” to a key (e.g. id). Items are matched by that key instead of position, so reordered arrays show no changes and an inserted item shows as one insert, not a cascade of shifted diffs.

Is my JSON uploaded when I compare or share?

Never. Diffing runs in your browser, and share links pack the data into the URL #fragment, which browsers do not send to any server.

What do the colors mean?

Green = added, red = removed, amber = changed. The side-by-side view auto-scrolls to the first difference.

Related tools