Security Headers
Inspects the HTTP response headers your site sends, grades its security posture out of 100, and gives you the exact line to add for every missing header.
Last updated 2026-08-06
Summary#
Security Headers requests your site the way a browser does, reads every HTTP response header it sends back, and grades eleven of them for security posture. It returns a score out of 100, a per-header verdict, a copy-ready snippet for every gap, and a downloadable configuration bundle for Nginx, Apache and Cloudflare. It costs nothing.
Purpose#
Response headers are instructions your server gives every browser before a single pixel is drawn: only load scripts from these origins, never render me in someone else's frame, always use HTTPS from now on, do not guess this file's type. They are the cheapest security control in existence — a handful of configuration lines with no code change — and most sites send almost none of them.
They also feed Lighthouse's Best Practices score and the trust signals Chrome shows to your visitors, which is why this sits in Site Health rather than in a security corner of the app.
The decision it helps you make is which header to add next, and exactly what to paste.
Overview#
You give it a domain. Metric Vault makes a real HTTP request to it, follows redirects, and captures the complete response header set. Eleven checks then run against those headers: seven security headers, two caching headers, and two information-disclosure checks that pass when a header is absent rather than present.
Each check resolves to pass, warning or critical. The score starts at 100 and subtracts 15 per critical and 5 per warning. Everything shown is read from the live response — no assumptions and no scanning of your configuration files.
Benefits#
- Copy-ready fixes. Every missing header comes with the exact directive line, one click to copy.
- A configuration bundle. Generate File produces a text file containing raw snippets plus ready-made Nginx, Apache and Cloudflare Worker versions.
- Catches information leaks, not just missing protections — a verbose
ServerorX-Powered-Byheader tells attackers what you run. - Plain-language impact. Each result is explained in terms of what an attacker could do and what Google sees.
- Free on every plan, with the complete raw header list included.
Use Cases#
- Hardening a new site before launch. Ten minutes of configuration closes the common web attack classes.
- Answering a security questionnaire. Export the PDF as evidence of your current header posture.
- Raising a Lighthouse Best Practices score. Missing headers are among the easiest points to recover — see PageSpeed & Vitals.
- Auditing a client's infrastructure on day one. The score and the critical count are a one-screen summary you can act on immediately.
- Confirming a change deployed. Re-run after a config push; every run is a fresh fetch.
Requirements#
- A signed-in Metric Vault account.
- Any plan, including Free.
- A publicly reachable domain. Private, internal and loopback hosts are refused.
- No credits, no integration, no ownership check.
Permissions#
| Your situation | What you see |
|---|---|
| Signed out | Please sign in to run this tool. in the result area |
| Free plan | The tool runs normally — it is one of the zero-credit technical tools |
| Any paid plan | The tool runs normally |
| Over the hourly fair-use limit | Hourly fair-use limit reached (100 light-tool calls/hour)… |
No role restriction applies. See Roles and what each can do.
Cost#
0 credits. The button reads Check Headers · FREE. The run never touches your monthly credit allowance and counts only toward the fair-use limit of 100 light-tool calls per hour. See How credits work and What you get on Free.
There is no result cache and no "You already ran this" prompt — every run fetches the site again, so a configuration change shows up immediately.
Navigation Path#
Dashboard → Site Health → Security Headers
Inputs#
| Field | Accepts | Required | Default | Validation | Notes |
|---|---|---|---|---|---|
Domain field (placeholder e.g. nike.com) | A bare domain or any URL on the site | Yes | Empty | Empty input returns Enter a value first. https:// is added if omitted. Private and loopback hosts are refused | Headers can differ per path; test a real page as well as the home page |
| See example | — | No | — | — | Renders a stored sample report at no cost |
Step-by-Step Guide#
- Open
Dashboard → Site Health → Security Headers. - Optionally click See example for a free preview of the report.
- Type your domain into the field marked
e.g. nike.com. - Click Check Headers · FREE, or press
Enter. - Read the Security Score and the four KPI tiles.
- Work down Header Checks, clicking Add beside any warning or missing header to copy its snippet.
- Click Generate File to download a complete bundle with Nginx, Apache and Cloudflare Worker versions, or Export PDF for a report.
- Deploy your changes and re-run to confirm.
Reading the Results#
The header band. Your domain with a Live HTTP badge, the label "Security headers audit", and a status pill: Excellent (90+), Good (70-89), Needs Work (50-69) or Critical (below 50). Three actions sit on the right — Export PDF, Generate File and Schedule — and they repeat in a floating bar as you scroll.
The four KPI tiles.
| Tile | Shows | What good looks like |
|---|---|---|
| Passed | Headers configured correctly | 9 or more of 11 |
| Warnings | Headers to harden soon | 0-2 |
| Critical | Headers to fix immediately; reads "none — well done" at zero | 0 |
| HTTP Response | The status code, with the total header count and how many of the checked headers are present | 200 |
Security Score. A meter reading N/100. It starts at 100 and subtracts 15 per critical and 5 per warning, so a single critical costs the same as three warnings. In practice only one check can go critical: serving over plain HTTP. Below the meter sits "Verified · Live HTTP fetch · Scanned just now".
What good looks like: 90+ with zero criticals. What bad looks like: anything below 50, or any critical at all.
Header Checks. All eleven checks, each as a card with the header name, the value found (or what is missing), a badge reading PRESENT, WARNING or MISSING, and an Add button that copies a working directive to your clipboard:
| Check | Passes when | What it prevents |
|---|---|---|
| HTTPS | The URL is https:// — critical if not | Everything; without it no other header matters |
| Strict-Transport-Security | The header is present | Protocol-downgrade attacks on return visits |
| Content-Security-Policy | The header is present | Cross-site scripting, by allowlisting script sources |
| X-Frame-Options | The header is present | Clickjacking through hidden iframes |
| X-Content-Type-Options | The value is exactly nosniff | MIME-type sniffing attacks |
| Referrer-Policy | The header is present | Leaking your URLs and query strings to other sites |
| Permissions-Policy | The header is present | Unwanted use of camera, microphone and geolocation |
| Cache-Control | The header is present | Unpredictable caching of private responses |
| ETag | The header is present | Wasteful re-downloads of unchanged assets |
| Server Header | It is absent or under 20 characters | Advertising your exact server and version |
| X-Powered-By | It is absent | Advertising your framework and version |
The last two are inverted: a pass means the header is hidden. If your report says "Exposes: nginx/1.21.6" or "Exposes: PHP/8.1.2", remove those headers in your server configuration.
Recommended Headers. Nine industry-standard headers with a one-line explanation and a Copy button, each marked CONFIGURED, MISSING · CRITICAL or MISSING · RECOMMENDED:
| Header | Why it matters | Snippet |
|---|---|---|
| Strict-Transport-Security | Forces HTTPS. Prevents downgrade attacks. | Strict-Transport-Security: max-age=31536000; includeSubDomains; preload |
| Content-Security-Policy | Blocks XSS by allowlisting script/asset sources. | Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none' |
| X-Frame-Options | Stops clickjacking via hidden iframes. | X-Frame-Options: SAMEORIGIN |
| X-Content-Type-Options | Stops MIME-type sniffing attacks. | X-Content-Type-Options: nosniff |
| Referrer-Policy | Controls how much URL info leaks to other sites. | Referrer-Policy: strict-origin-when-cross-origin |
| Permissions-Policy | Disables risky browser APIs (camera/mic/geolocation). | Permissions-Policy: camera=(), microphone=(), geolocation=() |
| X-XSS-Protection | Legacy XSS filter (modern: use CSP instead). | X-XSS-Protection: 0 |
| Cross-Origin-Opener-Policy | Isolates the page from cross-origin windows. | Cross-Origin-Opener-Policy: same-origin |
| Cross-Origin-Resource-Policy | Stops other sites from embedding your resources. | Cross-Origin-Resource-Policy: same-site |
Start at the top. HSTS and CSP are marked critical here because they close the two largest attack classes, and the order of the table is the order to work in.
What This Means. Three plain-language insights: your verdict (Strong security posture at 80+, Needs hardening at 50-79, Critical gaps below 50) with the pass/warning/critical counts; the security impact, which names the attacks currently possible; and the SEO and trust impact, which explains how headers affect Google's trust signals and your Lighthouse Best Practices score.
Recommended Next Steps. Up to five ordered actions, each naming one header to add or fix. If everything passes you get "Maintain — re-scan weekly to catch regressions."
All Response Headers. The complete raw header set your server returned, name and value. Read it once — sites frequently ship internal debugging headers they never intended to expose.
Examples#
Example: You check example.com. The score is 65 / 100 — Needs Work: 7 passed, 4 warnings, 0 critical, HTTP 200 with 18 headers. The warnings are Content-Security-Policy (missing), Permissions-Policy (missing), Server Header ("Exposes: Apache/2.4.52 (Ubuntu)") and X-Powered-By ("Exposes: PHP/8.1.2"). You click Generate File, paste the Apache block into your virtual host, remove the two disclosure headers, reload, and re-run: 90 / 100 — Excellent. Total elapsed time, about ten minutes, with no application change.
Screenshots#
Tips#
- Generate File is the fastest route to a real fix. It writes one bundle with raw snippets plus Nginx, Apache and Cloudflare Worker versions of every header.
- Deploy CSP in report-only mode first. A strict
Content-Security-Policycan break third-party scripts, and report-only lets you see what would break before it does. - Set HSTS
max-ageshort at first.preloadis effectively irreversible for months, so prove your HTTPS setup before committing. - Test a real content page as well as the home page. Many stacks apply headers per route.
- If you sit behind a CDN, add headers at the edge — it is usually one rule for the whole site.
Best Practices#
- Fix in table order: HTTPS, then HSTS, then CSP, then the rest.
- Remove
Serverversion detail andX-Powered-Byentirely. They benefit nobody except an attacker fingerprinting your stack. - Set the headers once at the edge or in the base server configuration rather than per application, so new routes inherit them.
- Re-run after every infrastructure change. Headers are lost by CDN reconfiguration more often than by code.
- Use Schedule so a regression reaches you by email rather than by incident.
Common Mistakes#
- Adding a strict CSP straight to production. It will block your analytics, chat widget and payment scripts. Use report-only first.
- Setting
X-Content-Type-Optionsto anything butnosniff. Any other value fails the check and does nothing. - Treating
X-XSS-Protectionas protection. It is a legacy filter; the modern answer is CSP, which is why the recommended value here is0. - Only checking the home page. Headers are frequently route-specific.
- Relying on HSTS without HTTPS everywhere. HSTS on a site with mixed HTTP endpoints breaks them permanently for returning visitors.
Limitations#
- One URL per run, and headers can differ per path.
- Eleven checks. The Recommended Headers table covers nine industry-standard headers; anything outside those sets is listed raw but not graded.
- Presence, not correctness. The tool confirms a
Content-Security-Policyexists; it does not evaluate whether your policy is strong. The one exception isX-Content-Type-Options, where the value must benosniff. - Only one check can go critical — serving over plain HTTP. Everything else is a warning, so a score of 95 can still hide a missing CSP.
- It reads what the server sent to Metric Vault. A CDN that varies headers by geography or user-agent may serve your visitors something different.
- This is not a penetration test. It grades response headers only.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
Enter a value first. | The domain field is empty | Type a domain and run again |
Please sign in to run this tool. | Session expired | Sign in again — see I cannot sign in |
HTTP headers check failed: … | The host is unreachable, timed out, or refused the request | Confirm the domain resolves publicly and does not block non-browser requests |
| HTTP Response shows a redirect status or a different host | Redirects were followed to another origin | Test the final URL directly to see the headers your visitors actually receive |
| A header you configured shows as MISSING | A CDN or proxy is stripping or overriding it | Add the header at the edge instead of the origin, then re-run |
| Score did not move after a deploy | The configuration did not reload, or the CDN is caching the old response | Reload the server config, purge the CDN, and run again |
Hourly fair-use limit reached (100 light-tool calls/hour)… | Over 100 zero-credit calls this hour | Wait for the next hourly reset |
FAQs#
Does this cost credits? No. It is one of the zero-credit technical tools and runs on every plan, including Free.
What does the score actually measure? Eleven checks against your live response headers. The score starts at 100 and loses 15 per critical and 5 per warning. In practice only "not served over HTTPS" can be critical, so most real sites land between 50 and 100 on warnings alone.
My score is 95 but I have no Content-Security-Policy. Is that fine? No. A missing CSP is a warning, so it costs only 5 points, but CSP is the single strongest defence against cross-site scripting. Read the Recommended Headers table, not just the number.
What is the difference between the Header Checks list and the Recommended Headers list? Header Checks is what your site sent, graded. Recommended Headers is the industry-standard set, marked configured or missing, with a snippet for each. The lists overlap but are not identical — Recommended Headers includes X-XSS-Protection, Cross-Origin-Opener-Policy and Cross-Origin-Resource-Policy, which are not part of the eleven graded checks.
What exactly does Generate File download? A single text file named for your domain containing every recommended header three ways: as raw directive lines, as an Nginx add_header block, as an Apache Header always set block, and as a Cloudflare Worker script.
Do security headers help SEO? Indirectly, and the report says so plainly. They are not a ranking factor, but they raise Lighthouse's Best Practices score, they prevent the mixed-content and insecure-subresource warnings Chrome shows users, and HTTPS itself has been a positive signal for years.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.