JSON COMPARISON

See exactly where the JSON values differ

Use two fictional outputs to check a parser, response mapping or test fixture. The comparison separates absent values, changed types and reordered arrays without uploading your inputs.

FICTIONAL QA ONLY Local processing · No accounts · No uploads

Fictional data only. Each input: 128 KiB, 5,000 values and 16 nesting levels. Parsed values are compared; JSON.parse uses the last value for duplicate object keys.

The example contains a changed status, a number changed to a string and an added field.

The comparison rules

What counts as a difference
ExampleResult
Object keys in a different orderMatch when their parsed values match
Number 1 and string "1"Changed value
Absent field and nullAdded or removed field
Array items in a different orderCompared at their respective indexes
Object replaced by an arrayChanged value at that path

The inputs are parsed with JSON.parse. Whitespace and the spelling of equivalent JSON numbers do not create a difference. Duplicate object keys follow the parser's last-value behavior; this tool is not a duplicate-key detector.

Paths you can use in a bug report

Difference paths use JSON Pointer: a slash starts a member or array index, ~1 represents a slash inside a member name, and ~0 represents a tilde. The empty path refers to the whole document. These paths describe locations; the report is not a JSON Patch that can be executed. RFC 6901: JSON Pointer

Bounded input and output

Each input is limited to 128 KiB of UTF-8 text, 5,000 values and 16 nesting levels. Non-finite numbers and integers outside JavaScript's safe-integer range are rejected; use strings when large integers must stay exact. Other numbers follow JavaScript's parsed numeric precision. At most 200 differences are retained; a truncated report says so. The page shows up to 20 differences and shortens long displayed values.

The downloadable JSON report contains the full retained difference values. Use fictional data only: a comparison does not anonymize values, authenticate an identity or inspect an external API. Nothing is transmitted or persisted by the tool.