BrowserTools
Home / Networking / HTTP Headers Checker

HTTP Headers Checker

See the HTTP response headers and redirect chain of any URL, with a security headers audit.

Loading HTTP Headers Checker… If nothing happens, please enable JavaScript.

Every web response starts with a block of HTTP headers that the visitor never sees: the status code, where a redirect points, how long the page may be cached, which content type it is, and a set of security instructions for the browser. Most SEO, performance and security problems leave their first trace there, a redirect loop, a 302 that should be a 301, a missing HSTS header, a CDN that refuses to cache. This tool fetches a URL from our server and shows those headers exactly as they arrive.

Examples

Input http://github.com
Output 301 → https://github.com/ → 200

One redirect from HTTP to HTTPS, then the final page with HSTS, CSP and X-Frame-Options set.

Input Cache-Control: max-age=0, private, must-revalidate
Output Stored, but revalidated with the server on every use (browser only, not CDNs).

The caching summary translates directives into plain language.

Frequently asked questions

What is the difference between a 301 and a 302 redirect?
A 301 (or 308) is permanent: search engines transfer ranking signals to the target and browsers may cache the redirect. A 302 (or 307) is temporary: search engines keep the original URL indexed. Use 301 for moves such as http to https or non-www to www. The 307 and 308 codes also guarantee that the request method and body are kept, which matters for form posts.
How many redirects are too many?
Each hop adds a full round trip before the page can start loading, so aim for at most one redirect. Chains like http://example.com to https://example.com to https://www.example.com are common and easy to collapse into a single hop. Google follows up to 10 hops, but long chains waste crawl budget and slow down visitors on mobile networks. This tool stops after 5.
Which security headers matter most?
On an HTTPS site, Strict-Transport-Security and Content-Security-Policy give the most protection: HSTS stops downgrade attacks to plain HTTP, and CSP limits the damage of cross-site scripting. X-Content-Type-Options: nosniff and protection against framing (X-Frame-Options or frame-ancestors) are cheap to add. Referrer-Policy, Permissions-Policy and COOP are useful hardening.
Why do I see different headers than in my browser's developer tools?
Your browser sends cookies, a different User-Agent and Accept headers, and may hit a different CDN edge or a cached copy. Some sites also vary their response by country or device. This tool sends a clean request with no cookies from a server in a data center, which is closer to what a search engine crawler sees.
Why does the tool say GET instead of HEAD?
Some servers and firewalls answer HEAD requests with an error (405 Method Not Allowed, 403 or 501) even though GET works. When that happens the tool repeats the request as a GET and stops reading as soon as the headers arrive, so it reports the real response without downloading the page.
Can I check a page on localhost or my internal network?
No. The request is made from our server, and private, loopback and link-local addresses are blocked to prevent server-side request forgery. Use curl -I from a machine inside that network instead.
Does the tool check the TLS certificate?
Certificate errors are ignored here on purpose, so you can still read the headers of a site with a broken certificate. To check the certificate itself, its expiry, chain and hostname, use the SSL Checker.
Are the URLs I check stored?
No. The URL is used only to make the requests and return the headers. We do not log the URLs you check or link them to your IP address.

About HTTP Headers Checker

Paste a URL and the checker requests it the way a browser would, without following redirects automatically. Each hop is shown in order with its status code, response time and full header list, so you can see the whole path from http://example.com to the final https://www.example.com/ and spot extra hops that slow down the first visit. Click any hop to see its headers, filter them by name or value, and copy them as raw text.

The final response gets a security header audit. The tool checks Strict-Transport-Security (and its max-age), Content-Security-Policy (and whether it still allows unsafe-inline scripts), X-Frame-Options or CSP frame-ancestors against clickjacking, X-Content-Type-Options, Referrer-Policy, Permissions-Policy and Cross-Origin-Opener-Policy, and points out headers that reveal server software versions. Each item explains in plain language what the header does and what is missing. A separate section translates Cache-Control, Expires, ETag, Age and Vary into a one-line answer about how the page is cached.

Requests come from our server, so you see the public response, not what your browser or a local proxy sends. A HEAD request is tried first and a GET is used when the server rejects HEAD, stopping as soon as the headers arrive so no page body is downloaded. Only http and https on ports 80, 443, 8080 and 8443 are allowed, every redirect target is checked again, and private or internal addresses are blocked.

Headers that outlived their purpose

HTTP headers accumulate history. The Referer header is misspelled because Phillip Hallam-Baker wrote it with one 'r' in the 1990s draft, and by the time anyone noticed, servers everywhere depended on it. The newer Referrer-Policy header is spelled correctly, so the web now carries both spellings side by side.

X-XSS-Protection is a header that was later turned off on purpose. Internet Explorer 8 introduced an XSS filter in 2008 and Chrome followed, but researchers found that the filter itself could be abused to leak data or disable legitimate scripts. Chrome removed its XSS Auditor in 2019, and the recommended value today is 0, or no header at all, with Content-Security-Policy doing the real work.

The X- prefix itself was officially deprecated by RFC 6648 in 2012. The idea had been that experimental headers would carry X- and drop it once standardised, but popular headers like X-Forwarded-For and X-Frame-Options never lost the prefix, so renaming them would only have broken things. New headers are now registered without it from the start.

Support