Q: Why does the diff say nothing changed when I clearly added a field?
Two common causes: you pasted the new value into both panes accidentally, or the added field is at a key with the same value as before so a re-run quietly merged. Double-check by comparing the raw character counts of both panes — if they match, the inputs are identical.
Q: Does the diff ignore key ordering?
Yes. JSON objects are unordered by spec (RFC 8259), so {"a":1,"b":2} and {"b":2,"a":1} are semantically equal. The diff treats them as no change. Arrays are different — they are ordered, so [1,2] vs [2,1] shows two changes.
Q: How do nested objects and arrays show up?
Each change is annotated with its full path — e.g., user.addresses[0].zip — so you can find it in either pane without searching. The traversal is recursive and unlimited in depth.
Q: Can I diff JSON files with timestamps that always change?
Yes, but the noise will overwhelm the signal. Pre-process both files with jq 'del(.created_at, .updated_at, .timestamp)' to drop the volatile fields, then paste the result. The tool itself does not yet support exclusion patterns.
Q: Is the data sent to a server?
No. Both payloads are parsed and compared inside your browser. You can verify in DevTools Network tab — no outbound request fires when you paste or diff. This makes it safe for confidential API responses from internal systems.
Q: How does the tool decide if a value "changed" vs "added then removed"?
If the same key exists in both sides with different values, it's a modification. If the key exists only on one side, it's an addition or deletion. For arrays, comparison is positional — element [3] vs element [3]. There is no fuzzy matching across positions.