Developer Tools
Live

JSON Diff

Deep-diff two JSON structures and see added, removed, and changed keys grouped by path.

Deep-diff two JSON structures and see added, removed, and changed keys grouped by path.

Quick start: Paste the original JSON into the left input. → Paste the modified JSON into the right input. → Review the grouped results: added, removed, and changed entries.

How to use JSON Diff

  1. 1

    Paste the original JSON into the left input.

  2. 2

    Paste the modified JSON into the right input.

  3. 3

    Review the grouped results: added, removed, and changed entries.

  4. 4

    Read the full path on each entry to locate the change in your source.

  5. 5

    If arrays look fully changed, sort both sides identically and compare again.

Real examples of JSON Diff in action

Changed and added keys
Before
{"name":"Al","age":30}
After
{"name":"Al","age":31,"city":"NY"}
Diff result
Before
left vs right above
After
changed: $.age 30 -> 31; added: $.city = "NY"
Type change flagged
Before
{"id":7}  vs  {"id":"7"}
After
changed: $.id 7 (number) -> "7" (string)
Popular tools

Try our most-used tools

Who is JSON Diff for?

Backend developers comparing API responses across versions

QA engineers debugging snapshot and contract test failures

DevOps engineers reviewing config drift before a deploy

Data engineers verifying field parity after a migration

Why use JSON Diff?

  • Walks nested objects and arrays recursively to find every difference.
  • Groups results clearly into added, removed, and changed for fast scanning.
  • Shows the full path ($.user.name) for each change so you can find it instantly.
  • Matches object keys by name, so reordered keys do not create false diffs.
  • Compares entirely in the browser, so sensitive payloads are never uploaded.

Common use cases

  • Compare two versions of an API response to spot what a release actually changed.
  • Diff a config file before and after an edit to confirm only intended keys moved.
  • Investigate a failing snapshot test by seeing precisely which paths drifted.
  • Verify a data migration kept every field by comparing source and target records.

How JSON Diff compares to alternatives

Honest comparison to other popular options — pick the right tool for the job.

ToolMain limitation
JSONDiff.comUseful but uploads your input to a server, which is a concern for sensitive payloads
git diff on JSON filesLine-based, so it misreports reordered keys as changes and ignores JSON structure
jq plus diff in a terminalFlexible but requires installing jq and chaining commands for a quick comparison
JSON DiffFree, runs in your browser, no sign-up, no watermarks, no file-size limits beyond your device memory.

Limitations & things to know

  • Arrays are compared by index, so inserted or reordered elements can over-report changes
  • It does no semantic or fuzzy matching of moved objects, only path and value comparison

About JSON Diff

A JSON diff tool compares two JSON documents and reports exactly what changed, classifying each difference as an added key, a removed key, or a changed value. Eyeballing two JSON blobs side by side is slow and error-prone, especially when they are deeply nested or thousands of lines long. This tool walks both structures recursively and lists every difference by its full path, such as $.user.address.city, so you can see at a glance what moved without scanning the raw text. The comparison follows JSON semantics rather than text semantics, which matters. Object keys are matched by name, not by position, so reordering keys in an object produces no diff. That is correct, because in JSON the order of object members is not significant. Arrays, however, are compared by index: the element at position 0 on the left is compared with position 0 on the right, and so on. This is a common gotcha. If you insert one element at the start of an array, every following element shifts by one index, and an index-based diff reports the whole tail as changed even though the values simply moved. When you care about set membership rather than order, sort both arrays the same way before diffing. Type changes are flagged as changes too: a value of 5 (number) versus the string "5" at the same path is reported as changed, not equal, which catches subtle serialization bugs where a field silently switched type between API versions. The diff is purely structural and value-based; it does not attempt fuzzy or semantic matching of moved objects. Everything runs locally in your browser, so payloads containing tokens, personal data, or internal fields are never uploaded.

Frequently asked questions

Arrays are compared by index, so inserting an element at the start shifts every later element to a new position and each looks changed. Sort both arrays the same way first if you care about membership, not order.
No. Object keys are matched by name, not position, so reordering keys in an object produces no diff. Array elements are still compared by index.
No. The number 5 and the string "5" at the same path are reported as a change. Type differences are flagged, which helps catch fields that silently changed type between versions.
No. The entire diff runs in your browser, so payloads with tokens or personal data stay on your device.

Your files never leave your device

Every tool on Xevon Tools runs 100% in your browser. No uploads, no servers, no tracking. Free forever.

Learn more

Embed JSON Diff on your site

Add this tool to your own website, blog, or internal tool page with one line of code. Free to use, no attribution required (but appreciated).

<iframe src="https://www.xevontools.com/embed/json-diff" width="100%" height="640" style="border:1px solid #e2e8f0;border-radius:12px;" title="JSON Diff — Xevon Tools"></iframe>
Share: