Where do I get raw headers to paste in?
Browser DevTools (Network tab → click a request → Headers), or run curl -I <url> in a terminal.
Paste raw HTTP headers to see them broken out line by line.
Parse HTTP request and response headers into structured information.
Paste one Name: value pair per line — the raw block you get from curl -i or devtools works as is, start line included. Both forms are read: a response status line (HTTP/1.1 301 Moved Permanently) and a request line (GET /path HTTP/1.1). Recognised headers pick up a category and description; anything else is still parsed, just without the reference notes. Request vs response is detected automatically — conclusively when a start line is present — and only a response is checked against a curated list of recommended security headers, scored on the ones its status code can actually use. Cookie, Content-Security-Policy, and CORS headers get their own structured breakdown below the raw list.
Browser DevTools (Network tab → click a request → Headers), or run curl -I <url> in a terminal.
Yes — a response's headers are checked against a curated list of recommended security headers (CSP, HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, and the Cross-Origin-* headers), each shown as present or missing with an overall letter grade. The scorecard only appears once the input is positively identified as a response, and the tool says which rule ruled it out when it doesn't: request headers aren't measured against a list of headers a server sends, a set whose direction can't be determined isn't assumed to be a response, and a 1xx is an interim reply whose security headers belong on the final response that follows it.
Because no document is rendered from a redirect, so CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy and the Cross-Origin-* headers have nothing to govern there — adding them to a 3xx has no effect. Those checks are shown as n/a and left out of the score, and the same applies to 204 and 304 responses. HSTS is still scored, since it's a connection-level directive and an http-to-https redirect is exactly where it belongs. This narrowing needs the status line: paste the headers without it and the full checklist is used, because Location on its own isn't proof of a redirect.
Yes, including the first line of either. A response status line (HTTP/1.1 200 OK, HTTP/2 404) and a request line (GET /path HTTP/1.1, OPTIONS * HTTP/1.1, CONNECT host:443 HTTP/1.1) are both parsed and reported, so curl -i output and DevTools's "Copy request headers" / "Copy response headers" all work as pasted, with nothing to strip first. Whichever one is present settles the request/response question outright, since a status line can't appear in a request and a request line can't appear in a response. A start line on its own is valid input too. Without one, direction is inferred from which header names show up, and reads as unclear when they don't agree.
Set-Cookie is the one header that can't be comma-joined like other duplicates — each instance must stay on its own line, or the values get mangled.
No — HTTP header names are case-insensitive per spec.
No, parsing happens entirely in your browser.