The comparison rules
| Example | Result |
|---|---|
| Object keys in a different order | Match when their parsed values match |
| Number 1 and string "1" | Changed value |
| Absent field and null | Added or removed field |
| Array items in a different order | Compared at their respective indexes |
| Object replaced by an array | Changed 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.