No comparison yet
Paste a document into each editor and press Compare. Because the comparison is structural, reformatting or reordering keys is not reported as a change.
Runs entirely in your browser. Your data isn't uploaded — this page makes no network request with anything you type, which you can verify in your browser's network tab. How this works.
What is the JSON Diff?
Text diffs are the wrong tool for JSON: reformat a payload or reorder its keys and every line looks changed even though nothing has. A structural diff compares the parsed values instead, so it reports what actually differs.
Paste two documents — the previous and current version of an API response, for example — and you get a list of added, removed and changed paths, with the old and new value at each one, plus a conventional line diff underneath for when you do care about the text.
How to use it
- Paste the original document on the left and the new one on the right.
- Press Compare (or Ctrl/Cmd + Enter).
- Read the change list: each row shows the JSON path and what happened to it.
- Toggle Ignore array order if the arrays are sets rather than sequences.
- Copy the change list as JSON or Markdown for a pull request comment.
Example
Two versions of the same config, compared by path.
A: {"replicas": 2, "image": "api:1.4.0"}
B: {"replicas": 4, "image": "api:1.4.0", "canary": true}
~ replicas 2 → 4 + canary true 1 changed, 1 added, 0 removed
Features
- Structural comparison by JSON path, immune to formatting differences
- Added, removed, changed and type-changed classifications
- Optional array-order-insensitive comparison
- Counts of each change type for a quick sense of blast radius
- Export the diff as JSON or a Markdown table