JSON Diff / Compare
JSON Diff / Compare puts two JSON documents side by side and reports how they differ in structure, not in text.
How to use it
- Paste the first document into Original JSON and the second into Modified JSON
- Select Compare — invalid JSON on either side is reported before the comparison runs
- Read the summary counts, then the Added, Removed and Changed lists with their paths
- Use Copy result for a text version, Swap sides to reverse the comparison, or Clear to start over
It parses both with the browser's JSON engine, so indentation, whitespace and the order of object keys are never treated as differences — only values are. The result groups every change into Added, Removed and Changed, each with a readable path such as user.address.city or items[2].price, plus a count of how many of each. Array items are compared by position, so a reordered array shows as changed items rather than a move. A value that switches JSON type — a number becoming a string, an object becoming an array — is flagged as a type change. If either side is not valid JSON, the tool says which side and why. Everything runs in your browser; nothing you paste is uploaded. This is a comparison tool: use JSON Formatter to make one document readable, or JSON Minifier to shrink it.
FAQ
No. The comparison is structural: both documents are parsed first, so {"a":1,"b":2} and {"b":2,"a":1} are reported as identical. Indentation and whitespace are ignored for the same reason.
By position, index by index. [1,2,3] and [3,2,1] are different because element 0 and element 2 changed. This version does not try to detect that an item simply moved, so inserting an item near the start shows every following position as changed. Where order is not meaningful, model that data as object properties keyed by id instead.
Two values at the same path with the same JSON type but a different value — "Malek" versus "Abdelmalek", 10 versus 11, true versus false. If the type itself differs, such as a number becoming a string, it is listed as a type change. Numbers are compared as numbers, so 1 and 1.0 are equal but 1 and 1.001 are not.
Each side accepts up to 2 MB of JSON, up to 100,000 values, and 64 levels of nesting. Beyond those limits the tool reports the limit rather than freezing. The comparison runs synchronously in the page, so an input close to the limit takes a moment.
No. Both documents are parsed and compared entirely in your browser with the built-in JSON engine and a local diff. Nothing is uploaded to Tooliba or to a third-party service, and analytics records only that the tool was used.