Compare API Responses Online
Paste two API response payloads. See what was added, removed, or changed — field by field.
🔒 100% private — runs entirely in your browserLast updated
or try sample data
Paste two API response payloads. See what was added, removed, or changed — field by field.
🔒 100% private — runs entirely in your browserLast updated
or try sample data
API Response Diff compares two JSON API responses and shows you exactly which fields were added, removed, or modified. Whether you're debugging a REST endpoint, tracking changes between API versions, or validating webhook payloads, this tool gives you a clear, color-coded view of every difference.
APIs evolve constantly — new fields appear, values change, and deprecated properties get removed. Comparing raw JSON payloads manually is tedious and error-prone. This tool performs a deep structural diff, walking every nested object and array element to surface changes you might otherwise miss.
Paste your API responses (from curl, Postman, browser DevTools, or any HTTP client). The comparison runs entirely in your browser — your API data is never sent to any server, making it safe for sensitive endpoints and internal APIs.
# Capture responses from two API versions
curl -s https://api.example.com/v1/users | jq . > response_v1.json
curl -s https://api.example.com/v2/users | jq . > response_v2.json
# Paste both into the diff tool to see:
# - New fields added in v2
# - Deprecated fields removed from v1
# - Changed data types or value formatsUse jq . to pretty-print JSON before pasting. This makes the diff output more readable and helps catch nested changes.
// Page 1 response
{
"data": [...],
"pagination": {
"page": 1,
"total_pages": 5,
"next_cursor": "abc123"
}
}
// After a backend change, the pagination format may shift:
{
"data": [...],
"pagination": {
"page": 1,
"total_pages": 5,
"next": "/api/users?cursor=abc123" // field renamed + format changed
}
}Field renames and format changes are common causes of client-side breakage. The diff tool highlights these as removed + added fields.
// Expected webhook payload (from docs)
{
"event": "order.completed",
"data": {
"order_id": "ORD-001",
"total": 49.99,
"currency": "USD"
}
}
// Actual payload received
{
"event": "order.completed",
"data": {
"order_id": "ORD-001",
"total": "49.99", // string instead of number!
"currency": "USD",
"tax": 4.50 // undocumented field
}
}Type mismatches (number vs string) are a common source of bugs. The diff tool flags these as modified values so you can catch them early.
| Gotcha | Why it happens | What to do |
|---|---|---|
| Timestamps and IDs always differ | Fields such as created_at, request_id and trace_id are regenerated per request, so they change every time. | Expect them as noise and read the structural and data changes instead. |
| Headers are not compared | This diffs JSON response bodies only, so header-level changes like X-RateLimit-Remaining are outside what it sees. | Export headers as a JSON object and include them alongside the body — most HTTP clients can do this. |
| Non-deterministic array order | APIs backed by a query without ORDER BY can return the same records in a different sequence each call. | Enable "Ignore array order" when sequence is not meaningful for your comparison. |
Use Compare API Responses Online when the search intent is narrow and the workflow matches this page directly. The copy here is tuned for that path, not for the broader JSON Comparison Tools topic.
For a wider view across related pages, the JSON Comparison Tools is the better starting point. Each option there links back to a focused page like this one.
Paste the JSON response bodies into the two panels and click Compare. The tool highlights added, removed, and modified fields with color-coded diffs. You can copy responses from curl, Postman, or your browser's DevTools Network tab.
Yes. Any valid JSON can be compared. GraphQL responses typically have a data wrapper — paste the entire response including the wrapper for a complete comparison.
Dynamic fields like timestamps, request IDs, and rate limit counters will always appear as modified. Focus on the structural changes (new fields, removed fields, type changes) rather than these dynamic values.
Yes. This tool runs entirely in your browser using client-side JavaScript. Your API responses are never sent to any server, making it safe for internal APIs, staging environments, and production data.
Yes. A common use case is comparing responses from staging vs production, or localhost vs deployed. Paste the responses from each environment and the tool will show every field-level difference.
This tool is designed for JSON responses. For XML, plain text, or HTML responses, use the Text Diff tool instead, which does line-by-line comparison.
Compare raw JSON, language-specific JSON objects, API payloads, and config snapshots without falling back to plain text diffs.
Need more context before using the tool? Start with one of these workflow guides.