Json Web Viewer
All tools

JSON Diff — compare two JSON documents online

Paste two JSON documents — two API responses, two config versions, before/after a deploy — and see exactly what changed. Not a text diff: a semantic diff that understands JSON structure, entirely in your browser.

Most "JSON diff" tools online are really just text/line diffs wearing a JSON-colored theme: they compare characters, so reformatting a file or reordering an object's keys produces a diff full of noise even though nothing about the data actually changed. Json Web Viewer's Compare mode diffs the parsed data instead — object keys are matched by name regardless of order, and arrays are aligned so a single inserted element shows up as one addition instead of "changing" every element after it.

Once Compare is on, use the Prev/Next controls to step through every difference, or click Copy as JSON Patch to get the same differences as an RFC 6902 JSON Patch document — the format Kubernetes' Kustomize expects for a patchesJson6902 entry, or that kubectl patch --type=json applies directly.

Example — left document:

{
  "total": 2,
  "users": [
    { "id": 1, "name": "Ada Lovelace", "role": "engineer" },
    { "id": 2, "name": "Grace Hopper", "role": "admiral" }
  ]
}

right document:

{
  "users": [
    { "name": "Ada Lovelace", "id": 1, "role": "engineer" },
    { "id": 2, "name": "Grace Hopper", "role": "rear admiral" },
    { "id": 3, "name": "Alan Turing", "role": "mathematician" }
  ],
  "total": 3,
  "page": 1
}

A semantic diff flags exactly three real changes here: user 2's role changed, user 3 was added (one addition, not a cascade of "every later element moved"), and the top-level total changed with a new page key added. User 1's fields being reordered (name/id swapped) produces no difference at all — a text diff would flag that line as changed for no real reason.

Open this example in Compare mode →
The link above loads the two documents above, one per panel, with Compare already on — you land straight on the highlighted diff.

Frequently asked questions

How is this different from a text/line diff tool?

A line diff (like a code diff viewer) compares raw text line by line, so reordering an object's keys or reformatting the file shows up as a wall of changes even though the data is identical. This tool's default compare mode diffs the parsed data instead: object keys are compared by name, not position, and arrays are aligned so an insertion reads as one addition rather than shifting every later element into "changed". A text-mode line diff is also available for when you specifically want to compare raw formatting.

Can I generate a Kustomize patchesJson6902 patch from a diff?

Yes. Once Compare is on and both documents are valid JSON, the Copy as JSON Patch button produces an RFC 6902 JSON Patch document describing exactly the differences shown — paste it directly into a Kustomize patchesJson6902 entry or apply it with kubectl patch --type=json.

Does comparing two documents upload them anywhere?

No. The diff, like every other mode in Json Web Viewer, runs entirely in your browser. Neither document is sent to a server, including when you use Share to generate a link — the link encodes the documents themselves, compressed, in the URL.