Compare JSON by structure, not formatting
Understand exactly what changed between two JSON documents. Explore additions, deletions, and type changes with full key paths and flexible array comparison.
Use JSON comparison in your workflow
Move from a one-off browser check to repeatable reviews in your editor, terminal, AI assistant, or codebase.
Browser and editor extensions
Capture API responses in Chrome, or review JSON and XML documents without leaving VSCode.
Terminal and JavaScript
Run comparisons in scripts and CI, or embed the same structural engine in a JavaScript or TypeScript project.
AI coding assistants
Give compatible assistants documented comparison commands through Agent Skills or Model Context Protocol.
Semantic diff vs. text diff
Semantic comparison parses JSON values before comparing them, so the result reflects data changes instead of presentation alone.
Key order and formatting
Reordering keys or changing whitespace alone does not create a semantic difference. Value and type changes still appear with their paths.
{
"name": "Ada",
"active": true
}{"active":true,"name":"Ada"}Arrays and raw lines
Array order can matter depending on the selected strategy. Text diff remains useful when you need to inspect exact line-level edits.
[ "A", "B" ]
[ "B", "A" ]
Inputs are parsed as data rather than executed as JavaScript, and integers outside JavaScript's safe Number range are preserved during parsing.
Need the original line-oriented view? Read about Git Diff view
New to structured comparison? Follow the Getting Started guide
Choose comparison options by data meaning
The wrong array strategy can hide a move or report harmless reordering. Start with what positions and duplicates mean in your data.
Key case
Ignore key case only when Status and status mean the same field; otherwise distinct keys may be treated as equivalent.
String value case
Use case-insensitive values for normalized text, not for case-sensitive identifiers, tokens, or user content.
Numeric strings
Treat numeric strings as numbers only when "42" and 42 are equivalent in your schema. Keep it off when type differences matter.
Practical ways to review JSON changes
Use a structural diff to check whether observed changes match an intended edit. The result shows how two inputs differ; it does not determine which document is correct.
Check an API response against a fixture
Compare two responses for id 101 where status changes from "pending" to "paid" to isolate that field. Before drawing conclusions, remove or normalize irrelevant timestamps, request IDs, and other fields that are expected to vary between requests.
Review configuration edits
Compare package.json before and after a dependency update, or inspect two tsconfig.json revisions. If compilerOptions.strict changes from false to true, its path identifies the setting to review; unrelated reformatting does not add noise.
Validate a data transformation
Compare a record before and after an ETL step. If total changes from "19.95" to 19.95, the default settings report a type change. Also check whether fields disappeared instead of becoming null, and choose an array mode that reflects whether order matters.
Inspect application state snapshots
Save state before and after an action, then compare the snapshots to locate an unexpected update. A path such as cart.items[0].quantity can connect a changed value to the reducer, event handler, or synchronization logic that needs investigation.