gizmobench
BrowseDaily

JSON Diff

Paste two complete JSON values to compare nested fields, arrays and API response bodies. Added, removed and changed values appear with their paths; indentation and object key order do not count as changes. Arrays compare by position, and numbers use JavaScript precision. Both inputs stay in your browser.

Paste two documents, or

Key order ignoredArrays compared by positionNothing uploadedRuns in your browser

Common questions

Does key order affect the comparison?
No. The comparison is structural, so reordered keys and reformatted whitespace are never reported as differences. Two documents that differ only in layout come back identical.
Is my JSON sent to a server?
No. Both documents are parsed and compared by your own browser. Nothing is transmitted, which matters when the file is a production configuration or contains credentials.
How does it handle arrays?
Arrays are compared by position, so the item at index 0 is compared against index 0. Reordering an array is reported as a change, because in JSON the order of an array is meaningful.
What happens with nested objects?
Nested fields are walked structurally. Simple names use dotted paths such as user.name and array items use indexes such as users[0].name. A key containing punctuation or an empty name uses quoted bracket notation, such as ["user.name"], so it is distinct from nested user.name. Show identical includes unchanged leaf values; the counts describe reported paths, not a count of files or all parent containers.
Is there a size limit?
None imposed. Because the work happens on your machine there is no upload, so the practical limit is your device's memory.
How are numbers compared, and what can it miss?
By value, after parsing, and the honest limits are worth knowing. 1.0 and 1 are the same number once parsed, so they are reported identical, and "1" as a string is not 1 as a number, so that is reported as a change. The one thing to watch is an integer beyond 2^53: JavaScript rounds it while reading the file, so two IDs that differ only in their last digits can arrive as the same value and no difference is shown. If your data carries IDs that long, compare them as strings.
Can I compare JSON while ignoring order?
Object key order is ignored: {"a":1,"b":2} and {"b":2,"a":1} compare equal. Array order is significant: [1,2] and [2,1] differ because positions change. Nested values follow the same rule. This is structural comparison, so indentation and whitespace outside strings do not count as differences.
How do I compare two JSON files or API responses?
Copy the contents of the first file or response body into Original and the second into Changed. The page compares parsed values, so a string "1" differs from the number 1 and a missing property differs from null. There is no file picker, URL fetch or HTTP request client. Parse errors identify the side to fix before a comparison appears.
Can I ignore array order or selected fields?
No. Object key order is ignored, but arrays remain positional and there is no ignore-fields setting. Moving an item can produce several differences. This page does not match records by an ID or compare arrays as sets or multisets.
Can it merge JSON, create a patch or compare schema compatibility?
It shows a difference table. It does not merge inputs, emit JSON Patch, save a report or decide whether one JSON Schema accepts everything another accepts. Schema text can be compared as ordinary JSON, but that is a structural diff of the documents, not a compatibility analysis.
Can it compare Instagram followers and following exports?
Only as ordinary JSON, with arrays matched by position. It does not extract account names or compute who follows you back. For a membership comparison, first extract plain names and use [List Compare](/list-compare); this page does not parse an Instagram export format for that job.

Comparison uses values parsed by JSON.parse: object key order is ignored, arrays compare by position and duplicate keys resolve to the last value. JavaScript numbers can round long integers or overflow; quote exact IDs as strings. The result is a structural difference table, not a patch, merge or schema-compatibility verdict.