HTTP Header Formatter
WebEverything runs locally in your browser — nothing is uploaded
⚠️ This tool makes no network requests, so the headers are yours to fetch. The simplest way is `curl -I https://example.com`, which sends HEAD and returns exactly the headers, or copy them from the Network panel of your developer tools. Lay a screenful of HTTP headers out as a table — request and response headers both work, and `curl -I` output can be pasted straight in. Besides aligning things, a few values get worked out along the way: `Content-Length` becomes a readable size (`20480` tells you nothing at a glance), the charset in `Content-Type` is pulled out separately, and the numeric status code is extracted from the status line so you can look it up. ⚠️ Responses are also checked for three security headers that ought to be there: `X-Content-Type-Options` (without it a browser may execute a user-uploaded `.txt` as a script), `Strict-Transport-Security` (without it the first visit can still go over plain HTTP), and `Content-Security-Policy` (without it a single XSS reads everything on the page). When you are working out how a site got injected, the first thing you want to see is whether `Content-Security-Policy` is present. Two spots that are easy to get wrong are handled to spec here: repeated header names are never merged — one response can carry a dozen `Set-Cookie` lines, and joining them with commas changes the meaning (their values already contain commas); and continuation lines are folded back — a line starting with whitespace continues the previous one, a style HTTP/1.1 deprecated but one that still shows up in captures and old gateways.
Features
- Handles both request and response headers; `curl -I` output works as-is
- Repeated names are kept as separate rows, never merged (a dozen `Set-Cookie` lines is normal)
- Continuation lines are folded back with a single space
- `Content-Length` becomes a readable size; the `Content-Type` charset is extracted
- The status code is pulled out of the status line for easy lookup
- Checks a response for three missing security headers and says what each gap costs
- Parsed entirely on your device — the headers never leave it
How to use
- Paste the raw headers into the left pane (`curl -I https://…` output is fine)
- Turn the security check off if you do not want it
- Results appear immediately; every row can be copied on its own
- To look into a cookie, take the `Set-Cookie` lines over to Cookie Formatter
FAQ
- Why are two rows showing the same header name? Is the parse broken?
- No — that is correct. HTTP allows a header to appear more than once, and `Set-Cookie` is the common case: a dozen `Set-Cookie` lines in one response is entirely ordinary, each describing a separate cookie. ⚠️ They are deliberately not merged into one row. Combining repeated values with commas is technically valid HTTP, but `Set-Cookie` is the standing exception: its value can itself contain commas (`Expires=Wed, 21 Oct 2015 07:28:00 GMT`), and once joined there is no way to split them apart again. The result is a parse that looks successful while a cookie has gone missing.
- What is a "continuation" line?
- An older style where a long header value wraps onto several lines, with each following line starting with a space or tab to mark it as a continuation. ``` X-Custom: part one part two ``` Those two lines are one header whose value is `part one part two`. RFC 7230 deprecated the style (it is easy to confuse with a body and hard to parse correctly), but it still turns up in capture tools and older gateways, so it is handled and labelled here.
- Do I have to add every security header it flags?
- It depends, but all three deserve a serious look. `X-Content-Type-Options: nosniff` costs essentially nothing and belongs on any site — without it, a browser may treat a user-uploaded file as a script. `Strict-Transport-Security` only means anything on HTTPS, and note that it is hard to take back once served (browsers remember the `max-age`), so start with a short value. `Content-Security-Policy` is the most valuable and the easiest to misconfigure: a strict policy applied in one go will very likely blank your page, so start with `Content-Security-Policy-Report-Only` and collect violation reports before switching over. Also worth knowing: these three only make sense on responses, so pasting a request will not trigger the check.
Related tools
HTTP Status Codes
WebLook up an HTTP status code for its meaning, 1xx–5xx class, typical uses and common traps. Runs entirely in your browser.
Cookie Formatter
WebParse a Cookie request header or Set-Cookie response header into a table, pull out attributes and expiry, and flag missing HttpOnly, Secure or SameSite.
cURL Toolbox (code / parse / build)
WebTurn a curl command into seven languages of code, or break it into method, headers and body fields; or build a curl command back from an HTTP request.
URL Parser
WebParse a URL into scheme, host, port, path, query parameters and fragment, with each parameter shown raw and decoded. Runs entirely in your browser.
User-Agent Parser
WebParse a user agent into browser, version, OS, device type and engine, and see which rules matched. Pattern matching only. Runs entirely in your browser.
MIME Types
WebLook up a MIME type from an extension, or the default extension for a media type. Common types only. Runs entirely in your browser.