Skip to main content
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.
This auditor fetches the audited HTTPS URL and inspects 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:
  1. Parse — requires an https URL with a hostname. Non-HTTPS URLs skip the fetch and warn. Invalid or empty URLs error.
  2. Fetch — reads response headers with HeadersCrawler. All Strict-Transport-Security values are collected; RFC 6797 uses the first.
  3. Rules — missing header, missing or low max-age (below 31536000), missing includeSubDomains, and missing preload are separate FAILs. Multiple STS values are a WARNING.
  4. Aggregate — ERROR wins, then FAIL, then WARNING; if every rule passes, the audit is SUCCESS.
  5. Specification pin — every run emits 37A-HSTSPreloadAuditor-100 (INFORMATION) naming Chromium HSTS Preload submission requirements and RFC 6797 (2012-11), pinned to https://hstspreload.org/#submission-requirements. That check does not change overall status.

What it audits

Every row maps to one checkRule* 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 preload until every subdomain can serve HTTPS and you intend to submit the domain at hstspreload.org.

Incomplete HSTS is not preload

  • A header without includeSubDomains or preload, or with max-age under one year, is ordinary HSTS at best and is not eligible for the preload list.
  • max-age=0 signals 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.