JSON Compare
Diff two JSON documents structurally — formatting differences are ignored, only real additions, removals, and changes are highlighted.
Paste JSON into both panes and click Compare to see differences.
Structural Diff
Compares by parsed shape, not text — formatting never causes false positives.
Handles Large Documents
Comparisons over 200KB run in a Web Worker to keep the UI responsive.
Local Processing
Your data never leaves your browser. Privacy first comparison.
How to Compare Two JSON Documents
- Paste the original document into the left pane and the changed version into the right pane.
- Click Compare.
- Read the diff below: added, removed, and changed fields are color-coded, with old and new values shown side by side.
- Leave "Hide unchanged" checked to see only the differences — untick it when you need the full document for context.
Example: What Changed Between Two Config Versions
Left (original) vs right (changed)
{"version":"1.4.0","features":{"darkMode":true,"export":false}}
{"version":"1.5.0","features":{"darkMode":true,"export":true},"beta":true}The diff reports
version changed "1.4.0" → "1.5.0" features.export changed false → true beta added true
features.darkMode is identical in both documents, so with "Hide unchanged" on it doesn’t appear at all — only the three real differences do.
Structural, not textual
The two documents are parsed and compared as data, not as lines of text. Reordering keys, changing indentation, or minifying one side produces zero differences — a text diff would flag every line. That makes this the right tool for comparing API responses across environments or config files touched by different formatters.
Reading the result
Every difference is classified as added (exists only in the right document), removed (only in the left), or changed (present in both with different values), and nested differences carry their full path — features.export, not just export — so you know exactly where in the document the change lives.
Frequently Asked Questions
Only values and structure — reordering keys within an object never shows up as a change, since object key order has no meaning in JSON. Only additions, removals, and value changes are reported.
By position (index): item 0 on the left is compared against item 0 on the right, item 1 against item 1, and so on. This is simple and predictable, but it means inserting a new item at the start of an array will show every item after it as "changed" — since everything shifted by one position — rather than a single clean "item added." Worth keeping in mind when diffing reordered lists.
Yes — there's a toggle to show only additions, removals, and changes, hiding unchanged fields so a small diff in a large document doesn't get lost. It's on by default.
No. Both sides are diffed entirely in your browser — nothing you paste into either panel is ever transmitted anywhere, which matters if you are comparing production data on one side.
That's one of the most common uses — paste the staging response on one side and production on the other to catch drift (a field that's missing, renamed, or has a different type) before it causes a bug. Since the diff is structural rather than text-based, differently-formatted-but-equivalent JSON on each side won't produce false positives.
Related Tools
JSON Formatter
Make messy, minified JSON readable with customizable indentation.
JSON Beautifier
Pretty-print JSON with the same fast, local engine.
JSON Validator
Check JSON validity with precise line/column errors.
JSON Viewer
Explore JSON as a collapsible, searchable tree.
JSON Minifier
Strip whitespace to compress JSON for transport.
JSON to CSV
Flatten nested JSON into a downloadable CSV file.