HTTP Headers Diff

Paste two sets of HTTP headers and see exactly what changed — headers added, removed and changed, grouped with a count summary. Case-insensitive names, repeated-header folding, and an ignore list for noisy headers. Runs entirely in your browser; nothing is uploaded.

Try:
Header diff

About this tool

HTTP Headers Diff compares two pasted header blocks and reports what changed from the first set to the second: added headers, removed headers, changed values, and unchanged names. It is useful for release checks, CDN/proxy debugging, security-header reviews, cache-policy changes, and comparing request or response captures.

Header names are matched case-insensitively, repeated headers are combined according to HTTP header-list rules, and Set-Cookie is kept as separate lines instead of being comma-joined. Optional request/status lines such as GET / HTTP/1.1 or HTTP/1.1 200 OK are skipped so you can paste raw captures.

Worked example

First headers:

Content-Type: text/html
Server: nginx
X-Frame-Options: DENY

Second headers:

Content-Type: application/json
Server: nginx
Cache-Control: no-cache

Output:

Header diff — 1 added, 1 removed, 1 changed, 1 unchanged

Added (1):
  + Cache-Control: no-cache

Removed (1):
  - X-Frame-Options: DENY

Changed (1):
  ~ Content-Type: text/html -> application/json

Unchanged (1):
  Server

Use Ignore headers for noisy values such as Date, Age, or request IDs. Turn on Ignore token order when comparing comma-list headers like Cache-Control or Vary where only the ordering changed.

Limits & edge cases

FAQ

Can I paste a full HTTP response?

Yes, if the first line is a status line such as HTTP/1.1 200 OK. The start line is skipped and only the following headers are compared. The parser stops at the first blank line, so a response body pasted after the headers is ignored.

Are header names case-sensitive?

No. HTTP header names are matched case-insensitively, so content-type and Content-Type are the same header. The report displays canonical title-case names for readability.

How are repeated headers handled?

Repeated headers are combined before comparison, which matches normal HTTP list-header behavior. Set-Cookie is the exception: each cookie stays on its own line because cookie values must not be comma-joined.

Why would I ignore token order?

Some headers are comma-separated lists. Cache-Control: no-cache, no-store and Cache-Control: no-store, no-cache usually mean the same thing. Enable Ignore token order to treat those reorder-only changes as unchanged.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool http-headers-diff "HTTP/1.1 200 OK
Content-Type: text/html
Server: nginx
Cache-Control: max-age=60
X-Frame-Options: DENY" 'right=HTTP/2 200
Content-Type: application/json
Server: nginx
Cache-Control: no-cache
Content-Security-Policy: default-src 'self''

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/http-headers-diff/?left=HTTP%2F1.1%20200%20OK%0AContent-Type%3A%20text%2Fhtml%0AServer%3A%20nginx%0ACache-Control%3A%20max-age%3D60%0AX-Frame-Options%3A%20DENY&right=HTTP%2F2%20200%0AContent-Type%3A%20application%2Fjson%0AServer%3A%20nginx%0ACache-Control%3A%20no-cache%0AContent-Security-Policy%3A%20default-src%20%27self%27&ignore=Date%2C%20Age%2C%20Report-To&ignore_order=true&output=report

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.