Skip to content
Sealpaste

Compare Two JSON Documents

See what really changed between two JSON documents. Key order and formatting are ignored; each difference comes with its exact path.

Original JSON

Changed JSON

Paste JSON on both sides to compare.

How to use it

  1. 1Paste the original JSON on the left and the changed JSON on the right (or open files).
  2. 2Tick "Ignore array order" if [1, 2] and [2, 1] should count as equal.
  3. 3Read the list of differences: added, removed and changed values, each with its path.

Private by design

Everything runs in this browser tab. Your input is never uploaded, logged or saved on a server, and there are no public "recent" pages. Close the tab and it's gone.

How we keep it private

Examples

Reordered keys are not a change

Key order and number formatting (1 vs 1.0) do not matter in JSON.

Input

Left:  {"a": 1, "b": 2}
Right: {"b": 2, "a": 1.0}

Output

No differences
Changes with paths

Input

Left:  {"limits": {"rps": 100}, "owners": ["ana"]}
Right: {"limits": {"rps": 250}, "owners": ["ana", "li"]}

Output

changed  $.limits.rps   100 → 250
added    $.owners[1]    "li"

Why a text diff is the wrong tool for JSON

Two API responses can be identical in meaning and still look completely different: keys come back in another order, a serializer writes 1.0 instead of 1, indentation changes. A line-by-line diff flags all of that as changes and hides the one field that actually moved.

This compare parses both sides and walks the trees. Objects are matched by key, numbers by value, and the result is a short list you can act on: the path, the old value and the new value.

Reading the paths

Paths use JSONPath notation, the same you would use in jq, Postman tests or JSONPath libraries:

PathMeans
$The whole document
$.user.emailKey "email" inside key "user"
$.items[2]Third item of the "items" array
$["first name"]A key with a space or special character

Frequently asked questions

Does it ignore the order of keys?

Yes, always. JSON objects are unordered, so {"a":1,"b":2} equals {"b":2,"a":1}.

Can it ignore the order of array items?

Yes, tick "Ignore array order". Items are then matched by value, so [1, 2, 3] equals [3, 1, 2], and only items without a match are reported as added or removed.

Is 1 the same as 1.0?

Yes. Numbers are compared by value, so 1, 1.0 and 1e0 are equal. Very large integers are compared digit by digit, so no precision is lost.

Are my files uploaded?

No. Both documents are parsed and compared in your browser, in a background thread. Nothing is sent or stored.