JSON Diff
Free online JSON diff tool — compare two JSON files or API responses semantically. See added, removed, and changed paths; property order is ignored.
100% client-side — your data never leaves this tab
Loading tool…
What is JSON Diff?
JSON Diff is a free online tool to compare two JSON documents semantically — a private alternative to jsondiff.com and other upload-based comparers. Paste an original and modified payload, validate both sides instantly, and see exactly which paths were added, removed, or changed. Unlike a plain text diff, reordering object keys does not create false positives. Switch between path-based structural diff and formatted line diff when reviewing API responses, config files, OpenAPI specs, test fixtures, or webhook payloads. Everything runs in your browser; nothing is sent to a server.
JSON validation and comparison run 100% in your browser. Documents are never uploaded, stored, or logged on any server.
How to use JSON Diff
- 1Paste the original JSON in the top editor and the modified JSON in the bottom editor.
- 2Wait for automatic validation — fix syntax errors using the line and column hints before comparing.
- 3Review the Paths view to see added, removed, and changed fields at the JSON path level (e.g. user.email, items[2]).
- 4Switch to Lines view when you want a traditional side-by-side diff of pretty-printed JSON.
- 5Use Sample data to explore the tool, Format both to normalize whitespace, or Swap to reverse original and modified.
- 6Copy the diff summary to paste into pull requests, Jira tickets, or release notes.
Examples
API response regression
Reports count as changed, page as added — items array unchanged.
Original:
{"status":"ok","count":10,"items":[{"id":1,"name":"Alpha"}]}
Modified:
{"status":"ok","count":12,"page":1,"items":[{"id":1,"name":"Alpha"}]}Key reorder is not a diff
Semantically identical. A line-based diff would show every line as changed.
{"version":2,"enabled":true,"name":"prod"}
vs
{"name":"prod","version":2,"enabled":true}Nested config change
Shows database.host changed and database.ssl added without diffing unrelated keys.
{"database":{"host":"db.internal","port":5432}}
→
{"database":{"host":"db.staging","port":5432,"ssl":true}}Tips & common mistakes
- Use Paths view first for API and config reviews — it surfaces the real semantic changes.
- Lines view is helpful after Format both, when you want a readable text diff of normalized JSON.
- Array diffs are index-based: inserting an item at the start shifts every following index.
- If you only care about text changes, the Diff Checker tool compares raw strings line by line.
- Large payloads stay local — there is no file size upload limit because nothing leaves your tab.
Who uses this tool?
- Backend engineers comparing REST or GraphQL responses before and after a deploy.
- DevOps teams reviewing changes to Kubernetes, Terraform, or environment JSON configs.
- QA engineers verifying golden test fixtures and snapshot updates in CI pipelines.
- Integration developers checking Stripe, Shopify, or webhook payload drift across versions.
- Mobile and frontend developers diffing cached JSON state against a fresh API response.
Frequently asked questions
- What is a JSON diff tool?
- A JSON diff tool compares two JSON documents and reports what changed — added keys, removed keys, and updated values — at the path level instead of treating the file as plain text. This is essential when object key order differs but the data is the same.
- How is this different from jsondiff.com or a text diff?
- Like jsondiff.com, this tool compares parsed JSON structures semantically. A text diff (or Diff Checker) highlights line changes even when only whitespace or key order differs. JSON Diff ignores property order and reports changes at paths like user.address.city.
- Does property order matter when comparing JSON?
- No. JSON objects are unordered collections of key-value pairs. Two objects with the same keys and values are identical in this tool regardless of how keys are ordered in the source text.
- How are array differences shown?
- Arrays are compared by index — items[0] is compared to items[0], items[1] to items[1], and so on. New tail elements appear as added paths; removed tail elements appear as removed paths. Inserting in the middle will show changes at subsequent indexes.
- Can I compare two JSON files without uploading them?
- Yes. Paste or type JSON directly into the editors. Parsing, validation, and comparison run entirely in your browser — your API keys, PII, and production configs never leave your device.
- When should I use Paths view vs Lines view?
- Paths view is best for understanding what data changed in nested objects and arrays. Lines view shows a formatted side-by-side text diff — useful when documents are structurally similar and you want a familiar red/green line comparison after pretty-printing.