When a tool's entire pitch is privacy, its own website is the first thing a visitor can actually check. So we checked it - on 99 sites across VPN providers, password managers, encrypted messengers, self-hosted tools and privacy-focused hosts.
What the score is, and what it is not
This is the part to read before the table, because a number without its meaning is worse than no number.
We measure what the web server declares to your browser. Eight headers, on the homepage, on one day. That is the whole scope.
We do not measure the product. A password manager scoring F here may have flawless cryptography; a VPN scoring A+ may still keep logs. The headers say whether someone switched on the browser-side hardening. That is a signal about engineering care, not a verdict on the software.
If you take one thing from this page: a low grade is not an accusation, and a high grade is not a guarantee.
How the score is calculated
Eight headers, weighted by what each actually prevents rather than counted equally:
| Header | Points | What it prevents |
|---|---|---|
Content-Security-Policy | 25 | script injection - the broadest single defence |
Strict-Transport-Security | 20 | silent downgrade to plain HTTP |
X-Content-Type-Options | 10 | MIME sniffing |
X-Frame-Options | 10 | clickjacking (or frame-ancestors in CSP) |
Referrer-Policy | 10 | URL leakage to third parties |
Permissions-Policy | 10 | unrequested camera, microphone, geolocation |
Cross-Origin-Opener-Policy | 10 | cross-origin window interference |
Cross-Origin-Resource-Policy | 5 | unwanted cross-origin embedding |
Grades: A+ 90-100 · A 75-89 · B 60-74 · C 40-59 · D 20-39 · F under 20.
A site that uses frame-ancestors inside its CSP receives the X-Frame-Options points. Without that rule we would have penalised sites for choosing the more modern option - a flaw in our scoring, not in their configuration.
Seven sites could not be measured (timeout, certificate failure, or an automated client refused). Their rows are empty, not zero. A failed measurement is not a finding.

A padlock on a grid fence, the sky showing through every square. Headers work the same way: each one closes a specific opening, and the ones you leave out stay open regardless of how good the lock is.
The full ranking, August 2026
| # | Site | Grade | Score | CSP | HSTS | X-CTO | XFO | Ref | Perms | COOP | CORP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | grapheneos.org | A+ | 100 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 2 | mullvad.net | A+ | 100 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 3 | whonix.org | A+ | 100 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 4 | cryptpad.fr | A+ | 90 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ |
| 5 | bitwarden.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 6 | cryptostorm.is | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 7 | duckduckgo.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 8 | element.io | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 9 | exodus-privacy.eu.org | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 10 | netbird.io | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 11 | njal.la | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | — |
| 12 | posteo.de | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 13 | startmail.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 14 | vaultwarden.dev | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 15 | windscribe.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 16 | www.dashlane.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 17 | www.passbolt.com | A | 85 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 18 | 1password.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 19 | azirevpn.com | A | 75 | ✅ | ✅ | ✅ | ✅ | — | ✅ | — | — |
| 20 | nextcloud.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 21 | privacytools.io | A | 75 | ✅ | — | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| 22 | proton.me | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 23 | searx.be | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 24 | standardnotes.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 25 | threema.ch | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 26 | tutanota.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 27 | www.ovpn.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 28 | www.scaleway.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 29 | www.startpage.com | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 30 | www.torproject.org | A | 75 | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 31 | cryptomator.org | B | 65 | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| 32 | firezone.dev | B | 65 | ✅ | ✅ | — | ✅ | — | ✅ | — | — |
| 33 | ivpn.net | B | 65 | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| 34 | libreswan.org | B | 65 | ✅ | ✅ | — | ✅ | ✅ | — | — | — |
| 35 | mailbox.org | B | 65 | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| 36 | tailscale.com | B | 65 | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| 37 | www.lastpass.com | B | 65 | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| 38 | www.privacyguides.org | B | 65 | ✅ | ✅ | ✅ | — | ✅ | — | — | — |
| 39 | www.wire.com | B | 65 | ✅ | ✅ | — | ✅ | ✅ | — | — | — |
| 40 | matrix.org | B | 60 | — | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 41 | netfoundry.io | B | 60 | — | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 42 | obsidian.md | B | 60 | — | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 43 | openziti.io | B | 60 | — | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 44 | traefik.io | B | 60 | — | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| 45 | www.mojeek.com | C | 55 | ✅ | — | ✅ | ✅ | ✅ | — | — | — |
| 46 | airvpn.org | C | 50 | — | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 47 | owncloud.com | C | 50 | — | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 48 | protonvpn.com | C | 50 | — | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 49 | www.expressvpn.com | C | 50 | — | ✅ | ✅ | ✅ | ✅ | — | — | — |
| 50 | www.twingate.com | C | 50 | — | ✅ | ✅ | ✅ | — | — | ✅ | — |
| 51 | hetzner.com | C | 40 | — | ✅ | ✅ | ✅ | — | — | — | — |
| 52 | keepassxc.org | C | 40 | — | ✅ | ✅ | — | ✅ | — | — | — |
| 53 | tails.net | C | 40 | — | ✅ | ✅ | ✅ | — | — | — | — |
| 54 | www.pfsense.org | C | 40 | — | ✅ | ✅ | ✅ | — | — | — | — |
| 55 | www.wireguard.com | C | 40 | — | ✅ | ✅ | ✅ | — | — | — | — |
| 56 | 1984.hosting | D | 35 | ✅ | — | — | ✅ | — | — | — | — |
| 57 | nordpass.com | D | 30 | — | — | ✅ | ✅ | ✅ | — | — | — |
| 58 | surfshark.com | D | 30 | — | ✅ | ✅ | — | — | — | — | — |
| 59 | www.privateinternetaccess.com | D | 30 | — | ✅ | — | ✅ | — | — | — | — |
| 60 | briarproject.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 61 | contabo.com | D | 20 | — | ✅ | — | — | — | — | — | — |
| 62 | defined.net | D | 20 | — | — | ✅ | — | ✅ | — | — | — |
| 63 | getoutline.org | D | 20 | — | — | ✅ | — | ✅ | — | — | — |
| 64 | hysteria.network | D | 20 | — | — | ✅ | — | ✅ | — | — | — |
| 65 | joplinapp.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 66 | nginx.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 67 | openvpn.net | D | 20 | — | ✅ | — | — | — | — | — | — |
| 68 | signal.org | D | 20 | — | — | ✅ | — | ✅ | — | — | — |
| 69 | simplex.chat | D | 20 | — | ✅ | — | — | — | — | — | — |
| 70 | tosdr.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 71 | www.eff.org | D | 20 | — | — | ✅ | ✅ | — | — | — | — |
| 72 | www.netmaker.io | D | 20 | — | ✅ | — | — | — | — | — | — |
| 73 | www.opnsense.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 74 | www.ovhcloud.com | D | 20 | — | — | ✅ | ✅ | — | — | — | — |
| 75 | www.portainer.io | D | 20 | — | ✅ | — | — | — | — | — | — |
| 76 | www.strongswan.org | D | 20 | — | ✅ | — | — | — | — | — | — |
| 77 | xtls.github.io | D | 20 | — | ✅ | — | — | — | — | — | — |
| 78 | runbox.com | F | 10 | — | — | — | — | ✅ | — | — | — |
| 79 | www.cyberghostvpn.com | F | 10 | — | — | — | ✅ | — | — | — | — |
| 80 | www.digitalocean.com | F | 10 | — | — | — | ✅ | — | — | — | — |
| 81 | www.hostinger.com | F | 10 | — | — | — | — | — | — | ✅ | — |
| 82 | www.shadowsocks.org | F | 10 | — | — | ✅ | — | — | — | — | — |
| 83 | zerotier.com | F | 10 | — | — | ✅ | — | — | — | — | — |
| 84 | caddyserver.com | F | 0 | — | — | — | — | — | — | — | — |
| 85 | calyxos.org | F | 0 | — | — | — | — | — | — | — | — |
| 86 | delta.chat | F | 0 | — | — | — | — | — | — | — | — |
| 87 | headscale.net | F | 0 | — | — | — | — | — | — | — | — |
| 88 | husarnet.com | F | 0 | — | — | — | — | — | — | — | — |
| 89 | keepass.info | F | 0 | — | — | — | — | — | — | — | — |
| 90 | pivpn.io | F | 0 | — | — | — | — | — | — | — | — |
| 91 | psono.com | F | 0 | — | — | — | — | — | — | — | — |
| 92 | rclone.org | F | 0 | — | — | — | — | — | — | — | — |
| 93 | seafile.com | F | 0 | — | — | — | — | — | — | — | — |
| 94 | syncthing.net | F | 0 | — | — | — | — | — | — | — | — |
| 95 | uptimekuma.org | F | 0 | — | — | — | — | — | — | — | — |
| 96 | www.qubes-os.org | F | 0 | — | — | — | — | — | — | — | — |
| 97 | www.softether.org | F | 0 | — | — | — | — | — | — | — | — |
| 98 | www.tinc-vpn.org | F | 0 | — | — | — | — | — | — | — | — |
| 99 | www.veracrypt.fr | F | 0 | — | — | — | — | — | — | — | — |
Did your site earn an A+, A or B? Take the badge
If your site scored B or better, you are welcome to display it. The badge links back to this page so anyone can verify the grade against the published table and re-run the scanner themselves - which is the only reason a badge like this is worth anything.
There is one badge per grade. Swap -aplus for -a or -b to match the grade in the table above.
<a href="https://www.vpnsmith.com/en/blog/vpn-privacy-security-headers-2026">
<img src="https://www.vpnsmith.com/badges/security-headers-2026-aplus.svg"
alt="Security Headers 2026 - grade A+ - measured by VPNSmith" width="184" height="40">
</a>
| grade | badge file |
|---|---|
| A+ | https://www.vpnsmith.com/badges/security-headers-2026-aplus.svg |
| A | https://www.vpnsmith.com/badges/security-headers-2026-a.svg |
| B | https://www.vpnsmith.com/badges/security-headers-2026-b.svg |
Each badge is a static SVG with no script and no cookie. Being a privacy audience, you will want the rest of it stated plainly: served from our domain it is a third-party request, and our web server logs it the way any web server logs an image. So host it yourself - download the SVG, put it on your own domain, keep the link. That is the version we recommend, and it changes nothing for us: we count badges by reading public HTML, never by reading our logs.
No conditions attached. We do not ask for anything in return, we do not require the link to be followed, and the badge keeps working whether or not you tell us you used it.
Improved your headers? Ask for a re-test
The scanner is MIT-licensed and dependency-free, so you can reproduce our number before you even contact us. If you have changed your configuration and want the table to reflect it, say so and we will re-measure and update the row. A site raising its score is the outcome this page exists to encourage - a ranking that only names and shames is a ranking nobody improves for.
Reproduce every number here
The measurement is worth exactly as much as your ability to check it. The scanner queries each homepage once, reads the response headers, and applies the table above. No key, no scraping, no account.
The scanner: security-headers-scan.py — MIT, no dependencies, one argument (a text file with one domain per line). It queries each homepage once, reads the response headers, and applies the weights in the table above. Run it against this list and you should reproduce our column values exactly; if you do not, we would like to know.
If you want the wider context on why these headers matter for a self-hosted setup, our WireGuard vs OpenVPN comparison covers the transport side, and choosing a VPS for a VPN covers the host you would be hardening.
★ Nuremberg GDPR datacenter · ✓ Dedicated IPv4 included · 200+ Mbps guaranteed
Self-host your VPN on your own VPS → ContaboFull root access · public IPv4 · pick your region→


