Compare two JSON documents and list every added, removed and changed value
Runs in your browser. Nothing you type is sent anywhere. Updated on 24 Oct 2026.Comparing two JSON documents by eye stops working at about 20 lines. This lists every value added, removed or changed, by its path, so configuration drift between two environments becomes obvious. Both documents are parsed in your browser and neither is uploaded anywhere.
Paste the older JSON into Left (before) and the newer one into Right (after), or press Try an example.
Turn on Ignore array order if items may appear in a different position.
Choose Side by side or Unified, and read each added, removed and changed value with its path.
Press Copy differences, or Download report to save the list as a text file.
This JSON diff compares two documents by structure, not by text. Paste one into each box and you get a list: values added, values removed, values changed, each with the path it sits at, such as $.customer.name or $.items[2].price. A count at the top tells you how many of each there are, and whether the two documents are in fact the same.
Comparing JSON as text fails for a reason everyone has met: the two files mean the same thing but the keys came out in a different order, so a line diff marks the whole file as changed. Here, key order is never a difference, because an object is a set of keys and nothing in JSON says which comes first. Whitespace and indentation are ignored for the same reason.
Array order is a difference by default, because [1, 2] and [2, 1] really are different JSON. When the order is an accident of your database or your API, switch on "ignore array order": items are then paired by deep equality and only the ones with no partner are reported as added or removed.
Typical uses are checking why a staging response differs from production, finding the setting somebody changed in a config file, and confirming that a migration produced exactly the document it was supposed to. The result copies and downloads as plain text that reads like a patch, with a minus, a plus or a tilde in front of each path, which is easy to paste into a ticket. Both documents stay in your browser and are never uploaded.
Yes. No signup, no document size limit and no cap on how many comparisons you run. The page is paid for by a few ads shown outside the tool, and your documents are never part of them.
No. Both documents are parsed and compared in your browser. Payloads containing customer records, tokens or internal endpoints never leave your device, and nothing is kept once you close the tab.
No. Objects are compared by key, so {"a":1,"b":2} and {"b":2,"a":1} are the same document and produce no differences. Indentation and whitespace are ignored for the same reason. This is the main thing a plain text diff gets wrong.
Yes, with the ignore array order option. Items are then paired by deep equality and only the ones with no partner on the other side are listed. Leave it off when order is meaningful, for example a list of steps or a ranked result.
Each path says where in the document the difference sits. The dollar sign is the root of the document, a dot is an object key and square brackets are an array index or a key that is not a plain word. You can paste a path into most JSON query tools.
Yes. Copy or download the report as plain text. It starts with the counts, then one line per difference: a minus for removed, a plus for added and a tilde for a value that changed, with the old and new values side by side.
Still stuck? Ask about JSON Diff and anybody who knows can answer. No account needed.
Also works as: JSON Compare · Compare Two JSON Files.
Same job, other tools: JSON Schema Generator – Generate a JSON Schema from a sample JSON document, with types and required keys.
On the related tools: Readability Checker – Flesch reading ease and grade level, with what to change.
In the collections JSON Tools · Debug and Inspect.