JSON Diff Checker
Compare two JSON values and see exactly which keys were added, removed, or changed.
How this tool works
Paste JSON into both panels
The original value on the left, the changed value on the right.
Both are validated first
An invalid panel shows its parse error immediately - nothing is diffed until both sides are valid JSON.
Keys and values are compared structurally
Not a text diff - objects are compared by key, so reordered keys never produce a false difference.
Read the path-based results
Each change shows its full nested path, like "user.address.city", not just a line number.
Quick facts
- Category
- Validators
- Best for
- Spotting exactly what changed between two API responses or config versions
About this tool
Paste two JSON values into the left and right panels to get a structural comparison rather than a line-by-line text diff - the kind that falsely flags two objects as different just because a key moved or the formatting changed. Each difference is reported with its full nested path, like "user.address.city: changed from 'NYC' to 'LA'", so you can see exactly where two payloads diverge without hunting through reformatted JSON by eye. This is a genuinely different comparison than a text diff tool: reordering keys in an object produces zero differences here, since JSON objects are unordered by spec, while a real value change three levels deep in a nested structure is caught and reported by its exact path. Both panels must contain valid JSON before a comparison runs - an invalid panel shows its parse error immediately instead of attempting a partial diff. Runs entirely client-side, so nothing you paste is ever uploaded.
Why use this tool
Structural, not line-based
Reordering keys or reformatting whitespace produces zero differences - only real value changes are reported.
Full nested paths
Every change is labeled with its exact location, like "user.roles[1]", not just a line number to scan for.
Distinguishes added, removed, and changed
Three separate categories instead of a generic "different," so you know exactly what kind of change happened.
Validates before comparing
Invalid JSON in either panel is caught immediately, instead of producing a meaningless partial diff.
Frequently asked questions
A text diff compares JSON line by line, so it treats reordered keys, different indentation, or trailing whitespace as changes even when the underlying data is identical. This tool parses both sides as actual JSON and compares them by key and value, so a reordered object produces zero differences - only real additions, removals, and value changes show up, each with the exact path to where it happened.
The invalid panel shows its parse error immediately, in the same place a formatter would report it, and no diff is attempted until both panels contain valid JSON. This avoids a partial or misleading comparison against JSON that couldn’t actually be parsed.
Arrays are compared index by index rather than by trying to detect reordered or moved elements, so a value moving from index 0 to index 1 is reported as a change at both positions rather than as a single "moved" entry. This keeps the comparison predictable for the config files and API payloads this tool is built for, where array order is usually meaningful.
Explore more free tools
Formatters, converters, validators, and generators - all free and running entirely in your browser.
Browse more tools