Compare two JSON files. One clear picture.
See what changed, where it changed, and what it means.
Compare JSON online without sending your data anywhere.
The difference
A fresh perspective is one comparison away.
Find the signal in your JSON.
Paste two documents above, or .
We’ll turn the differences into something readable.
Structure over syntax
Whitespace and object key order don’t count as changes. Only the data matters.
Every change has a path
Follow nested differences right to the key. Arrays are compared by position.
Private, without the fine print
No uploads. No accounts. No saved content. Close the tab and your data is gone.
Questions about comparing JSON
Is JSON Mirror free?
Yes. JSON Mirror is free to use, with no account, sign-up or installation. Open the page in any modern browser and paste two JSON documents.
Is my JSON uploaded to a server?
No. The comparison runs entirely in your browser tab. JSON Mirror makes no network requests with your data and uses no cookies, analytics or browser storage, so closing the tab discards everything.
Does JSON Mirror ignore key order and whitespace?
Yes. JSON Mirror compares the parsed data, not the text, so reordered object keys, indentation and line breaks are not reported as changes.
How does JSON Mirror compare arrays?
Arrays are compared by index. Item 0 is compared with item 0, item 1 with item 1, and so on. Inserting an item near the start therefore shows several changed positions plus one added item at the end; moves are not detected.
Does it tell a missing key apart from null?
Yes. A key that is absent and a key set to null are different. Going from missing to null is reported as added, and from null to missing as removed.
How large can the JSON documents be?
Each input can be up to 1,000,000 characters and nested up to 120 levels deep. The page shows the first 300 differences per filter, and Export report downloads every difference.
Can I save the comparison result?
Yes. Choose Export report to download a JSON file with every difference, including the paths and the original and updated values. The file is created in your browser.
Are very large numbers compared exactly?
Not always. JSON Mirror uses standard JavaScript parsing, so numbers are IEEE-754 doubles and integers larger than 9,007,199,254,740,991 can lose precision. Use a big-number-aware tool for those.
Guides
- How to compare two JSON files without uploading themCompare two JSON files privately with a diff tool that runs in your browser, or offline with jq or Python, so secrets and customer data never leave your device.
- Why key order and whitespace shouldn't show up in a JSON diffA JSON diff should ignore key order and whitespace. Learn why RFC 8259 treats them as insignificant and what a structural JSON comparison still flags.
- null vs. missing: the JSON difference that breaks APIsJSON null vs missing keys: why {"nickname": null} and {} mean different things in PATCH and JSON Merge Patch, and how to tell them apart in a diff.
- Comparing JSON arrays: by position or by identity?A practical JSON array diff guide: comparing by index, by an id key, by sequence alignment, or ignoring order, with worked examples and jq sorting tips.
- Reading JSON paths in a diff: $.settings.theme, $.members[2] and friendsHow to read JSON path notation in diff output: $ for the root, dots for keys, zero-based [n] indexes, quoted brackets, and JSONPath vs JSON Pointer.
- How to Export JSON Differences Beyond the 300-Result ViewJSON Mirror shows up to 300 differences per filter. Learn what the exported report contains, how to refresh stale results, and which limits still apply.