JSON compare and JSON diff.
A structural diff, not a text diff: both sides are parsed first, so key order and formatting never show up as changes. Everything runs in your browser, nothing is uploaded. Related: JSON minifier → · All free tools →
Compare two files without pasting either one
The jsonbolt desktop app opens a second window one shortcut away, so yesterday's payload sits beside today's at full size. It parses at 3 GB/s, which is the difference between comparing two 40 KB samples and two real production dumps.
Open the first file
Drag it in, or press Ctrl + O⌘ O. Any size, no split step.
Press Ctrl + Shift + N⇧ ⌘ N
A second window opens beside the first. Load the other file into it.
Search both
Jump to the same path in each window and read the two values side by side.
Free for personal use, on files of any size.
Why a structural diff beats a text diff for JSON
Run two JSON files through diff and the output is dominated by noise: a formatter changed the indentation, a serializer emitted the keys in a different order, a trailing newline moved. None of that changes the document, but all of it shows up as changes.
This tool parses both sides first and compares the resulting values. {"a":1,"b":2} and {"b":2,"a":1} are the same document and produce an empty diff. Reindenting a file produces an empty diff. What survives is only what actually differs: a key that appeared, a key that vanished, a value that moved.
Arrays are the one place order still counts, because in JSON an array is ordered by definition. Items are matched by index, so an element inserted near the front shifts everything behind it and reads as a long run of changes. That is honest rather than clever: the alternative is guessing at identity, and a guess that is wrong is worse than a diff that is long.
How this comparison handles the details
- Both sides are validated first. A syntax error names the pane and shows the parser's message with its position, rather than producing a misleading diff.
- Types are part of the comparison.
1and"1"are a change, not a match, because a number and a string are different JSON values. - Nesting is preserved. Objects and arrays are walked recursively, so a change six levels down is shown in place rather than as a replacement of the whole branch.
- Only changes collapses every unchanged line, which is what you want the moment either document is longer than a screen.
- Everything runs locally. Neither document leaves the tab.
FAQ
How do I compare two JSON files?
Paste one document into each pane above. The diff appears as you type, with added keys in green, removed keys in red and changed values in yellow. Nothing is uploaded, so it is safe for production payloads.
Is this a text diff or a structural diff?
Structural. Both documents are parsed first, so indentation, key order and whitespace are ignored entirely. Reformatting a file produces no diff at all, which is the main thing a plain text diff gets wrong on JSON.
Does key order matter?
No. {"a":1,"b":2} and {"b":2,"a":1} are treated as identical, because they are the same JSON document. Array order does matter, since arrays are ordered by definition.
How are arrays compared?
Index by index. Item 0 is compared against item 0, and so on, with any extra items on either side shown as added or removed. That is predictable, but it means inserting an element near the start shifts everything after it and shows as a long run of changes.
Is my JSON uploaded to a server?
No. This JSON compare online tool is a small script running in your browser tab. Your data never leaves your machine, so it is safe for payloads containing API keys, tokens or customer records.
How do I compare two very large JSON files?
Browser tools hold both documents in tab memory, which gets painful past a few hundred megabytes. The jsonbolt desktop app opens each file in its own window at 3 GB/s, so you can put yesterday's payload beside today's and search both.