Skip to main content

Checks

HSTS and HTTPS browser policy

HSTS is the one header with a delete key that is hard to reach. Get max-age, includeSubDomains, and preload right before you ship it, not after.

On this page

HTTP Strict Transport Security tells a browser: for this host, use HTTPS, do not ask, do not offer the user a click-through. The browser remembers that for max-age seconds after receiving the policy over a secure connection.

That memory is the feature and the risk. SSLBoard inspects the returned HSTS evidence and flags hosts where it does not observe an enabled policy.

Reading the policy

DirectiveWhat it doesWhat to watch
max-ageHow long the browser keeps the policy0 removes a stored policy rather than enabling protection
includeSubDomainsExtends the policy to every subdomainEvery subdomain, including ones you have not thought about, must work over HTTPS
preloadSignals intent to browser preload programsThe token alone does not put you on anyone’s list

The MDN HSTS reference has the full syntax.

A missing-HSTS finding describes what the scan observed, not the state of every browser that has ever visited you. A policy you served previously, or a parent domain’s policy, can still be in effect in a particular browser.

Why the header is missing when you know you set it

If the endpoint is reachable and no enabled policy is observed, the header is being set somewhere that is not the public edge.

Response headers pass through a chain: CDN, reverse proxy, application server. Each link can add, replace, or drop headers, and only what survives the last link reaches the browser. Find which component produces the response the internet sees, and set it there.

Roll it out in this order

The order matters because HSTS is difficult to reverse:

  1. Confirm the site genuinely works over HTTPS, on every route you care about.
  2. Ship a short max-age and watch.
  3. Raise max-age once you are confident.
  4. Only then consider includeSubDomains, and only after auditing every subdomain, including the internal-looking ones.
  5. Treat preload as a separate decision with its own slow exit. Do not add it to get a green tick.

Then retest the public endpoint and read back the policy that was actually returned. Validate important application routes yourself, since the scan samples responses rather than crawling your app.

Related: HTTP redirects for the first request, and other browser headers for the rest.

Questions people ask

What max-age should I use?

Start short, such as a few minutes or hours, while you confirm every route works over HTTPS. Raise it once you are confident. Long values are the point of HSTS, but they are also a commitment you cannot quickly undo for browsers that already stored the policy.

Does max-age=0 disable HSTS?

It removes the stored policy from browsers that see it, rather than enabling protection. Serving max-age=0 is how you back out, and it only works for browsers that come back and receive it.

Does the preload token mean I am preloaded?

No. The token signals intent to browser preload programs. It does not prove your domain is on any browser's list, and getting onto one is a separate submission with a slow exit.

Why is my HSTS finding still there after I added the header?

Usually because the header is set somewhere that is not the public edge. A CDN, a reverse proxy, and the application can each add or overwrite headers, and only the last one in the chain reaches the browser.

Last verified Sep 18, 2026

Try these checks on your own domain: Start a free scan. If a result needs a closer look, contact us.