superjsonblob
Save & share JSON

JSON tools

JSON Diff

Compare two JSON values semantically — key by key, value by value, ignoring formatting and key order. Side-by-side or unified, with version-aware comparison for stored blobs.

Open the full diff viewer

Paste two JSON values, or two blob URLs, and see the structured diff between them.

Compare two JSON values

How it works

Both inputs are parsed and walked recursively. For objects, keys are matched by name, regardless of order. For arrays, values are matched by index — though jsondiffpatch will detect moved items in many cases. Each leaf value is compared by deep equality. The result is a tree of changes you can read top-down.

Crucially, formatting differences vanish. {"a":1} and { "a" : 1 } are identical in the eyes of a semantic diff — and that matches how your code sees them.

Use cases

  • Mock-API drift: diff today's fixture against last sprint's.
  • Configuration review: see exactly what changed in a config push.
  • API response debugging: diff prod vs staging response bodies.
  • Bug reports: attach "the JSON I sent" and "what came back" — colleagues see the structured delta instantly.

Frequently asked questions

What does "semantic" mean here?
A semantic diff compares the parsed values, not the raw text. Reordering keys in an object produces no diff. Reformatting whitespace produces no diff. Adding a key, removing one, or changing a value produces a clear, structured diff with the path to the change.
How is this different from a text diff like git diff?
git diff is a line-oriented text diff — it can't tell that '{"a":1,"b":2}' and '{"b":2,"a":1}' are the same JSON. A semantic JSON diff understands the structure: objects are unordered, arrays are ordered, and numbers, strings, booleans, and null are leaves to compare.
Can I diff two stored versions of the same blob?
Yes. superjsonblob stores every PUT as a new version. On any blob's history page, you can select two versions and open them in the diff viewer. The URL pattern is /compare?a=blob-id@version&b=blob-id@version.
Does it work on huge JSON?
The diff runs entirely in your browser using jsondiffpatch. It handles megabyte-scale JSON comfortably; for very large arrays the side-by-side view stays smooth thanks to virtualisation in the editor.
Side-by-side or unified — which should I use?
Side-by-side is best for reviewing focused changes (e.g. comparing two PR-sized configs). Unified is best for hunting a single change in a huge document — easier to scan top to bottom. The toggle in the diff view switches at any time.

Related tools