Security Auditor — checks whether
Strict-Transport-Security meets Chromium HSTS preload header requirements.Security
Preload-ready HSTS locks browsers onto HTTPS for the host and all subdomains.
Compatibility
Header syntax follows RFC 6797; Chromium requires max-age ≥ 1 year, includeSubDomains, and preload.
Strict-Transport-Security. It does not check HTTP→HTTPS redirects, certificate validity, or whether the host is already on the live Chromium preload list.
How it works
The auditor judges Chromium HSTS preload readiness from the STS header on the audited URL:- Parse — requires an
httpsURL with a hostname. Non-HTTPS URLs skip the fetch and warn. Invalid or empty URLs error. - Fetch — reads response headers with
HeadersCrawler. AllStrict-Transport-Securityvalues are collected; RFC 6797 uses the first. - Rules — missing header, missing or low
max-age(below31536000), missingincludeSubDomains, and missingpreloadare separate FAILs. Multiple STS values are a WARNING. - Aggregate —
ERRORwins, thenFAIL, thenWARNING; if every rule passes, the audit isSUCCESS. - Specification pin — every run emits
37A-HSTSPreloadAuditor-100(INFORMATION) naming Chromium HSTS Preload submission requirements and RFC 6797 (2012-11), pinned tohttps://hstspreload.org/#submission-requirements. That check does not change overall status.
What it audits
Every row maps to onecheckRule* method and one CheckCode. 37A-HSTSPreloadAuditor-100 is emitted on every run, including fetch errors and non-HTTPS URLs. Directive FAILs (401–404) are skipped when the header itself is missing (400). CheckCode suffixes use status ranges: 100 information, 200 success, 300–399 warning, 400–499 fail, 500–599 error.
Output documentation
Risks and considerations
Preload is hard to undo
- Once a host is on the Chromium preload list, browsers refuse HTTP for that host and all subdomains until a removal request is processed.
- Do not add
preloaduntil every subdomain can serve HTTPS and you intend to submit the domain at hstspreload.org.
Incomplete HSTS is not preload
- A header without
includeSubDomainsorpreload, or withmax-ageunder one year, is ordinary HSTS at best and is not eligible for the preload list. max-age=0signals HSTS removal and fails the preload minimum.
What this auditor does not check
- Chromium also requires a valid certificate and an HTTP→HTTPS redirect on the same host. Use the Certificate and HTTP Redirect auditors for those.
- STS headers sent over HTTP are ignored by RFC 6797; this auditor will not fetch a non-https URL.
- Presence on the live Chromium preload list is not verified.