How to use JSON Compare online, free

How to use JSON Compare online, free

By Hami Tech·July 10, 2026·Updated July 24, 2026·5 min read

Comparing JSON with an ordinary text diff produces a lot of noise. Reorder a couple of keys, reindent a block, or switch from tabs to spaces, and a line-based tool reports dozens of differences even though the data is unchanged. This tool parses both documents and compares the resulting values instead, so key order and formatting are ignored entirely and you see only what genuinely differs - which keys were added, which were removed, and which values changed.

You should not have to open an IDE to format a snippet from Slack, tidy a JSON blob, or check a hash. Paste it here, copy the result, move on.

JSON Compare is a good fit when checking what changed between two API responses.

Why this exists

JSON Compare is built around a few practical wins, not a long feature list:

  • Ignores key order, so two objects with the same data compare as identical.
  • Ignores whitespace and indentation entirely - only values are compared.
  • Reports a type change as one difference rather than expanding it into dozens of adds and removes.
  • Gives the exact line and column when JSON fails to parse, instead of a raw character position.
  • Filters by category, so you can hide unchanged rows and focus on what moved.
  • Runs entirely in your browser, which matters when the JSON is an API response containing real data.

Walkthrough

  1. Paste the original JSON on the left. Any valid JSON works: an object, an array, or even a bare value.
  2. Paste the changed version on the right. If either side is invalid, you get the exact line and column rather than a character offset.
  3. Read the summary counts. Added, removed, changed and unchanged are counted separately. Click any of them to hide or show that category.
  4. Work through the paths. Each row shows a path like user.roles[0] with the value from both sides, indented by nesting depth.
  5. Copy the differences. One button copies just the changes as plain text, ready for a commit message or a bug report.

Jobs it is built for

  • Checking what changed between two API responses.
  • Comparing a config file before and after a deployment.
  • Reviewing a JSON fixture change in a pull request.
  • Verifying a data migration produced the same structure.
  • Debugging why two environments behave differently by diffing their settings.

Worth knowing before you start

  • Use the Format button on either pane to pretty-print it with keys sorted - it makes the two sides much easier to read side by side.
  • Turn off the "same" filter to focus purely on differences. It is off by default for that reason.
  • If an array shows far more changes than you expect, check whether an item was inserted near the start. Arrays are compared by position.
  • For a genuinely text-level comparison - whitespace, line endings, ordering - use the Diff Checker instead.

What not to expect

  • Using a text diff for JSON and then chasing differences that are only formatting.
  • Expecting arrays to be matched by content. Inserting an item at the top shifts every later index, so everything after it reads as changed.
  • Assuming null and a missing key are the same. They are different, and both are reported distinctly here.
  • Pasting JavaScript object literals rather than JSON. Unquoted keys, single quotes and trailing commas are not valid JSON.

Privacy, in one paragraph

JSON Compare runs in your browser. The file or text you paste stays on your device. There is no account, and nothing is stored on a ToolBox server for this job.

If this is one step in a longer job, these usually come after it:

Short answers

How is this different from a normal text diff?

A text diff compares lines. This parses both documents and compares the actual values, so reordered keys and different indentation are not reported as changes. For JSON that is almost always what you want.

Does key order matter?

No. {"a":1,"b":2} and {"b":2,"a":1} are reported as identical, because in JSON they describe the same object. If you need order-sensitive comparison, use the Diff Checker.

How are arrays compared?

Position by position - index 0 against index 0, and so on. That is predictable, but it means inserting an item near the start shows every later item as changed. Matching array items by content would need a key the data may not have.

What does the path notation mean?

It shows where in the document the difference sits. user.roles[0] means the first element of the roles array inside the user object. The root of the document is shown as (root).

Is my JSON uploaded anywhere?

No. Parsing and comparison both happen in your browser. Nothing is sent to a server, which matters when you are diffing API responses that contain real customer data.

What happens if my JSON is invalid?

You get a message naming the line and column where parsing failed. That is more useful than the browser's native message, which quotes a character offset nobody can locate in a pasted document.

Can it compare JSON arrays at the top level?

Yes. Objects, arrays and even bare values like a string or a number all work.

Does it detect a type change?

Yes, and it reports it as a single change. If a value goes from an object to an array, you see one row rather than every key listed as removed and every element as added.

Open the JSON Compare when you are ready. It is free, and you do not need an account.