JSON Diff / Change Report (Free Online Tool)
Compare old and new JSON inputs and return a structured report of added, removed, and changed fields
Paste your JSON → Get results instantly (no signup)
→ Compare these JSON inputs and return a report of changed, added, and removed fi...
1{2 "changed": [3 {4 "kind": "changed",5 "path": "plan",6 "before": "starter",7 "after": "pro"8 },9 {10 "kind": "changed",11 "path": "features.aiDraft",12 "before": false,13 "after": true14 },15 {16 "kind": "changed",17 "path": "limits.documents",18 "before": 10,19 "after": 10020 }21 ],22 "added": [23 {24 "kind": "added",25 "path": "features.apiAccess",26 "value": true27 }28 ],29 "removed": [30 {31 "kind": "removed",32 "path": "features.legacyExport",33 "value": true34 }35 ]36}Love the result?
Use this exact pipeline in your app, backend, or LLM workflow.
No setup needed. Works with curl, Node, Python.
Uses example data. For edited input, copy from the playground.
Works with:
- API responses
- Nested JSON
- Arrays & objects
Example: input → output
{ "plan": "pro", "features": { "aiDraft": true, "history": true, "apiAccess": true }, "limits": { "documents": 100 }}{ "changed": [ { "kind": "changed", "path": "plan", "before": "starter", "after": "pro" }, { "kind": "changed", "path": "features.aiDraft", "before": false, "after": true }, { "kind": "changed", "path": "limits.documents", "before": 10, "after": 100 }Read more on the blog
Advanced usage (optional)
JSON Diff / Change Report
v1.0.0Description
JSON Diff / Change Report
Compare two JSON inputs and output a structured report or focused diff subset. Accepts a primary input (the new JSON) and secondary input (the old JSON), then shows what changed, was added, or was removed between them.
How It Works
This utility requires two inputs — primary (the "new" version) and secondary (the "old" version). It performs a deep comparison and outputs results based on the selected mode.
Diff Modes
Report
Return a structured report with changed, added, and removed arrays. Entries include dot paths, kind, and either before/after values or the added/removed value.
Changed Only
Return the subset of the new JSON that differs from the old JSON. Modified and added fields are included; removed fields are excluded because they do not exist in the new JSON.
Added Only
Show only fields that exist in the primary input but not in the secondary. Useful for detecting new additions.
Removed Only
Show only fields that exist in the secondary input but not in the primary. Useful for detecting deletions.
Full Annotated
Show all fields with _diff_ markers indicating their status: "unchanged", "changed", "added", or "removed". Provides a complete picture of all differences.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
| Diff Mode | enum | report | report, changed-only, added-only, removed-only, or full-annotated |
Use Cases
Version Comparison
- Config changes: Compare two versions of a configuration file to see what changed
- API responses: Diff API responses before and after a deployment
- Schema evolution: Identify added or removed fields between schema versions
Data Validation
- Migration verification: Compare source and target data after migration
- Sync detection: Find out-of-sync records between two data sources
- Audit trail: Track exactly which fields were modified in an update
Debugging
- State inspection: Compare application state before and after an action
- Response diffing: Compare expected vs. actual API responses
- Regression detection: Identify unexpected changes in output data
Configuration
| Name | Type | Default | Description |
|---|---|---|---|
| Diff Mode | enum | report | report: return changed, added, and removed entries with paths. changed-only: show the new JSON subset with modified and added values. added-only: show only new keys. removed-only: show only deleted keys. full-annotated: show all with _diff markers.
report changed-only added-only removed-only full-annotated |
Examples
Compare these JSON inputs and return a report of changed, added, and removed fields.1{2 "changed": [3 {4 "kind": "changed",5 "path": "plan",6 "before": "starter",7 "after": "pro"8 },9 {10 "kind": "changed",11 "path": "features.aiDraft",12 "before": false,13 "after": true14 },15 {16 "kind": "changed",17 "path": "limits.documents",18 "before": 10,19 "after": 10020 }21 ],22 "added": [23 {24 "kind": "added",25 "path": "features.apiAccess",26 "value": true27 }28 ],29 "removed": [30 {31 "kind": "removed",32 "path": "features.legacyExport",33 "value": true34 }35 ]36}API Usage
curl -X POST https://your-domain.com/api/v1/utilities/compare.json-diff \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"inputs":{"primary":{"plan":"pro","features":{"aiDraft":true,"history":true,"apiAccess":true},"limits":{"documents":100}},"secondary":{"plan":"starter","features":{"aiDraft":false,"history":true,"legacyExport":true},"limits":{"documents":10}}},"config":{"mode":"report"}}'1{2 "changed": [3 {4 "kind": "changed",5 "path": "plan",6 "before": "starter",7 "after": "pro"8 },9 {10 "kind": "changed",11 "path": "features.aiDraft",12 "before": false,13 "after": true14 },15 {16 "kind": "changed",17 "path": "limits.documents",18 "before": 10,19 "after": 10020 }21 ],22 "added": [23 {24 "kind": "added",25 "path": "features.apiAccess",26 "value": true27 }28 ],29 "removed": [30 {31 "kind": "removed",32 "path": "features.legacyExport",33 "value": true34 }35 ]36}