HSTS Header Builder
Compose a Strict-Transport-Security header — max-age, includeSubDomains, preload — with a live preload-list eligibility check.
Strict-Transport-Security: max-age=31536000; includeSubDomains- ✓max-age ≥ 31536000 (1 year)
- ✓includeSubDomains is on
- ×preload directive is on
Apply this on every HTTPS response. Only the eldest matching policy a browser has seen is the one it enforces.
How to use
- Start with the rollout preset (5 min) when first turning HSTS on — it's easy to back out if something breaks.
- Once stable, jump to the production preset (1 year + includeSubDomains).
- Only enable preload when you've confirmed every subdomain works on HTTPS forever — preload removal takes months.
About this tool
ShowHide
Turns a small set of toggles into the Strict-Transport-Security header that tells every browser to stick to HTTPS on your domain. Includes three presets — a 5-minute rollout window for new policies, a sane 1-year production setting with includeSubDomains, and the 2-year+ configuration that the HSTS preload list requires. The eligibility block lights up when your settings match Chromium's preload submission requirements so you know it's safe to apply.
HSTS is remembered by the browser, which is what makes max-age a commitment rather than a setting. Once a visitor has seen the header, that browser refuses plain HTTP for your host until the timer runs out, and you cannot reach back and shorten it. Serving max-age=31536000 means a year of enforced HTTPS for everyone who visited today, even if you change your mind tomorrow. The five-minute preset exists so a new policy can be tried without that consequence, and the way to retract one is to serve max-age=0 long enough for every affected browser to see it.
The header is ignored over plain HTTP by design, so it protects the second visit rather than the first. A user who types the bare hostname still makes one cleartext request before the redirect teaches their browser the rule, and that request is the one an attacker on the network wants. Preloading is the answer to exactly that gap: browsers ship the list, so the very first request goes to HTTPS.
includeSubDomains reaches names you may not be thinking about. It covers every subdomain, including internal tooling, a legacy box that has no certificate, and hosts created after the header went out. Anything under the domain that cannot serve HTTPS becomes unreachable in that browser for the life of the timer.
Preloading is much harder to undo than to do. Removal is a manual request and then a wait for browser releases to carry it, measured in months, so submit a domain only when every current and future subdomain will serve HTTPS.
Frequently asked questions
What does max-age actually do?
It tells the browser to remember "this domain is HTTPS-only" for that many seconds. While the memory holds, the browser refuses any plain-http navigation to the domain and upgrades it to https before sending.
Is preload reversible?
Slowly. Submitting to the Chromium preload list is easy; removal requires a separate request and can take months to propagate to all browser releases. Don't enable preload until you're sure every subdomain works on HTTPS.
Why is the header ignored on the very first visit?
Because a browser only learns the policy after it has completed one HTTPS request, and a header sent over plain HTTP is ignored by design — otherwise an attacker on the network could inject one. So HSTS protects returning visitors, not the first request, which is the gap the preload list exists to close. Serving a permanent redirect from HTTP to HTTPS is still needed regardless.
What does includeSubDomains actually commit me to?
Every host under the domain, including ones you have forgotten: an old intranet name, a staging box, a vendor's CNAME, anything on a subdomain that still speaks only HTTP becomes unreachable for anyone whose browser has seen the header. Inventory the subdomains before turning it on, and be aware that the commitment lasts for the max-age you published, not until you change your mind.
Related tools
Content-Security-Policy Builder
Build a CSP header from per-directive source lists, with three starter presets and live warnings for the dangerous wildcards.
Network
Referrer-Policy Header Builder
Pick a Referrer-Policy value and see exactly what Referer header outbound requests will send — same-origin, cross-origin HTTPS, HTTPS→HTTP downgrade.
Network
SVCB / HTTPS Record Builder & Decoder
Normalise, encode and check an SVCB or HTTPS record: SvcParams decoded, the wire bytes broken down, and every RFC 9460 rule it breaks named.
Network
CSP Hash Generator
Compute the sha256 / sha384 / sha512 base64 hash an inline <script> or <style> block needs to be whitelisted by a Content-Security-Policy.
Network
/.well-known/* URI Reference
Searchable catalog of well-known URIs registered with IANA — security.txt, openid-configuration, acme-challenge and 30+ more, with RFCs.
Network
TLS Cipher Suite Decoder
Paste an IANA cipher suite name and get its key exchange, authentication, bulk cipher, mode and MAC — plus a security grade for forward secrecy and AEAD.
Network