b2KIT

Secure Headers Scanner

Scan a website's HTTP response headers and grade its security posture with actionable improvement suggestions.

Tested tool guide Tested browser tools Checked August 16, 2026

What Secure Headers Scanner does, with a checked example

A single request can carry a dozen headers that silently shape how safe a site is, and this tool walks each one: what the server sends, whether the values are strong, and what is missing. The result is a per-header verdict list with an overall grade and copy-paste fixes. The surprise most people hit first: the scan runs entirely in the browser, and browser rules hide most of another site's headers from it, so you will frequently paste headers you captured yourself rather than scan a bare URL.

Worked example

A concrete input and expected output from the current implementation.

Input

HTTP/2 200
server: nginx
strict-transport-security: max-age=63072000; includeSubDomains
content-security-policy: default-src 'self'
x-content-type-options: nosniff
x-frame-options: DENY
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()

Expected output

strict-transport-security    pass   two-year max-age, includeSubDomains set
content-security-policy      warn   present, but default-src 'self' alone is a thin policy
x-content-type-options       pass   nosniff
x-frame-options              pass   DENY (CSP frame-ancestors is the newer alternative)
referrer-policy              pass   strict-origin-when-cross-origin
permissions-policy           pass   camera, microphone, geolocation blocked
cross-origin-opener-policy   fail   missing - add: cross-origin-opener-policy: same-origin
server                       warn   banner reveals nginx

Overall grade: B - six of seven core headers present; two warnings and one missing header keep it from an A.

Each verdict follows directly from the pasted text: all six present headers carry recognized values, while cross-origin-opener-policy is absent entirely and the CSP's default-src 'self' is minimal. Six of seven core headers present with two warnings gives the B shown - the missing header and the warnings keep it short of an A.

How the result is produced

1

Header checklist

The scan compares the submitted headers against a current checklist of protections: Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, and the cross-origin isolation pair. For each it judges presence and value quality, so an HSTS header without includeSubDomains or with a short max-age is scored as weaker than its mere presence suggests.

2

Grading and suggestions

Every header earns pass, warn, or fail: missing protections fail, weak values warn, and deprecated headers such as X-XSS-Protection or banners that reveal the server software are called out. The overall letter grade summarizes the set, and the report ends with concrete example header values you can copy into a server, CDN, or framework configuration.

Good uses

  • Pre-launch verification: confirm a freshly deployed site sends HSTS, CSP, and the other protections before you announce it publicly.
  • Security review baseline: capture a target's headers during an assessment, record what is missing, and paste that evidence into the findings.
  • Post-migration check: after moving a site behind a CDN or reverse proxy, verify the proxy did not strip or rewrite the security headers.

Limits and checks

  • Presence is not strength. A header can be present yet weak - a CSP of default-src * or HSTS without includeSubDomains. Read the per-header verdicts, not just the letter grade.
  • One request path, one snapshot. Headers can differ by user agent, redirect target, or edge node, so a mobile app or crawler may see a different set than the request you scanned.
  • Headers are one layer. A clean report does not certify the site - TLS validity, application vulnerabilities, and CSP bypasses are all outside this scan. Note also that an absent X-XSS-Protection is correct; that header is deprecated.

Common questions

Why would I be asked to paste headers myself instead of just entering a URL?

Browser security rules limit what scripts on one site can read from another: a cross-origin fetch exposes only a small safelisted set of headers, such as Cache-Control and Content-Type. Security headers like HSTS and CSP are visible only if the target opts in with Access-Control-Expose-Headers. Capturing headers with curl -sI or DevTools and pasting them gives the scanner the full picture.

Does a low grade mean my site is vulnerable?

Not by itself. The grade measures whether protections are configured; it is not proof of an exploitable weakness. A missing Content-Security-Policy matters most when the site also has a way for attacker-controlled content to reach the page, such as a stored or reflected XSS bug. Fix the headers, then treat the result as one layer of a broader security review.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools