Website security checker: HTTPS, security headers, cookies and mixed content

Check the basics every site should have: HTTPS with HSTS, a Content-Security-Policy, clickjacking protection, secure cookies, no http:// files on https pages, and a security.txt, with the headers to copy.

What is checked

CheckRead fromRule
HTTPSFinal URLThe page is served over https://, and the http:// address redirects straight to it.
Strict-Transport-SecurityResponse headerPresent, with max-age of at least six months (a year for preload lists).
Content-Security-PolicyHeader or meta tagEnforced, not report-only, and script-src without 'unsafe-inline' (unless a nonce or hash is used), 'unsafe-eval' or wildcards.
ClickjackingResponse headersCSP frame-ancestors, or X-Frame-Options DENY or SAMEORIGIN.
X-Content-Type-OptionsResponse headernosniff, so browsers never run a file as a different type.
Referrer-PolicyResponse headerSet, and not unsafe-url.
CookiesSet-CookieSecure on HTTPS sites, HttpOnly on session and login cookies, and never SameSite=None without Secure.
Mixed contentHTMLNo scripts, styles, frames, images, media or form actions on http:// addresses.
Script integrityHTMLScripts from other domains carry an integrity hash where the file has a fixed version.
Version headersResponse headersServer and X-Powered-By do not reveal software versions.
security.txt/.well-known/security.txtPresent, with Contact and an Expires date in the future (RFC 9116).

What this check is, and what it is not

It is a passive hygiene check. It makes the same requests any visitor’s browser makes, reads the headers and HTML, and compares them with current recommendations. It never sends attack payloads, guesses passwords or scans ports.

So it cannot find vulnerabilities in your code, outdated plugins or weak passwords. A good score means the standard browser protections are switched on, not that the site cannot be broken into. For that, use a penetration test or a vulnerability scanner you are allowed to run.

Why these headers matter

Where to set the headers

Roll out a Content-Security-Policy safely

Send the policy as Content-Security-Policy-Report-Only first. Browsers then report what it would block without blocking it. Browse the site, fix or allow what the console reports, and only then rename the header to Content-Security-Policy. The fix in the report starts you with a policy built from the scripts your page already loads.