Skip to content
ForgePlug — Logo
developerRuns Server-SideNo Signup

Security Headers Checker

Fetches a domain and inspects its response for the six HTTP security headers browsers rely on for defense-in-depth: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. Each missing or misconfigured header comes with a plain-English explanation of exactly what it protects against — no jargon-only output. Part of ForgePlug's Site Health Check, which also runs SSL, DNS, and robots.txt checks on the same domain at no extra cost.

This check runs server-side — ForgePlug briefly connects to the domain you enter to read its certificate, DNS records, response headers, and robots.txt/sitemap. We don't store anything beyond a 5-minute result cache (to avoid re-running the same check for everyone hitting a trending domain) and a short-lived snapshot used to compare a re-check later.

The six headers this scanner checks, and what each one stops

Plain-English explanations, not just a list of names.

  • Strict-Transport-Security — forces browsers to use HTTPS on every future visit, closing the window for downgrade/man-in-the-middle attacks on public Wi-Fi.
  • Content-Security-Policy — restricts which scripts and resources a page is allowed to load, limiting the damage if an XSS bug ever gets injected.
  • X-Frame-Options — stops your site from being loaded inside an invisible iframe on another site and used for clickjacking.
  • X-Content-Type-Options — stops browsers from guessing (MIME-sniffing) a file's type, which can otherwise turn an innocuous upload into executable script.
  • Referrer-Policy — controls how much of your URL (which can contain tokens or query data) leaks to third-party sites via the Referer header.
  • Permissions-Policy — explicitly restricts which browser features embedded content is allowed to request, like camera, microphone, or geolocation.

Because it's part of ForgePlug's full Site Health Check, submitting also runs a TLS certificate check, a DNS propagation check, and a robots.txt/sitemap validation on the same domain — all in parallel, at no extra cost.

Frequently Asked Questions

HTTP security headers, explained

Which six headers does this check for?
Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy — the standard set browsers use for defense-in-depth against downgrade attacks, XSS, clickjacking, MIME-sniffing, and referrer leakage.
My header is present — why is it still flagged?
A header can be present but misconfigured. This tool flags an HSTS header set to max-age=0 (which disables it) and an X-Frame-Options value other than DENY or SAMEORIGIN, since those are common copy-paste mistakes that leave the protection effectively off.
Which header should I add first if I only do one?
Strict-Transport-Security, closely followed by X-Content-Type-Options: nosniff. Both take a fixed value, need no per-site tuning, and have almost no chance of breaking a working site — unlike Content-Security-Policy, which usually needs several iterations before it can be enforced safely.
Why did adding a Content-Security-Policy break my site?
Because a first-draft CSP almost always blocks something the site itself depends on — inline styles, an analytics snippet, an embedded video, or a font CDN. Deploy it as Content-Security-Policy-Report-Only first, watch what it would have blocked, and only switch to enforcing once the report is clean.
Do I need X-Frame-Options if I already have a CSP?
If your CSP includes a frame-ancestors directive, that is the modern replacement and modern browsers will honour it. X-Frame-Options is still worth sending for older clients that do not understand frame-ancestors, and the two do not conflict.
What does Referrer-Policy actually leak without it?
By default browsers may send the full current URL to third-party resources in the Referer header. If your URLs contain reset tokens, invitation codes, internal IDs, or search terms, those values travel to every external script, image host, and analytics endpoint the page loads.
Is this really free, and is there a limit?
Yes — Site Health Check is free and doesn't require an account. Like every ForgePlug tool it's rate-limited per IP address (a handful of checks per minute) to keep the service fast and available for everyone, not to push a paid tier.
Why does this tool need a server? Aren't ForgePlug's tools all browser-based?
Almost all of them are — but a browser can't open a raw TLS handshake, query a DNS resolver directly, or fetch another site's headers without hitting CORS. Those three things require a real network connection from a server, so this one tool runs a small, rate-limited check server-side instead of pretending it can do it client-side.
What do you do with the domain I check?
The check result is cached for 5 minutes so a burst of people checking the same trending domain doesn't trigger five fresh outbound connections each time, and the most recent result is kept briefly so a re-check can eventually show what changed. We don't log who checked what.

Guides & Articles

Learn how to get the most out of this tool with our in-depth guides.

Tool Overview

A closer look at Security Headers Checker — how it works, who it's for, and where it fits in your workflow.

HTTP security headers are instructions your server sends with every response telling the browser what it is allowed to do with the page. They cost nothing to send, they are invisible to users, and they are the cheapest defensive measure available — which is precisely why they are so often left unset. Nothing breaks when they are missing. There is no error, no warning, no failing test. The protection is simply absent, and stays absent until someone checks.

Each of the six covers a different attack. Strict-Transport-Security tells the browser to refuse plain HTTP for your domain entirely, closing the window where a first request over HTTP can be intercepted and redirected. Content-Security-Policy restricts where scripts, styles, and frames may load from, which is the strongest single mitigation against cross-site scripting. X-Frame-Options (and its modern replacement, CSP's frame-ancestors) stops your pages being embedded in someone else's site to trick users into clicking things — clickjacking. X-Content-Type-Options: nosniff stops the browser second-guessing a declared content type, which is how an uploaded file can end up executed as a script. Referrer-Policy controls how much of the current URL leaks to third parties in the Referer header, which matters when your URLs contain tokens or identifiers. Permissions-Policy switches off browser features — camera, microphone, geolocation — that your page has no reason to use.

Presence alone is not the same as protection, and this is the part most quick checks miss. A Strict-Transport-Security header with max-age=0 is syntactically valid and completely inert — it actively tells the browser to forget the policy. An X-Frame-Options value other than DENY or SAMEORIGIN is ignored by modern browsers, so a creative custom value leaves you unprotected while looking configured. Both are common copy-paste results, and both are flagged here rather than counted as a pass.

The check fetches your domain and reports each of the six as present, missing, or present-but-misconfigured, with what the header actually does in plain terms. It is a starting point for hardening rather than a compliance audit — a strong CSP in particular takes iteration, because the first version almost always blocks something your own site depends on.

Key Features

Everything you get with this tool, at a glance.

All six headers in one pass

HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy.

Catches inert configurations

Flags max-age=0 HSTS and invalid X-Frame-Options values that look set but do nothing.

Shows the actual value

Reports what your server sent, not just whether the header name was present.

Explains the attack each one blocks

Every result says what it defends against, so the fix has a reason attached rather than a checklist tick.

Checks the live response

Reads headers from a real request, so CDN or proxy layers that strip or add headers are reflected.

Prioritised, not exhaustive

Focuses on the six that materially matter rather than listing every header ever proposed.

How to Use Security Headers Checker

Get from zero to done in four quick steps — no account, no learning curve.

  1. Check the URL users actually land on

    Headers can differ between apex and www, between HTTP and HTTPS, and between a CDN edge and your origin. Test the address real traffic hits.

  2. Start with HSTS and nosniff

    These two are effectively free — a fixed value with no per-site tuning and almost no chance of breaking a working site. Set them first.

  3. Treat CSP as an iterative project

    Deploy Content-Security-Policy in report-only mode first and watch what it would have blocked. Enforcing a first-draft policy on a live site reliably breaks analytics, embeds, or inline styles.

  4. Verify a header is doing something

    If a header is reported as present but misconfigured, treat it as absent. max-age=0 and an unrecognised X-Frame-Options value provide no protection at all.

  5. Re-check after CDN changes

    Proxies and CDNs can add or strip headers independently of your origin config, so a change at that layer is worth verifying from outside.

Practical Examples

Real input and output pairs so you know exactly what to expect.

Well-configured site

Input

github.com

Output

Pass — HSTS with a long max-age, a Content-Security-Policy present, framing restricted, and nosniff set.

Header present but inert

Input

A site sending Strict-Transport-Security: max-age=0

Output

Flagged — the header is syntactically valid but instructs the browser to discard the policy, so HTTPS is not enforced.

No headers configured

Input

A default server with no header configuration

Output

All six reported missing, with the specific attack each one would have mitigated.

Guides & Articles

Learn how to get the most out of this tool with our in-depth guides.

Was this tool helpful?

Your feedback helps us improve Security Headers Checker for everyone.

Share this tool

Share