Compare two JSON exports pulled at different times to see exactly what changed.
This tool runs entirely as JavaScript in your browser. both JSON documents you paste is never transmitted over the network to this site's server or any third party, and is never written to a cookie, to browser storage, or to any log — there is nothing on our end to breach, subpoena, or accidentally leak, because it was never received in the first place. Closing or refreshing this tab clears it completely.
This describes only what this specific tool does with what you type into it. It doesn't cover the rest of this site — see the Privacy Policy for how analytics and advertising cookies are handled elsewhere.
Paste two JSON objects — an older one and a newer one — and see exactly which fields were added, removed, or changed, including inside nested objects and arrays, not just at the top level.
This is the JSON sibling of this site's CSV Diff Tool: comparing two JSON API responses, two versions of a config file, or two exports needs to walk the actual nested structure rather than compare line by line like a plain text diff would, since JSON's formatting (spacing, key order, line breaks) can differ between two files that represent identical data.
Each change is reported by its exact path — a nested field shows as something like user.address.city, and an array element shows as items[2] — so you can see precisely where in the structure something changed, even in a large, deeply nested document.
Nothing here touches a server — both JSON documents are parsed and compared entirely in your browser.
No — two objects with the same keys and values in a different order are correctly treated as identical. Only actual differences in values, additions, or removals are reported.
The comparison walks the full structure recursively — a change deep inside a nested object or a specific array element is reported with its exact path, like user.address.city or items[2], not just flagged at the top level.
It’s reported once as a single removal at that path, showing the entire removed value — not fragmented into a separate line for every field that used to be inside it.
No — both documents are parsed and compared entirely in your browser. Nothing is sent to a server.