Skip to content

JSON diff

Compare two JSON documents structurally and see every added, removed and changed value by its path.

Input
Changed JSON
Output

JSON diff

Paste the original JSON into the first field and the changed version into the second, and the tool reports every difference by its path: + user.roles[2] = "admin" for an added value, − user.legacyId for a removed one, ~ user.name: "Anna" → "Eva" for a change. The comparison is structural, not textual — both documents are parsed and their values compared recursively, so reformatting, indentation and the order of object keys never count as differences. That is exactly what a plain text diff gets wrong about JSON.

Reach for it when two API responses should match but don't: staging against production, yesterday's payload against today's, the response before and after a deploy. It is just as useful for configuration drift — two exported config files that grew apart over time — and for debugging serialized state, where a single changed flag hides in kilobytes of nested objects.

Array elements are compared by index, so a shifted list shows up as a run of changes. When order genuinely doesn't matter — tags, permission lists — turn on "Ignore array order" and arrays are matched as multisets: only genuinely added or removed elements are reported. "Show unchanged values" additionally lists every unchanged path, which turns the output into a full annotated inventory of the document. The output format turns the same comparison into a patch you can apply: RFC 6902 JSON Patch, with add, remove and replace operations on JSON Pointer paths, or an RFC 7396 merge patch where a null marks a deleted key. Array removals are ordered back to front so the patch still applies after each step, and test operations can be added before every change so applying it to a drifted document fails instead of overwriting someone else's edit.

Both documents are parsed and compared entirely in your browser. Nothing is uploaded, so production payloads, tokens and customer data inside your JSON stay on your device.

FAQ

How is this different from a text diff?
A text diff compares lines, so reformatting or reordered keys look like changes. This tool parses both documents and compares values structurally — only real differences in the data are reported.
Does the order of object keys matter?
No. {"a":1,"b":2} and {"b":2,"a":1} are identical. Objects are compared by key, not by position.
How are arrays compared?
By index: the third element of the original is compared with the third element of the changed document. Turn on "Ignore array order" to match arrays as multisets instead, so reordering is not reported as a difference.
What do the paths in the output mean?
Dots descend into objects and brackets into arrays — user.roles[2] is the third element of the roles array inside user. Keys that aren't plain identifiers are quoted in brackets.
Is my JSON uploaded anywhere?
No. Both documents are parsed and compared entirely in your browser and never leave your device.