JSON diff. Semantic, not line-by-line.
Compare two JSON documents structurally — every added, removed and changed value with its exact dot-notation path, independent of key order. Runs entirely in your browser; nothing is uploaded.
A free online tool by Digital HeroesFiles never leave your browser. Nothing is uploaded.
A diff that understands JSON
A plain text diff compares characters, so a key that merely moved position shows up as a change. This tool parses both documents and compares the structure: two objects with the same keys in a different order are equal, and every real difference is reported with its exact path, like limits.maxSizeMB or tags[2]. Turn on array-order-independent matching for reordered lists, relax key casing, or set a numeric tolerance so 0.30000000000000004 stops counting as a change. Everything runs locally — paste API responses, configs or exports with secrets in them without a second thought.
Every difference, with its address.
a.b[2].c..txt or .json.Five steps, no manual.
- Paste your original JSON into Original (A) and the updated JSON into Changed (B) — or drop a .json file onto either load button. Both panes validate live with line and column on errors.
- Set options if needed: Ignore array order, toggle case-sensitive keys, or enter a numeric tolerance for float comparisons. Changing an option re-runs the comparison automatically.
- Click Compare. Results appear grouped into Added, Removed and Changed sections, each entry with its exact path.
- Switch to Side by side for a line-highlighted view of both formatted documents, or use ⇄ Swap to reverse the direction.
- Click Copy report, or download the diff as .txt or .json to share or save it.
Frequently asked questions.
Is JSON Diff free?
Is it private? Are my files uploaded anywhere?
What is the difference between JSON Diff and a plain text diff?
How do the array-order and numeric-tolerance options work?
How do I read the paths in the results?
limits.maxSizeMB means the maxSizeMB key inside the limits object, and tags[2] means the third item of the tags array. Keys that aren't valid identifiers are shown quoted, like headers["content-type"].Does it work offline?
Published · Last updated .