API Response Comparator

Runs in browser API Testing

Semantic comparison of two JSON responses with options to ignore volatile fields (timestamps, ids), order of arrays, or specific paths — produces a clear diff report.

Privacy: This tool runs entirely in your browser. Your input never leaves your device.
Loading tool…

What is API testing?

API testing checks a service through its interface rather than its screens: send a request with a chosen method, headers and body, then verify the status code, the response headers, the body's structure and values, and the time it took. Because it runs below the UI, it is faster, more stable and catches integration defects earlier — which is why regression suites are built API-first.

Read the guide: What is API Testing? How to Test a REST API

How to use API Response Comparator

  1. Paste response A (e.g. staging) and response B (e.g. production).
  2. Keep "ignore volatile fields" on, add any extra ignore paths, and choose array-order handling.
  3. Compare. The summary tells you whether the responses are equivalent; the table lists each difference with its path.
  4. Use the line view for a visual diff and download the table as CSV.

API Response Comparator features

  • Semantic JSON comparison — key order and formatting never count as differences
  • Ignore volatile fields (ids, timestamps, etags, tokens, cursors) with one checkbox
  • Ignore paths with patterns: $.meta.requestId, $.items[*].updatedAt, **.etag or bare key names
  • Optional array-order insensitivity and null-equals-missing mode
  • Difference table (only in A / only in B / changed / type changed), ignored-field list and a line diff

API Response Comparator example

Staging vs production

Input:

A: { "status": "paid", "customer": { "id": "cust_9" }, "updatedAt": "2025-08-30T10:00:00Z" }
B: { "status": "PAID", "customer": { "id": "cust_9", "tier": "gold" }, "updatedAt": "2025-08-31T09:12:44Z" }

Output:

Different · Added in B 1 · Changed 1 · Ignored: $.updatedAt
$.status        changed    "paid" → "PAID"
$.customer.tier only in B  – → "gold"

Frequently asked questions about API Response Comparator

What does "ignore volatile fields" do?

It skips keys that normally differ between environments and requests — ids, timestamps (createdAt, updatedAt…), etags, request/trace ids, tokens, cursors — so the diff shows meaningful differences only.

How do ignore paths work?

One pattern per line: an exact JSON path ($.meta.requestId), array wildcards ($.items[*].updatedAt), deep wildcards (**.etag) or a bare key name to ignore it everywhere.

Does key order matter?

No — the comparison is semantic. Enable "Ignore array order" if your API returns lists in non-deterministic order.

Why is a type change highlighted separately?

A value that changed from number to string (or object to null) usually breaks clients, so it is counted as a type change rather than a simple value change.

Technical notes

Ignored fields are removed from both documents before the structural diff runs. Volatile-key detection uses a curated regular expression (id, uuid, createdAt, updated_at, etag, requestId, nonce, token, cursor…).

References

  • RFC 9110: HTTP SemanticsIETF · 2022The meaning of HTTP methods, header fields, status codes and content negotiation, independent of the wire version.
  • OpenAPI SpecificationOpenAPI InitiativeThe standard for describing REST APIs: paths, operations, parameters, schemas, responses and security schemes.
  • OWASP Cheat Sheet Series: REST SecurityOWASP FoundationSecurity rules for REST APIs: HTTPS, authentication on every request, input validation, safe error responses, rate limiting.