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.
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.
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.
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.
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.
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.
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.
Yes. Both documents are diffed locally in your browser and never uploaded, so sensitive data stays on your machine.
Yes. The diff recurses into nested objects and arrays and reports each change at its full path, rather than flagging the whole parent object.
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.