Search tools...⌘K
JSON Diff
Compare two JSON documents by structure — key order and formatting are ignored.
Original
Changed
6 differences
1 added1 removed4 changed
| Change | Path | Before | After |
|---|---|---|---|
| Removed | $.deprecated | false | — |
| Added | $.featureFlags | — | {"newPricing":true} |
| Changed | $.limits.memory | "512Mi" | "1Gi" |
| Changed | $.regions[1] | "us-east-1" | "ap-south-1" |
| Changed | $.replicas | 3 | 5 |
| Changed | $.version | "2.4.1" | "2.5.0" |
How to Compare Two JSON Documents
- 1
Paste both versions
Put the original on the left and the new one on the right. Two deployment configs are preloaded as an example.
- 2
Read the change list
Each row shows the JSON path that differs, what it was and what it became. Paths use standard $.a.b[0] notation.
- 3
Ignore the noise
Reordered keys, changed indentation and differing whitespace produce no output, because the comparison is on structure rather than text.
- 4
Act on the result
Use the paths to write assertions, update a schema, or explain exactly what changed between two API responses.
Frequently Asked Questions
A text diff compares lines, so reordering keys, reindenting a file or reformatting it shows up as large changes even though the data is identical. A structural diff parses both sides and compares values by path, so only genuine data differences are reported.
No. JSON objects are unordered by definition, so two documents with the same keys in different order are treated as identical. Array order does matter, because arrays are ordered — moving an element is reported as changes at those indices.
Paths follow JSONPath notation. $ is the document root, dots descend into object keys and square brackets index into arrays, so $.limits.memory is the memory key inside the limits object and $.regions[1] is the second region.
The value exists on both sides but its JSON type differs — a number became a string, or an object became an array. These are called out separately because they usually break consumers even when the value looks similar, such as 3 becoming \"3\".
Yes, that is the common use. Paste yesterday's response and today's, and every added, removed or retyped field is listed with its path. Pair it with the JSON Schema Generator to turn the newer shape into a contract you can validate in CI.
No. Both documents are parsed and compared in your browser. Nothing is transmitted, which matters when you are diffing real production payloads.