Skip to content
JSON Diff Checker
More free tools

JSON Diff Checker: Compare Two JSON Files

See every change by path. Your data stays in your browser.

Original

Empty

Changed

Empty

Result

  1. Paste the first JSON on the left.
  2. Paste the second JSON on the right.
  3. Read the list of changes, with a path for each one.

What a JSON diff checker does

A JSON diff checker compares two JSON documents and lists what changed. This one shows each change with its path, for example $.user.email, the old value and the new value. It compares the data and ignores the layout.

A plain text diff does not work well for JSON. Two files can hold the same data with the keys in another order, or one file can sit on a single line. A text diff then marks every line as changed. Here, only real changes show up.

Exact numbers: JSON compare that does not round

Many online JSON compare tools read every number as a floating point value. A number with 17 or more digits then loses its last digits. Two different ids can look the same. In our test on October 21, 2026, three of four popular tools called the two numbers below identical, and one of them rewrote both as 12345678901234567000.

DocumentValue
Original12345678901234567890
Changed12345678901234567891
This tool1 change. Numbers keep every digit.

Numbers still compare by value, so 1.0, 1 and 1e0 are equal. The example also holds 10.5 and 10.50. They match.

How to compare two JSON files

  1. Paste the first JSON into Original and the second into Changed. You can also drop a file on a box or press Open.
  2. Read the list of changes. Each row shows the kind of change, the path, and the values. The list updates while you type.
  3. Set options if you need them: how to match arrays, which fields to ignore, and the rules for numbers and text. Options that are on show as chips under the toolbar.

Press Ctrl or Cmd and Enter to compare at once. The Sample button loads a pair that shows every kind of change. Use Copy share link to send a diff to a colleague. The link holds both documents, so share it only with people who may see them.

What it ignores and what it reports

CaseResult
{"a":1,"b":2} and {"b":2,"a":1}Equal. Key order is ignored.
Pretty printed and minified textEqual. Spaces and line breaks are ignored.
1.0 and 1, or 1e3 and 1000Equal. Numbers compare by value.
1 and "1"Type change: number to string.
null and a missing keyDifferent. The key is added or removed.
12345678901234567890 and 12345678901234567891Different. Big numbers are not rounded.

Compare JSON arrays by id

Arrays are the hard part of a JSON compare. Take two lists of three records with the ids 1, 2 and 3. In the second list the records come in another order, and record 1 has a new value. Compared by position, item 1 meets item 1, item 2 meets item 2, and so on. Every item sits in a different place, so the tool reports 6 changes.

Compared by key id, each record meets the record with the same id. The tool reports one change: $.u[id=1].v. This is the usual choice when you compare API responses. In Side by side, matched records sit on the same row, and a moved record carries a mark.

The default, Auto, looks for a field that every item has and that never repeats. It tries id, uuid, _id, key, sku, code, slug, email and name, in this order. It tells you what it chose above the result, and each array has its own choice. If the ids repeat, Auto falls back to position and shows a warning.

Ignore array order in a JSON compare

Sometimes the order of items does not matter. A list of members or tags can come back in any order. Set Arrays to Ignore order. The tool matches items that are equal, wherever they sit, at every depth. It then pairs the items that are left by the number of fields they share, so a changed item shows as changed and not as removed plus added.

You can also choose it for one array only, for example roles, and keep Auto for the rest. When a position match finds the same items in another order, the result suggests Ignore order.

Ignore fields such as timestamps

Fields like updatedAt or requestId change on every call. Add them under Options, Ignore paths, one pattern per line:

  • **.updatedAt skips that field at any depth.
  • items[*].id skips the id of every item in items.
  • $.meta.requestId skips one exact place.

A pattern with an error shows the line number. The result tells you how many places were ignored.

Compare large JSON files

The compare runs in a background worker, so you can keep typing while it works. A Cancel button appears when a compare takes more than a moment. In our tests, two files of about 5 MB with 35,000 records each compared in under two seconds on a laptop. The result shows the time it took. Files up to 50 MB open, and the tool warns you above 25 MB. Very large files depend on your device and browser.

Your data stays in your browser

The comparison runs on your device. The page does not send what you paste to a server. You can check this yourself. Open the Network tab in your browser tools, paste two documents and press Compare. No request carries your data.

This site may count visits. That count never includes your JSON. Options you choose are saved in your browser only, so the next visit starts with the same settings. Your documents are not saved.

What this tool does not do

This tool compares JSON. It does not convert to CSV or YAML, check a schema, or fetch a URL. Paste the text or open a file. It also does not merge changes. For other free tools, see all Bingemind tools.

Frequently asked questions

Does key order matter when I compare JSON?

No. Objects with the same keys and values are equal, whatever the order of the keys. Spaces and line breaks do not matter either. Arrays are different: the order of items in an array can be part of the data, so the Arrays option lets you choose how to match them.

How do I compare two JSON files and ignore the order of array items?

Set Arrays to Ignore order. The tool then matches items that are equal, in any position, and pairs the rest by how many fields they share. A changed item shows as changed, not as removed plus added. If your items have an id, By key or Auto is usually clearer.

How do I ignore fields like updatedAt or id?

Open Options and write one pattern per line under Ignore paths. Use **.updatedAt to skip that field at any depth, items[*].id to skip the id of every item in items, or $.meta.requestId for one exact place. Ignored parts are removed from both sides before the compare.

Is my JSON uploaded to a server?

No. The compare runs in your browser, in a background worker. The page makes no request that carries what you paste. You can check this: open the Network tab in your browser tools, paste two documents and press Compare. You will see no request with your data.

How big a file can I compare?

Files up to 50 MB open. We tested two 5 MB files with 35,000 records each. The first changes show in under two seconds on a laptop, and the page stays usable. Two 49 MB files took about 10 seconds. Above 25 MB the tool warns you, and a Cancel button stops a long compare. Memory and your device set the real limit.

Why does it show 1 and "1" as different, but 1.0 and 1 as the same?

A number and a string are different types, so 1 and "1" are a type change. Numbers compare by value, so 1.0, 1 and 1e0 are equal. If you want the written form to count, choose As written under Numbers. Large numbers are never rounded: 12345678901234567890 and 12345678901234567891 differ.

What is the difference between null and a missing key?

They are different. If a key is null in one document and absent in the other, the tool reports the key as added or removed, and the value shows as null. If a key is null in one and 0 in the other, that is a type change from null to number.

How do I compare JSON in VS Code or on the command line?

In VS Code, select two files and choose Compare Selected. This is a text diff, so key order and spacing show as changes. On the command line, diff <(jq -S . a.json) <(jq -S . b.json) sorts keys first, but it still compares arrays by position. This tool handles both cases.

How do I compare two JSON files in Python?

Load both files with json.load and compare them with ==. Python ignores key order in objects, but it compares lists by position, so a reordered list shows as different. It also reads large integers exactly. For a readable list of changes with paths, matching by id and ignored fields, paste both files into this tool.

Can I send a diff to someone?

Yes. Press Copy share link after a compare. The link holds both documents and your options in the part after the # sign. Browsers never send that part to a server. The link contains your data, so share it only with people who may see it. Large pairs are too big for a link. Use Download .txt for those.

More free tools from Bingemind