JSON Diff Checker
Compare two valid JSON values by path and separate additions, removals, and changed values. The tool is for structural inspection, not for deciding whether two serialized files are byte-for-byte identical.
What this tool is for
Compare two valid JSON values by path and separate additions, removals, and changed values. The tool is for structural inspection, not for deciding whether two serialized files are byte-for-byte identical.
How to use
- Paste the before value on the left and the after value on the right.
- Run the comparison after both inputs pass
JSONparsing. - Review each changed path and confirm whether
arrayorder is meaningful in your data.
Example
Compare two user records where `role` changed and a `verified` field was added; review the two reported paths before updating a fixture.
FAQ
Are arrays order-sensitive?
Yes. Values are compared at their array indexes.
Does whitespace create a difference?
No. Both inputs are parsed before comparison.
Reproducible examples
Known inputs and expected results
Run these examples in the workspace above and compare the result with the documented output.
Added and changed fields
- Input
- Before {"role":"viewer"}; after {"role":"editor","verified":true}
- Options
- Compare parsed values by path.
- Action
- Run the diff.
- Expected output
- role is changed and verified is added.
- Explanation
- The report separates a changed scalar from a newly present key.
Array index change
- Input
- Before {"tags":["a","b"]}; after {"tags":["b","a"]}
- Options
- Keep
arrayorder significant. - Action
- Run the diff.
- Expected output
- Changes are reported at tags[0] and tags[1].
- Explanation
- The tool does not infer a move;
arrayelements are compared at their indexes.
Error or unsupported case
Invalid right-hand JSON
- Input
- Left {"ok":true}; right {"ok":}
- Expected error or limit
- Comparison stops and identifies the invalid side.
- Safer alternative
- Correct both
JSONvalues before interpreting structural changes.
When not to use this tool
- Byte-for-byte file comparison
- Move detection, date semantics, or numeric tolerance rules
Algorithm and assumptions
Both sides are parsed first; object paths are compared recursively, array order is significant, whitespace is ignored, and missing differs from explicit null.
Input and output
Inputs are two JSON values. Output is a path-based change list with before and after values where applicable.
Supported formats and behavior
- Nested
objectsandarrays - Added, removed, and changed paths
- Syntax validation for both inputs
Limits
- No move detection for reordered
arrays - No semantic rules for dates, identifiers, or numeric tolerances
Edge cases and common errors
- A missing key differs from a key set to
null - Array reordering may produce several changes
- Invalid input stops the comparison
Release testing
Release checks cover nested objects, added and removed keys, changed scalars, arrays, equal values, and invalid input on either side.
Privacy boundary
The input and result stay in this browser session. ZZP Box does not upload or store the values entered in this tool.
Related reviewed tools
Choose the next tool by the operation you need, then review that page's stated input and limits.
