Tool

JSON Diff

Paste two JSON documents and compare them at field level.

Result

No differences yet.

What JSON Diff compares

JSON Diff compares two valid JSON documents in the browser and reports changes using deterministic field paths so you can see exactly what was added, removed, or updated.

It works well for request and response payloads, fixture updates, configuration snapshots, and regression checks where stable text output matters more than a visual side-by-side diff.

Example diff output

A good input pair is two versions of the same response body, config snapshot, or saved fixture. The tool is meant for structured payloads where the exact field path matters.

Left
{"user":{"id":42,"role":"viewer"},"active":true}

Right
{"user":{"id":42,"role":"admin"},"active":true,"region":"us-east-1"}

The resulting diff stays deterministic so it is easy to scan in the browser or paste into a bug report.

+ $.region = "us-east-1"
~ $.user.role: "viewer" -> "admin"

How to use it well

Paste the older payload on the left and the newer payload on the right. If either side is invalid JSON, the tool fails fast with a clear error instead of guessing what you meant.

The tool reports nested object paths, array index changes, and top-level type changes, so it is best when you need an explicit debugging record instead of a loose visual summary.

Best comparison targets

JSON Diff is most helpful for API request and response bodies, environment-specific configuration files, snapshot fixtures, and regression checks where a stable field path is more useful than a raw text diff.

It is less useful for free-form text blobs or partially valid JSON. In those cases, clean the sample first or use a text diff tool instead.

Deterministic output: why it matters and where it stops

The tool keeps output deterministic so repeated comparisons of the same inputs produce the same lines in the same order. That makes it easier to trust during debugging and easier to reuse in notes or tickets.

It does not try to infer semantic intent such as key renames or array item moves. The current contract is explicit field-level changes, not a smarter debugger narrative.

What counts as a difference

Added fields are reported with +, removed fields with -, and changed values with ~. Arrays are compared by index, so insertions and removals are shown at the affected positions.

If the left side is an object and the right side is an array, or any other top-level type swap occurs, the tool reports that as one explicit value change at $.

Privacy and limits

Core comparison runs locally in your browser. Remove secrets before pasting real production data, and use the result as a debugging aid rather than a substitute for upstream contract validation.

Large inputs are capped so the page fails fast instead of trying to diff arbitrarily large payloads in the browser.

Sponsored

Ad slot is isolated from tool controls.