Security Headers Checker: Grade Your HTTP Headers
Paste your site's response headers and get a graded report. The checker scores Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, framing protection, Referrer-Policy, Permissions-Policy, the cross-origin headers (COOP, COEP, CORP), Cache-Control and cookie flags, then gives a copy-ready fix for nginx, Apache, Next.js or Cloudflare.
It works on pasted text because a browser tool cannot read another site's headers (CORS blocks it), and we do not fetch third-party URLs from our servers. Get the headers with curl -sI https://your-site. Not affiliated with securityheaders.com or any other scanner; the grade is our own.
Runs entirely in your browser. Nothing is sent anywhere, and the page never contacts the site you are checking. Paste the output of curl -sI https://your-site or copy the response headers from your browser's network panel.
What each header does
| Header | What it controls | Starting value |
|---|---|---|
| Content-Security-Policy | Which sources may load scripts, styles, frames and more. The main browser-side limit on cross-site scripting. | default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self', tested in Report-Only first |
| Strict-Transport-Security | Tells browsers to use HTTPS only for this host for the next max-age seconds. | max-age=31536000; includeSubDomains |
| X-Content-Type-Options | Stops browsers guessing a response's type. | nosniff |
| Framing (frame-ancestors / X-Frame-Options) | Which sites may embed the page in a frame. Prevents clickjacking. | SAMEORIGIN or CSP frame-ancestors 'self' |
| Referrer-Policy | How much of the page URL is sent to other sites. | strict-origin-when-cross-origin |
| Permissions-Policy | Browser features the page and its frames may use. | camera=(), microphone=(), geolocation=(), edited to what you use |
| COOP, COEP, CORP | Isolation from other windows and from cross-origin loads of your resources. | same-origin, require-corp, same-origin |
| Cookie flags | Secure (HTTPS only), HttpOnly (hidden from scripts), SameSite (limits cross-site sends). | Secure; HttpOnly; SameSite=Lax |
Values are starting points, not a policy for your site. Test each in a staging environment; a strict CSP in particular needs tuning to the scripts and hosts you actually use.
How to use the result
- Fetch headers for the pages that matter: home page, a logged-in page, an API response.
- Fix Missing or weak items first, starting with CSP and HSTS.
- Add headers at one layer (CDN, proxy or app), not several, so values do not conflict or duplicate.
- Re-fetch and paste again to confirm. Headers set in nginx's
add_headerinside alocationblock replace inherited ones, a common reason a header "disappears" on some paths.
Related reading: how to harden a TLS configuration, the TLS Hardening Lab, the OWASP Top 10 explained and the SSL certificate decoder.
Frequently asked questions
What are HTTP security headers?
HTTP security headers are response headers a server sends with a page to tell the browser how to treat it: which sources may load scripts (Content-Security-Policy), that the site must use HTTPS (Strict-Transport-Security), whether other sites may frame it, how much referrer information to send and which browser features to allow. They add a layer of defence in the browser and do not replace fixing the underlying bugs.
Why does this checker ask me to paste headers instead of entering a URL?
A page running in your browser cannot read another site’s response headers, because browsers block cross-origin reads (CORS) unless the other site opts in. A tool that takes a URL has to make the request from a server. We chose not to fetch third-party URLs from our server, since that needs a strict guard against server-side request forgery. Pasting the output of curl -sI keeps the check private: nothing leaves your browser.
How do I get my response headers?
In a terminal run curl -sI https://your-site.example (add -L to follow redirects; the checker scores the last response). In a browser, open developer tools, the Network tab, select the document request and copy the response headers. Check the page you care about, since headers can differ by path.
Which security headers matter most?
Most guidance starts with Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options: nosniff, a framing control (CSP frame-ancestors or X-Frame-Options), Referrer-Policy and Permissions-Policy. The OWASP Secure Headers Project maintains a list of recommended response headers. The cross-origin family (COOP, COEP, CORP) matters most for sites that handle sensitive sessions or need cross-origin isolation.
What does HSTS preload mean?
The preload list is a list of domains that browsers treat as HTTPS-only before ever visiting them. MDN says the header must have max-age of at least 31536000 (one year), includeSubDomains and preload to be eligible, and that preloading is not part of the HSTS specification. Check that every subdomain serves HTTPS first, because it is hard to undo.
Is X-XSS-Protection still needed?
No. MDN lists X-XSS-Protection as deprecated and non-standard. Rely on a Content-Security-Policy instead. If a scanner flags its absence, that is not a gap in modern browsers.
How is the score calculated?
Each check has a points weight chosen by PlayCISO: Content-Security-Policy 25, Strict-Transport-Security 15, X-Content-Type-Options 10, clickjacking protection 10, Referrer-Policy 8, cookie flags 8 (only when a cookie is set), Permissions-Policy 7, COOP 5, Cache-Control 5, CORP 3, COEP 3, technology disclosure 3. The score is points earned over points possible. It is a teaching grade and is not the grade of any other scanner, so the two will not match.
Will adding these headers break my site?
They can. A strict Content-Security-Policy blocks inline scripts and unlisted hosts, and Cross-Origin-Embedder-Policy blocks cross-origin resources that do not opt in. Start CSP as Content-Security-Policy-Report-Only, read the reports, then enforce. Roll out HSTS with a short max-age first if you are unsure every subdomain supports HTTPS.
Does this tool store what I paste?
No. Analysis runs in your browser with no network calls, and PlayCISO does not receive the headers. Response headers rarely hold secrets, but cookie values can: remove session cookie values before sharing a paste anywhere.
Sources
- OWASP Secure Headers Project (accessed 3 November 2026)
- MDN: Strict-Transport-Security, including preload requirements (accessed 3 November 2026)
- MDN: Content-Security-Policy
- MDN: X-Content-Type-Options
- MDN: Referrer-Policy
- MDN: Permissions-Policy
- MDN: Using HTTP cookies (Secure, HttpOnly, SameSite)
- MDN: X-XSS-Protection (deprecated)
Last reviewed 3 November 2026. General information, not a security audit.
More security tools
The tools people use most on PlayCISO.
Catch injected instructions hiding in content your AI agent should only read.
Score your readiness against the first international standard for AI security threats.
Critical CVEs across 21 major vendors, month by month — and what the 2026 surge means.
Build an ordered ruleset, replay labelled packets and catch shadowed and any-to-any rules.
Self-assess all six Functions, from Govern to Recover, and see your weakest one.
Search 172 threat actors across Microsoft, CrowdStrike, Mandiant and community names.