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.

Browser-localFreeNo upload required

Tool workspace

Advanced / Raw output

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

  1. Paste the before value on the left and the after value on the right.
  2. Run the comparison after both inputs pass JSON parsing.
  3. Review each changed path and confirm whether array order 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 array order significant.
Action
Run the diff.
Expected output
Changes are reported at tags[0] and tags[1].
Explanation
The tool does not infer a move; array elements 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 JSON values 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 objects and arrays
  • 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.