JSON Diff Checker: Compare Two JSON Documents by Path, Not by Line

If you’ve ever pasted two versions of an API response into a plain text diff tool and gotten back a wall of red and green because one side happened to have different indentation, you know why comparing JSON as text doesn’t work. A structural diff — one that actually understands JSON — is the only way to see what really changed.
The Tooladex JSON Diff Checker does exactly that, instantly in your browser. Paste both documents, and see every real difference listed by path — no server, no upload, no account.
What Is a JSON Diff Checker?
A JSON diff checker compares two JSON documents — an “original” and a “modified” version — and reports the exact differences between them: which keys or array items were added, which were removed, and which values changed, identified by their path inside the document (like user.address.city or items[2]).
Unlike a plain text diff, which compares line by line and gets confused by re-indented or re-ordered JSON, a structural JSON diff parses both documents and compares their actual data, so formatting differences never produce false positives and every reported change is a real difference in the data.
Why a Text Diff Isn’t Enough
Formatting differences create false positives
Two JSON payloads with identical data but different indentation, spacing, or key order look completely different to a line-by-line diff — even though nothing about the actual data changed.
It can’t tell you where a difference is
A text diff highlights lines, not JSON structure — it won’t tell you that the difference is specifically in user.address.zip, three levels deep.
It doesn’t understand types
A text diff sees "5" and 5 as different text, which they are — but it can’t tell you that specifically, the type changed from string to number, which is often the more useful thing to know when debugging.
How the Tooladex JSON Diff Checker Works
Add both documents Paste JSON A (the original) and JSON B (the modified version) directly, or upload a
.jsonfile for either side.Choose your options Turn on “Ignore array order” if array elements might be reordered without that counting as a real change.
Read the result instantly The tool parses and compares both documents in your browser as you type, listing every added, removed, and changed value by path, with live counts for each category.
Copy or download Copy the diff as JSON to your clipboard or download it as a
diff.jsonfile.
No account, no upload, no waiting on a server — the comparison happens as you type.
Key Features
- Paste JSON directly or upload a
.jsonfile for either side - Instant, live comparison as you type — no button to click
- Structural comparison, not line-based — indentation and key order never cause false differences
- Every change reported with its exact path (e.g.
user.address.cityoritems[2].name) - Distinguishes added, removed, and changed values with color-coded results
- Optional “Ignore array order” mode for arrays that don’t have a meaningful order
- One-click swap between JSON A and JSON B
- Live counts of added, removed, and changed values
- 100% client-side processing for privacy
Practical Use Cases
Reviewing API response changes
Compare a response before and after a backend change to confirm only the intended fields were affected.
Auditing configuration file changes
Compare two versions of a JSON config file to see exactly which settings changed between deployments.
Debugging why two “identical-looking” payloads behave differently
Catch subtle differences like a string versus a number, or a missing key, that are easy to miss by eye.
Verifying data migration or transformation scripts
Compare the input and output of a transformation to confirm it changed exactly the fields it was supposed to.
Comparing test fixtures or snapshot test output
Quickly see what changed between an expected and actual JSON snapshot when a test fails.
Tips for Better Results
- Put the “before” version in JSON A and the “after” version in JSON B — removed values are things present in A but missing in B, and added values are the reverse, so keeping the order consistent makes the diff easier to read.
- Turn on “Ignore array order” for arrays that represent an unordered set (tags, IDs) rather than a meaningful sequence — otherwise a simple reorder shows up as a wall of unrelated changes.
- Use the Swap button to check a diff in both directions when you’re not sure which document is the “original”.
- Remember paths use dot notation for objects and brackets for arrays — a path like
orders[3].items[0].skumeans the 4th order’s 1st item’sskufield. - Compare individual records rather than huge combined exports when possible — a diff of one object is much easier to review than a diff of an entire database dump.
Privacy and Security
Both JSON documents are compared entirely in your browser — nothing is uploaded to a server, and nothing is stored.
FAQ
How is this different from a regular text diff tool? A text diff compares line by line, so re-indenting or reordering keys in otherwise-identical JSON produces a huge, noisy diff. This tool parses both documents and compares the actual data structure, so only real value differences are reported, regardless of formatting.
What does the path in each result mean? The path shows exactly where in the document the difference is, using dot notation for object keys and bracket notation for array indexes — for example user.address.city or tags[2]. An empty path means the difference is at the very top level of the document.
Why did reordering an array show up as many changes? By default, array items are compared by their position (index), so moving an item changes what’s at every position from that point on. Turn on “Ignore array order” if the array represents an unordered collection.
Does it tell me if a value’s type changed, not just its value? Yes. A value changing from a string to a number, from an object to an array, or from null to a real value is reported as a “changed” difference, the same as a plain value change.
Can I compare arrays of objects, like a list of records? Yes, arrays of objects are compared recursively — each object at each array position is compared field by field, so you’ll see exactly which fields changed within which array item.
Do you store either JSON document? No. Everything happens locally in your browser, and neither document is uploaded or saved.
Is there a size limit? The comparison runs in your browser’s memory, so very large JSON documents (tens of megabytes or more, or deeply nested structures) may be slow or use a lot of memory depending on your device.
Next time a plain text diff leaves you squinting at noise instead of the real change, skip it — paste both documents in and see exactly what changed, by path, in seconds.
JSON Diff Checker
Compare two JSON documents and see every added, removed, and changed value by path. Instant, in your browser — no signup, no uploads.