JSON Compare
Compare two JSON objects and see the differences highlighted.
About JSON Compare
JSON Compare is a free online tool that takes two JSON documents and produces an exact, property-by-property diff in seconds. You paste or upload your JSON on the left and right sides, click Compare, and the tool walks every key, value, nested object, and array element recursively — marking each field as added (green), removed (red), modified (amber), or unchanged. A summary badge at the top tells you the total count of each change type at a glance.
The tool is built for the practical moments when you need to know precisely what changed between two versions of data: comparing an API response before and after a bug fix, reviewing what a configuration migration script actually modified, auditing the delta between two database export snapshots, or confirming that a data pipeline is transforming fields exactly as intended. Because the diff output is a structured tree rather than a raw text patch, you can expand or collapse nested sections and focus only on the changed paths without wading through hundreds of identical lines.
All processing runs entirely in your browser using JavaScript. Your JSON is never uploaded to a server, stored, or transmitted in any form, which means you can safely compare sensitive API payloads, internal configuration files, or confidential data exports without any privacy risk. The tool is free to use with no account required and no limits on how many comparisons you run.
Key Features
Deep recursive diff
The comparison engine traverses every level of nesting — objects inside objects, arrays of objects, mixed structures — so no difference escapes detection no matter how deeply it is buried.
Color-coded change tree
Added properties are highlighted green, removed properties red, and modified values amber. Unchanged properties are shown separately and can be toggled on or off to keep the view focused.
Change summary badges
A summary bar shows the exact count of added, removed, and modified fields as soon as the comparison runs, so you can assess the scope of changes before reading the details.
File upload support
Paste JSON directly into the editor or upload a .json file from disk on either side. Both inputs accept the same formats, making it easy to diff saved API responses or config exports.
Swap inputs in one click
Reverse the comparison direction instantly with the Swap button — useful for checking the inverse diff or verifying that left and right produce symmetric results.
100% client-side, no upload
Every comparison runs locally in your browser. No data leaves your machine, so you can safely compare internal configs, API secrets, and other sensitive payloads.
How to Use
Paste or Upload JSON
Enter your two JSON documents into the left and right editor panes. You can paste text directly or use the upload button to load JSON files from your computer.
Click Compare
Press the "Compare" button to run a deep comparison. The tool will parse both inputs and recursively diff every property, including nested objects and arrays.
Review Differences
Browse the color-coded diff tree below the editors. Green indicates added properties, red shows removed ones, and amber highlights modified values. Use the summary badges for a quick overview of total changes.
Example
Two versions of a user record are compared. The diff tree marks age and email as modified, phone and address.zip as added, and all unchanged fields as identical.
{
"name": "John Doe",
"age": 30,
"email": "john@example.com",
"address": {
"city": "Springfield",
"state": "IL"
},
"active": true
}
— vs —
{
"name": "John Doe",
"age": 31,
"email": "john.doe@example.com",
"phone": "+1-555-0123",
"address": {
"city": "Shelbyville",
"state": "IL",
"zip": "62565"
},
"active": true
} 3 differences found
MODIFIED age : 30 → 31
MODIFIED email : "john@example.com" → "john.doe@example.com"
MODIFIED address (2 properties)
MODIFIED city : "Springfield" → "Shelbyville"
ADDED zip : "62565"
ADDED phone : "+1-555-0123"
UNCHANGED name, state, active Common Use Cases
- arrow_circle_right
Debugging changed API responses
When an API endpoint starts returning unexpected data, paste the old and new response side by side to pinpoint exactly which fields changed, were added, or disappeared — without reading through hundreds of identical lines.
- arrow_circle_right
Reviewing configuration migrations
After running a migration script on a JSON config file, compare the before and after snapshots to verify the script modified only the intended properties and left everything else intact.
- arrow_circle_right
Auditing data pipeline transformations
Check that a data processing step is producing the correct output by comparing the raw input JSON against the transformed output and confirming each expected change is present and nothing extra was altered.
- arrow_circle_right
Catching regressions in test fixtures
When a test fixture or snapshot file changes unexpectedly, compare the old version against the new one to understand which properties were affected and whether the change is intentional.
- arrow_circle_right
Validating database export deltas
Compare two JSON exports of the same record at different points in time to produce an audit trail of what was modified between the two snapshots, down to the exact field level.