JSON Diff Checker
Compare two JSON documents structurally in your browser - no account, no upload.
About JSON Diff Checker
Compare two JSON documents structurally in your browser - no account, no upload. Unlike the text Diff Checker, this tool parses both sides and walks objects by key (order does not matter) and arrays by index. You get a path-level report of added, removed, changed, and type-changed values. Reordered keys that still match are identical. Use it to diff API responses, config fixtures, or webhook payloads before you merge. Pair it with the JSON Minifier if one side arrived minified, or JSONPath Tester to inspect a single path.
How to Use JSON Diff Checker
- Paste left (original) and right (updated) JSON, or load a sample to see reordered keys vs real changes.
- Format either side if needed, or Swap to flip left and right.
- Read the counts: added, removed, changed, type-changed, and equal leaves. The table lists every differing path.
- Copy the text report or the JSON report for CI notes or a PR comment.
- Nothing is sent to a server. Invalid JSON reports which side failed and the line and column.
JSON Diff Checker Examples
Reordered keys are identical
{"b":2,"a":1} and {"a":1,"b":2} produce zero changes. Object key order is ignored on purpose.
Added and changed fields
Left {"id":1,"name":"Ada"} vs right {"id":1,"name":"Ada Lovelace","email":"ada@example.com"} reports $.name changed and $.email added.
Nested path and array index
Arrays compare by index. A tag list ["a","b"] vs ["a","c"] reports $.tags[1] as changed, not a full-line rewrite.
Type changes
{"n":1} vs {"n":"1"} is a type_changed path: number became string. A text diff would only show quote characters.
Awkward keys
Keys that are not plain identifiers use bracket paths, for example $["content-type"], so the report stays unambiguous.
Common Use Cases
- Diffing two API responses after a backend deploy
- Checking config or feature-flag JSON before merge
- Reviewing webhook payload fixtures in contract tests
- Spotting type drift (number vs string) that text diffs bury
- Confirming that key reorder alone did not change meaning
Frequently Asked Questions about JSON Diff Checker
- How is this different from the text Diff Checker?
- The text Diff Checker compares lines and words. This tool parses JSON and compares structure: object keys are order-independent, arrays use indexes, and each change has a JSONPath-style path. Use the text tool for prose or code; use this for JSON payloads.
- Does key order matter?
- No for objects. {"a":1,"b":2} and {"b":2,"a":1} are identical. Array order does matter because arrays are compared by index.
- What do added, removed, changed, and type-changed mean?
- Added means the path exists only on the right. Removed means only on the left. Changed means the same type with a different value. Type-changed means the JSON types differ (for example number vs string).
- How are arrays compared?
- By index from the start. Moving an item to another index looks like removes and adds at those indexes. There is no fuzzy array matching.
- Is my JSON uploaded?
- No. Diffing runs only in this tab. Both documents stay on your device.
- Can I export the result?
- Yes. Copy the human-readable report or the JSON report (paths, types, and values) for tickets or CI notes.
- What if one side is invalid JSON?
- The tool names the failing side and, when possible, the line and column so you can fix commas, quotes, or brackets before comparing.
Related Tools
Diff Checker
Compare two texts side by side in your browser. Nothing is uploaded - safe for configs, logs, and contracts. Ignore whitespace or case, see word-level highlights, and copy a unified diff.
JSON Minifier & Formatter
Free online JSON minifier and formatter. Minify JSON to shrink payloads or beautify (pretty-print) JSON with 2-space indentation. Validates as you go - no upload required.
JSONPath Tester
Test JSONPath online in your browser. Extract a field from JSON, try a filter example, and copy normalized paths - nothing is uploaded.
JSON Schema Generator
Free JSON Schema generator in your browser. Paste sample JSON, infer types and formats, and copy a Draft-07 or 2020-12 schema. Nothing is uploaded.