Skip to main content

Security Headers Checker

Paste a site's HTTP response headers and get a weighted A+ to F security grade, plus a header-by-header breakdown of what's missing, misconfigured, or well-configured (CSP, HSTS, X-Frame-Options, and more) — all checked in your browser.

Input

Output

Security Grade

Result
MetricValue
No data yet

Header-by-Header Results

Result
HeaderStatusWeightValueNotes
No data yet
Was this helpful?

Guides

HTTP response headers like Content-Security-Policy and Strict-Transport-Security are one of the cheapest ways to harden a website against XSS, clickjacking, and downgrade attacks — but they're also easy to forget, easy to misconfigure, and hard to eyeball for correctness. The Security Headers Checker parses a pasted block of response headers and grades your security posture on a weighted A+ to F scale, with a plain-English explanation of exactly what's wrong (or right) with each header.

How to use it

  1. Capture the response headers for the page you want to check — from your browser's Network tab (right-click a request → Copy → Copy response headers), from curl -sD - -o /dev/null https://example.com, or from any raw HTTP trace.
  2. Paste the block into the input box, one header per line in Key: Value format. A leading status line (HTTP/1.1 200 OK) is fine — it's ignored.
  3. The grade and breakdown update automatically as you type.

The output has two parts:

  • Security Grade — an overall letter grade (A+ through F), a 0–100 score, and a count of how many of the eight graded headers are present.
  • Header-by-Header Results — every graded header with its status (Good / Warning / Issue / Missing), its weight in the overall score, the raw value found (if any), and a short note explaining the finding.

How is the grade calculated?

Eight headers are graded, each with its own weight reflecting how much it matters for typical web security:

Header Weight What's checked
Content-Security-Policy 25 A baseline default-src/script-src, no wildcard origins, no unjustified unsafe-inline/unsafe-eval, a frame-ancestors directive, valid directive syntax
Strict-Transport-Security 20 max-age of at least one year, includeSubDomains, and preload eligibility
X-Frame-Options 10 DENY or SAMEORIGIN (the deprecated ALLOW-FROM is flagged)
X-Content-Type-Options 10 Set to exactly nosniff
Referrer-Policy 10 A privacy-preserving value like strict-origin-when-cross-origin, not unsafe-url
Permissions-Policy 10 Sensitive features (camera, microphone, geolocation, etc.) explicitly restricted
Cross-Origin-Opener-Policy 8 same-origin for the strongest isolation
Cross-Origin-Embedder-Policy 7 require-corp or credentialless

Each present header gets a 0–100 score based on the severity of its issues (a serious misconfiguration scores much lower than a minor one), and a header that's missing entirely contributes zero to that header's share of the total. The weighted average becomes your overall score, which maps to a letter grade: 95+ is A+, 85+ is A, 75+ is B, 60+ is C, 40+ is D, and anything below is F.

X-Frame-Options is the older clickjacking defense; a modern CSP's frame-ancestors directive supersedes it, which is why the CSP check flags a missing frame-ancestors on its own even when X-Frame-Options is set correctly.

Why isn't my header showing up?

Only the eight headers above are graded. Anything else you paste — Cache-Control, Access-Control-Allow-Origin, Server, custom X-* headers — is simply ignored by the grade; it doesn't help or hurt your score.

Does this fetch my site's headers for me?

No — it's paste-only. It never makes a network request, so it works equally well for a public site, a staging server behind a VPN, or headers you're drafting before deployment.

Is a missing header always a problem?

Not necessarily. A JSON API with no browser-rendered HTML has little use for X-Frame-Options, and an internal tool behind auth may not need a strict Permissions-Policy. Treat a low grade as a checklist to review, not an absolute verdict — context matters.

Privacy

All parsing and grading happens entirely in your browser. The headers you paste are never uploaded, logged, or sent anywhere.

securityhttp-headerscsphstsweb-securityowasp

Use it from code

From 3 credits per call

REST API

curl -X POST https://api.iotools.cloud/v1/tool/security-headers-checker \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "headersInput": "Content-Security-Policy: default-src 'self'; scr…"
  }'

Swap in your own key from your account. The tool's fields are the body — no wrapper.

Ask an AI agent

Use the IOTools `security-headers-checker` tool (Security Headers Checker) on this input:

YOUR_INPUT_HERE

Paste this at any agent connected to the IOTools MCP server, then add your input.

Love the tools? Lose the ads.

One payment clears every ad from your account, for good. No subscription, no tracking.