JSON Diff
Compare JSON values semantically with exact numbers, meaningful paths and ordered arrays, ignoring object key order.
Left
Right
Object key order is ignored. Array positions are significant.
Compare values, not whitespace.
Paste Left JSON and Right JSON, then Compare JSON. Object property order and equivalent numeric spelling do not create differences: 1, 1.0 and 1e0 compare equally. Large integers and tiny exponent values are compared without rounding. Negative zero and zero are equivalent JSON numbers here.
Array order matters.
Arrays are compared by index, without sorting or guessing item identities. Inserting at the beginning can produce several changed positions. Added, Removed, Changed and Type changed are explicit text categories. A whole value changing type is one difference; objects and arrays use concise size previews.
Paths you can interpret.
Paths use JSON Pointer: /items/2/name means the name field in array index 2. In property names, ~0 represents a tilde and ~1 a slash; (root) means the complete document. Value previews stop at 200 characters and paths at 1,024, with explicit truncation labels.
Bounded and private.
Each input is limited to 32 KiB UTF-8, 64 nesting levels and 20,000 values. The first 200 differences are displayed, with a notice if more exist. Numeric exponents longer than 1,024 characters are rejected. Duplicate keys are ambiguous and must be removed before comparison. Both documents and differences stay in browser memory, never in logs, URLs or storage. Reset and navigation clear them.