Original (A)

Changed (B)

Differences

When you need to compare a "before" and "after" of an API response, a config file, or a package.json, paste both JSON documents and this tool extracts exactly what changed. A plain text diff compares line by line, so reordering keys or re-indenting makes it report that "everything changed." This tool parses the JSON first and compares it as a structure, so differences in key order, whitespace and line breaks are ignored — only the values that were actually added, removed or changed are listed, each with a path like `user.tags[0]`. Rows are color-coded as added (green), removed (red) or changed (old value → new value), with a summary of how many were added, removed and changed. An "Ignore array order" option compares arrays as sets, so a list that was only reordered won't show up as a difference. The result copies as plain text with `+ / - / ~` markers, ready to drop into a review or report. Because JSON so often carries API keys, personal data or production payloads, the entire comparison runs inside your browser — nothing is uploaded, stored, or sent to a server.

How to use

  1. Paste the original JSON into "Original (A)" on the left and the new JSON into "Changed (B)" on the right (try "Sample" for an example).
  2. If you want to ignore arrays that were only reordered, turn on "Ignore array order" in the toolbar.
  3. The added, removed and changed values are listed below with their paths. Click "Copy" to grab the diff. Nothing is sent anywhere.

FAQ

Is the JSON I paste uploaded anywhere?

No. Parsing and comparison all run in your browser with JavaScript. Your JSON is never uploaded, stored, or sent to a server, so it's safe to compare data containing API keys, personal information or production payloads.

How is this different from a text diff?

A text diff compares line by line, so reordering keys or re-indenting shows up as a difference even when nothing really changed. This tool compares the JSON as a structure, ignoring key order, whitespace and line breaks, and reports only the values that were actually added, removed or changed.

How are the differences shown?

Each change is listed with a path like `user.tags[0]` and is color-coded: added (green), removed (red), or changed (old value → new value). A summary shows how many were added, removed and changed, and "Copy" gives you plain text with `+ / - / ~` markers.

What does "Ignore array order" do?

It compares arrays as multisets, so the same elements in a different order count as equal. Use it when you want to ignore a list that was only reordered. When it's off, arrays are compared element by element by index.

Are two JSON documents with different key order treated as equal?

Yes. Object key order is not significant, so documents with the same values but keys in a different order are reported as structurally identical. If even one value differs, only that spot is shown, with its path.

What happens if the JSON is broken?

It tells you which pane contains invalid JSON. Comments (JSONC) and trailing commas are outside the standard spec and count as syntax errors, so format and validate with a tool like json-format first, then compare.