privtools
Developers

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

  1. 1Paste the original JSON in the top editor and the modified JSON in the bottom editor.
  2. 2Wait for automatic validation — fix syntax errors using the line and column hints before comparing.
  3. 3Review the Paths view to see added, removed, and changed fields at the JSON path level (e.g. user.email, items[2]).
  4. 4Switch to Lines view when you want a traditional side-by-side diff of pretty-printed JSON.
  5. 5Use Sample data to explore the tool, Format both to normalize whitespace, or Swap to reverse original and modified.
  6. 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.