{ }jsonkit
Tools/Validate/JSON Diff / Compare
Search tools…⌘K
Format
{ }JSON Formatter
≡→JSON Minifier
\"JSON Escape / Unescape
Validate
JSON Validator
±JSON Diff / Compare
§JSON Schema Generator
JWT Decoder
Convert
→csvJSON to CSV
csv→CSV to JSON
⇄ymlJSON ⇄ YAML
⇄xmlJSON ⇄ XML
→tsJSON to TypeScript
Query
$.JSONPath / JQ Tester
Generate
Mock JSON Data Generator
±

JSON Diff / Compare

Spot added, removed and changed values between two documents.
processes as you type · client-side
Sample
Upload
Ignore array order
⧉ Copy output ⌘C
Download
Share
Clear
JSON A219 B · paste or drop a file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
JSON B216 B · paste or drop a file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Diff — A → B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{
"active": true,
"email": "ada@example.com",
"id": "usr_8x42",
- "name": "Ada Lovelace",
+ "mfa": true,
+ "name": "Ada King",
"plan": {
"renews": "2026-08-01",
"seats": 5,
"tier": "pro"
},
"roles": [
- "admin",
- "editor"
+ "admin"
]
}
✓ valid (RFC 8259)219 B → 304 B0.0 msLn 1, Col 1UTF-8

About JSON Diff / Compare

The JSON diff tool compares two JSON documents and highlights exactly what was added, removed and changed. Rather than eyeballing two blobs, you get a structural comparison by key and path, so you can see how an object evolved between two versions or two environments.

Both documents are compared in your browser — nothing is uploaded. That makes it safe to diff two production responses, a staging config against prod, or a before-and-after of a record with sensitive fields. Free, no signup, no limits.

It is ideal for reviewing API changes, debugging why two requests behave differently, verifying a migration, or checking that a transform preserved the fields you expected.

How it works

Structural, path-based comparison

The diff walks both documents by key and array index rather than comparing raw text, so reformatting or whitespace differences never show up as changes. You see additions, removals and value changes at the precise path where they occur.

Added, removed and changed

Keys present only in document B are marked as added, keys only in A as removed, and keys in both with different values as changed — showing the old and new value side by side. Unchanged data stays quiet so the real differences stand out.

Ignore array order

Arrays are ordered by default, so a reordered list reports as changes. Turn on Ignore array order to compare arrays as sets, which is what you want when the order is not semantically meaningful — for example a list of roles or tags.

Nested objects and arrays

The comparison recurses into nested structures, so a change deep inside an object is reported at its full path rather than marking the whole parent as changed. This keeps large-document diffs readable.

Frequently asked questions

How is this different from a plain text diff?

A text diff compares lines and is thrown off by formatting, key order and indentation. This tool compares the parsed structure by path, so it reports only real data differences.

Why is a reordered array showing as changes?

By default array position matters. If order is not meaningful for your data, enable Ignore array order to compare the elements as a set instead.

Can I compare two production payloads safely?

Yes. Both documents are diffed locally in your browser and never uploaded, so sensitive data stays on your machine.

Does it show nested changes?

Yes. The diff recurses into nested objects and arrays and reports each change at its full path, rather than flagging the whole parent object.

What if one side is invalid JSON?

The tool needs both documents to parse before it can compare them. If either side has a syntax error, it reports the problem so you can fix it first.