HTTP Header Checker
Inspect every response header from any URL: security (HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP, cookie flags), performance (Cache-Control, ETag, compression), and the full redirect chain.
Interactive tool
URL to inspect
The URL is fetched server-side via our SSRF-safe backend. Non-public addresses are rejected and the URL is not logged.
What is the HTTP Header Checker?
A free HTTP response-header inspector with three lenses: security (HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP), performance (Cache-Control, ETag, compression), and the full redirect chain. Each finding includes a copy-pasteable remediation snippet.
How to Use the Header Checker
- 1Paste any http(s):// URL
- 2Click Check headers: a server-side request is sent through our SSRF-safe backend
- 3Read the Summary card: status, final URL after redirects, redirect chain
- 4Filter findings by category: Security, Performance, Caching, CORS
- 5Inspect cookie attributes (Secure, HttpOnly, SameSite) for every Set-Cookie
- 6Copy any remediation snippet directly into your server config
Key features
Comprehensive security audit
HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP: each with a pass/warn/fail verdict and a remediation snippet
Cookie attribute analysis
Every Set-Cookie is parsed for Secure, HttpOnly, SameSite, Path, Domain, Expires, and Max-Age, with explicit warnings for missing flags
Performance & caching checks
Cache-Control, ETag/Last-Modified, Content-Encoding (gzip/br/zstd): flags missing compression and missing validators
Full redirect chain
Up to 5 hops captured with status code at each hop: catches infinite redirect loops and accidental http→https→http→https chains
CORS configuration sanity
Detects the Allow-Origin=* with Allow-Credentials=true bug that browsers silently reject
Stack-fingerprint detection
Flags Server and X-Powered-By headers that leak framework or runtime to attackers
Copy-pasteable remediation
Every flagged check includes a one-liner you can drop into Nginx, Cloudflare Workers, Vercel headers config, or your framework middleware
Why Audit Response Headers?
A page can ship working HTML and still leak sessions, allow clickjacking, or downgrade to HTTP: all of which are invisible to browser DevTools without specifically going looking. Most of these issues are fixed by adding a single header line in your server config or framework middleware. The hard part is knowing which ones are missing. This tool lists exactly that, with the ready-to-paste fix beside each finding.
Common use cases
- Pre-launch security review of a new domain
- Comparing headers across staging vs production environments
- Diagnosing why a third-party browser refuses your CORS request
- Verifying CDN-level header rewrites are landing as expected
- Catching accidentally re-introduced X-Powered-By: Express
- Validating that SameSite=None cookies have Secure (Chrome silently drops otherwise)
- Confirming HSTS preload eligibility (max-age ≥ 1 year, includeSubDomains, preload)
Why GET instead of HEAD?
Many origins block or mishandle HEAD requests, returning 405, missing headers, or broken redirects. The proxy uses GET with abort-after-headers (the same trick curl -I -L falls back to). For purpose: headers requests, the body is discarded the moment the headers arrive.
How is this different from securityheaders.com?
Same goals, different scope. This tool is a one-shot ad-hoc audit you run from the Zap.Tools dashboard alongside your other SEO and dev tools. It does not maintain a public history, score, or grade: that is a deliberate choice to keep the focus on the diff between your current and ideal config.
What "Cross-origin isolation" means
COOP=same-origin + COEP=require-corp together enable cross-origin isolation, which unlocks SharedArrayBuffer, performance.now() with full precision, and other powerful APIs gated behind Spectre mitigations. If your app uses WebAssembly threading or fine-grained timers, you need this combo.
Common pitfalls this tool catches
- HSTS max-age below 1 year (preload-list ineligible)
- CSP with unsafe-inline (defeats most XSS protection)
- X-Frame-Options missing without CSP frame-ancestors fallback
- Set-Cookie without Secure on HTTPS endpoints
- SameSite=None without Secure (Chrome rejects)
- Allow-Origin=* with Allow-Credentials=true
- Server: nginx/x.y.z leaks (or X-Powered-By: PHP/x.y.z)
- Missing Content-Encoding entirely (uncompressed JSON APIs)
- Long redirect chains burning crawl budget
Tips & best practices
Set headers at the edge, not the app
Move HSTS/CSP/X-Frame-Options/etc. to Nginx, Cloudflare, or Vercel's headers config. App-level middleware can be bypassed by direct CDN cache hits, especially for static assets.
Start CSP in Report-Only
A bad CSP breaks the page silently. Ship Content-Security-Policy-Report-Only first, watch the report endpoint for a week, fix the violations, then flip to enforcing.
HSTS preload is one-way
Once a domain hits the HSTS preload list, browsers refuse HTTP for it forever. Test with includeSubDomains and preload set on staging first, then submit to hstspreload.org.
Strip stack-leak headers at the proxy
Server and X-Powered-By are minor info leaks but trivially fixed: add a single proxy_hide_header line in Nginx or remove_proxy_response_header in Caddy.
Verify cookies on every change
Cookie defaults vary across frameworks and changes between major versions. Re-run this check after any auth or session library upgrade.
Privacy & security
The URL is sent to our SSRF-safe backend, which applies non-public-address blocking, a request timeout, and discards the response body the moment the headers arrive. Only the URL leaves your browser, and the URL is not logged.
Related tools
- CSP Generator
Build a Content-Security-Policy with a per-directive visual editor. Outputs the header form and the <meta http-equiv> form, with live evaluation against Google CSP Evaluator heuristics.
SEO Tools
- UTM Builder
Build trackable campaign URLs with UTM parameters for Google Analytics, GA4, and other tracking tools
SEO Tools
- CSP Evaluator
Audit a Content-Security-Policy for unsafe directives, wildcards, missing object-src/base-uri, weak nonces, and other XSS escape hatches. Paste a policy or fetch a URL: get severity-grouped findings with remediation.
SEO Tools
- Schema Markup Generator
Generate valid JSON-LD schema markup for Article, Product, Organization, LocalBusiness, BreadcrumbList, FAQPage, Event, Recipe, VideoObject, WebSite, and WebPage: Rich Results-ready.
SEO Tools
- HTML Link Extractor
Extract every link from any HTML page: anchors, images, iframes, scripts, stylesheets, and meta canonical/og:url. Paste HTML or fetch a URL, get a categorised table with internal vs external counts and CSV export.
SEO Tools
- Open Graph Preview
Preview how a URL appears on Facebook, LinkedIn, Twitter, Slack, and Discord, with a checklist for missing OG and Twitter card tags
SEO Tools
Frequently Asked Questions
Why does this tool need a server-side fetch?
Browsers cannot read response headers from arbitrary cross-origin URLs (the same-origin policy blocks it). To inspect the headers a browser would receive but cannot expose to JavaScript, the request must run on the server. We use the same SSRF-safe backend that powers the rest of the SEO batch.
Does it use HEAD or GET?
GET, with the response body discarded as soon as the headers arrive. Many origins block HEAD or return inconsistent headers for it; using GET matches what curl -I -L falls back to and what real browsers actually receive.
Which security headers are checked?
HSTS (Strict-Transport-Security), Content-Security-Policy, X-Content-Type-Options, X-Frame-Options (with frame-ancestors fallback), Referrer-Policy, Permissions-Policy, COOP, COEP, CORP, plus stack fingerprinting (Server, X-Powered-By) and CORS sanity (Allow-Origin=* with Allow-Credentials=true is invalid).
Are private IPs blocked?
Yes. Our backend refuses any URL that resolves to a non-public address: loopback, private, link-local, or otherwise internal, and a request timeout is enforced.
What is the difference between Permissions-Policy and Feature-Policy?
Feature-Policy is the legacy name; Permissions-Policy is the standard that replaced it. Modern browsers read Permissions-Policy. If you only have Feature-Policy set, this tool flags it as a warning so you migrate.
Why does my CORS preflight fail when I have Allow-Origin=*?
Browsers reject Allow-Origin=* combined with Allow-Credentials=true. For credentialed requests, the Allow-Origin must echo the specific request origin. This is one of the most common silent CORS failures, and the tool flags it explicitly.