All checks in detail
Every single test Checkvanta runs — what is checked, why, and why it matters. Generated automatically from our scoring rules, so it is always up to date.
77 checks
Website configuration
DNS
The domain's basic DNS records — whether names resolve to addresses at all and the foundation is sound.
Name servers
RequiredWhat is checked: We look up the domain's authoritative name servers and resolve each one over IPv4 and IPv6.
Name servers answer DNS queries for your domain. At least two, reachable over both IPv4 and IPv6, improve resilience and reachability.
IPv4 address
RequiredWhat is checked: We check whether the domain resolves to an IPv4 (A) address.
The A record maps your domain to an IPv4 address so IPv4-only clients can reach it.
IPv6 address
RecommendedWhat is checked: We check whether the domain resolves to an IPv6 (AAAA) address.
The AAAA record maps your domain to an IPv6 address so IPv6-only clients can reach it and the site stays reachable as networks move to IPv6.
MX records
OptionalWhat is checked: We check whether the domain publishes MX records that direct mail delivery.
MX records tell other mail servers where to deliver e-mail for your domain.
What is checked: We check whether the domain publishes a CAA record.
CAA records declare which certificate authorities may issue TLS certificates for your domain, reducing the risk of mis-issuance.
What is checked: We check whether the domain is signed with DNSSEC and whether its signature chain validates.
DNSSEC cryptographically signs DNS answers so resolvers can detect tampering and spoofing.
DNS servers
The health and redundancy of the nameservers themselves — reachability, consistency and robust configuration.
DNS response
RequiredWhat is checked: As a base requirement we check whether any DNS response arrives for the domain at all (SOA/NS query through a validating resolver).
Without working DNS resolution the domain is effectively offline — no website, no mail, nothing. Every other check builds on this.
What is checked: We count the NS records configured for the zone. At least two nameservers are recommended.
If the only nameserver fails, the whole domain stops resolving. Multiple nameservers — ideally in separate networks — are the simplest, most effective protection against outages (RFC 2182).
Nameservers responding
RequiredWhat is checked: We query every listed nameserver directly (bypassing any resolver) for the zone and check whether it answers.
A delegated but dead nameserver slows down resolution for every visitor — resolvers must hit a timeout before trying the next server. If only one working server remains, redundancy is effectively gone.
SOA serial in sync
RecommendedWhat is checked: We read the SOA serial from each nameserver individually and compare them.
Different serials mean the servers deliver different zone states — changes (new records, changed IPs) reach only part of your visitors. Most common cause: a stuck zone transfer to a secondary.
What is checked: We send each nameserver a recursive query for an unrelated domain and check whether it resolves it instead of refusing.
An authoritative nameserver that doubles as an open resolver can be abused for DNS amplification attacks against third parties and endangers its own availability. Authoritative servers should refuse recursion (RFC 5358).
Public NS addresses
RequiredWhat is checked: We check that the nameservers' IP addresses are in public ranges — private ranges (RFC 1918, link-local etc.) do not belong in a public delegation.
An NS record pointing to a private address is unreachable from the internet and causes timeouts at every resolver. It may also leak internal network structure.
What is checked: We check whether the nameserver addresses sit in different networks (compared at subnet level: /24 for IPv4, /48 for IPv6).
Nameservers in the same network share routers, location and usually the provider — a single failure then hits all of them at once, and nominal redundancy is void (RFC 2182 recommends topologically separate locations).
Nameservers over IPv6
RecommendedWhat is checked: We query the domain's nameservers specifically over their IPv6 addresses (AAAA) on port 53 and count how many respond.
For IPv6-only clients to resolve a domain at all, the nameservers themselves must be reachable over IPv6 — ideally at least two, so redundancy survives a single outage.
NS match with parent
RecommendedWhat is checked: We compare the NS list served by the zone itself against the NS list delegated by the parent zone (registry).
When the lists differ, it is up to chance which servers a resolver uses — in the worst case queries land on servers that no longer (or don't yet) know the zone. Typical cause: a nameserver change applied only in the zone or only at the registrar.
Glue records
RecommendedWhat is checked: If nameservers live inside the zone itself (e.g. `ns1.example.com` for `example.com`), the parent must supply their IP addresses as glue. We check that this glue exists and matches the authoritative addresses.
Without correct glue you get a chicken-and-egg problem: the nameserver's address could only be resolved via the nameserver itself. Stale glue (e.g. after a server move) causes creeping, hard-to-find resolution failures.
Primary listed at parent
RecommendedWhat is checked: We check whether the primary nameserver recorded as MNAME in the SOA record also appears in the parent zone's delegation.
A primary missing at the parent suggests an incompletely propagated configuration. Some systems (e.g. dynamic DNS updates) specifically target the MNAME — if it is not publicly delegated, such updates behave unreliably.
What is checked: We check whether the refresh value in the SOA record (how often secondaries poll the primary) lies within the usual range of 1200–43200 seconds.
Too high a refresh delays propagation of zone changes to the secondaries; an extremely low one creates needless load. With NOTIFY the value matters less but still acts as a safety net.
What is checked: We check whether the retry value in the SOA record (how long a secondary waits after a failed refresh) lies within the usual range of 120–7200 seconds.
Too high a retry leaves secondaries running on stale data far too long after a failure; too low a value hammers an already struggling primary.
What is checked: We check whether the expire value in the SOA record (after how long a secondary without contact to the primary drops the zone) lies within the usual range of 604800–2419200 seconds.
Too short an expire makes secondaries drop the zone entirely during a longer primary outage — the domain goes offline despite redundancy. Too long a value keeps stale data alive for weeks in a failure case. 1–4 weeks is customary.
What is checked: We check whether the minimum TTL in the SOA record (today: negative-answer cache time, RFC 2308) lies within the usual range of 300–86400 seconds.
Too high a value makes “domain does not exist” answers stick in caches for hours — newly created records become visible late. An extremely low value noticeably increases query load.
SOA serial format
OptionalWhat is checked: We check whether the SOA serial follows the widespread date format YYYYMMDDnn (e.g. 2026072401).
Technically any 32-bit serial is valid — the date format is pure convention. But it shows at a glance when the zone last changed and makes debugging sync issues much easier. Many managed DNS providers (e.g. using Unix timestamps) deviate deliberately; that is not an error.
HTTP / Security Headers
The web server, its reachability and the protective headers that shield browsers from common attacks.
Reachability
RequiredWhat is checked: We check whether the site answers over HTTP and over HTTPS.
Basic reachability over HTTPS is required before the remaining web checks can run.
IPv6 reachability
RecommendedWhat is checked: We resolve the host's IPv6 address and try to connect to the web server over IPv6.
IPv6 reachability keeps the site available to IPv6-only clients as networks move away from IPv4.
Same website over IPv6
RecommendedWhat is checked: We fetch the homepage once forced over IPv4 and once over IPv6 and compare the visible text content.
IPv6 visitors should see the same site as IPv4 visitors. A large difference points to a misconfigured IPv6 server — for example an error page or a stale copy.
HTTPS redirect
RecommendedWhat is checked: We check whether a plain HTTP request is redirected to HTTPS on the same host.
Redirecting HTTP to HTTPS ensures visitors who omit the scheme still reach the encrypted site.
What is checked: We check whether your web server offers an HTTP Strict Transport Security (HSTS) policy, and we do so on the very first contact — before any redirect — because browsers remember HSTS per (sub)domain and a missing header anywhere in the redirect chain would leave visitors exposed.
HSTS forces the browser to switch straight to HTTPS on later visits, protecting against downgrade and SSL-stripping (machine-in-the-middle) attacks. A cache lifetime of at least one year (max-age=31536000) is considered sufficient. A long lifetime also protects infrequent visitors — but it means that if you ever need to turn HTTPS off again (generally a bad idea), you must wait until the policy has expired in every browser that previously visited.
Whether preloading is used, or the domain is on the HSTS preload list, is not evaluated here.
What is checked: We check whether the site sends a Content-Security-Policy header.
A Content-Security-Policy restricts which sources a page may load, mitigating cross-site scripting and injection.
X-Frame-Options
RecommendedWhat is checked: We check whether the site sends an X-Frame-Options header.
X-Frame-Options prevents the page from being embedded in a frame, protecting against clickjacking.
X-Content-Type-Options
RecommendedWhat is checked: We check whether the site sends X-Content-Type-Options with the value nosniff.
nosniff stops browsers from guessing a response's content type, which can turn benign files into executable scripts.
Referrer-Policy
RecommendedWhat is checked: We check whether the site sends a Referrer-Policy header.
A Referrer-Policy controls how much of the visited URL is shared with other sites, protecting user privacy.
HTTP compression
OptionalWhat is checked: We check whether the encrypted response is compressed at the HTTP level.
HTTP compression (gzip/Brotli) noticeably speeds up loading and is standard. The theoretical BREACH attack only concerns secret- and input-reflecting responses and is mitigated by other means — compression itself is not a fault. (TLS compression / CRIME is checked separately.)
What is checked: We fetch `/.well-known/security.txt` (RFC 9116) and check for the mandatory Contact field.
A security.txt file gives security researchers a clear, machine-readable way to report vulnerabilities to the right contact, which speeds up responsible disclosure.
HTTP/2
RecommendedWhat is checked: Using the ALPN negotiation during the TLS handshake we determine which HTTP version the web server actually offers.
HTTP/2 multiplexes several requests over one connection and noticeably speeds up loading, especially with many resources. It is widely supported today and should be enabled for public websites.
HTTP/3
OptionalWhat is checked: We check whether the HTTPS response carries an `Alt-Svc` header with `h3` — that is how a server signals it is additionally reachable over HTTP/3 (QUIC).
HTTP/3 runs over QUIC (UDP) instead of TCP and avoids its head-of-line blocking; this improves load time particularly on flaky mobile links. It is a worthwhile addition, but not (yet) a must.
Mixed content
RequiredWhat is checked: We scan the served HTML page for resources (images, scripts, stylesheets) that are loaded over `http://` despite the page being served via HTTPS.
Sub-resources loaded over HTTP on an HTTPS page can be tampered with in transit and partly undermine the protection of the encrypted connection. Browsers now block active mixed content (scripts) but do not always warn visibly.
What is checked: We check `<script>` and `<link>` tags with an external source for an `integrity` attribute (subresource integrity).
SRI stores a cryptographic hash of the expected file; the browser only loads the resource if it matches exactly. This protects against a compromised CDN or third-party host silently serving malicious code.
TLS
Transport encryption: protocol versions, ciphers, the certificate and the finer TLS internals.
HTTPS reachable
RequiredWhat is checked: We open a TLS connection to the host on port 443.
HTTPS encrypts traffic between visitors and the server and is the basis for every other TLS check.
What is checked: We check which TLS protocol versions your server accepts.
TLS secures the connection between visitors and the server. Older versions have cryptographic weaknesses. The security level of each version:
| Version | Rating |
|---|---|
| TLS 1.3 | good |
| TLS 1.2 | good |
| TLS 1.1 | insufficient |
| TLS 1.0 | insufficient |
Only TLS 1.2 and 1.3 should be offered.
Cipher suite
RequiredWhat is checked: We inspect the cipher suite the server negotiates and whether it provides forward secrecy.
Forward secrecy ensures recorded traffic cannot be decrypted later even if the server's private key is exposed.
Certificate
RequiredWhat is checked: We validate the certificate chain against trusted roots, its validity dates and the host name it covers.
A valid certificate proves the server's identity: it must chain to a trusted authority and match the requested host name.
Certificate key
RequiredWhat is checked: We inspect the certificate's public-key algorithm and its strength.
The public key protects the key exchange. RSA keys should be at least 2048 bits and ECDSA at least 256 bits.
Certificate signature
RequiredWhat is checked: We inspect the algorithm used to sign the certificate.
The signature algorithm secures the certificate against forgery. SHA-1 and MD5 are broken and must not be used.
What is checked: We check whether the server staples an OCSP response during the handshake.
OCSP stapling lets the server prove its certificate is not revoked without the visitor contacting the authority, improving speed and privacy.
What is checked: We look up the `_443._tcp` TLSA records and check them against the certificate presented over HTTPS.
DANE binds your certificate to DNSSEC, letting clients that support it detect a forged or mis-issued certificate a public authority might otherwise accept. A published but non-matching record is worse than none, because strict clients will refuse the connection.
Cipher order
RecommendedWhat is checked: We offer the server two equally strong cipher suites in reverse order and check whether its choice depends on that order.
When the server decides the preferred cipher suite, it can always enforce the strongest mutually supported one. Leaving the choice to the client would let a tampered or outdated client force a weaker suite.
Key exchange
RequiredWhat is checked: From the negotiated cipher suite we derive the key-exchange type (ECDHE/DHE/RSA), the group/curve used and the hash function.
An ephemeral key exchange (ECDHE or DHE) provides forward secrecy: even if the server's private key is later compromised, past connections stay protected. Static RSA key exchange does not.
Rating:
- Good: ECDHE with a modern curve (X25519, secp256r1/384r1), hash SHA-256/384
- Sufficient: DHE with ≥ 2048-bit parameters
- Insufficient: static RSA key exchange, DH parameters < 2048 bit, hash SHA-1/MD5
What is checked: We advertise a compression method in the ClientHello and check whether the server selects it in the ServerHello.
Active TLS compression enables the CRIME attack: the compressed message size leaks information about encrypted content (e.g. session cookies). TLS-level compression must therefore be off.
What is checked: We check whether the server offers the secure renegotiation extension (RFC 5746) and whether it accepts a renegotiation initiated by the client.
Without secure renegotiation (RFC 5746) a prefix-injection attack is possible, where an attacker prepends data before the real request. Additionally, client-initiated renegotiation should be disabled as it can be abused for DoS — TLS 1.3 removes renegotiation entirely, and modern TLS 1.2 servers supporting RFC 5746 refuse client renegotiation by default.
What is checked: We check whether the server offers the Extended Master Secret extension (RFC 7627) in the TLS 1.2 handshake.
Extended Master Secret binds the master secret to the entire handshake, preventing triple-handshake attacks that chain TLS sessions across connections. It should be active for TLS 1.2.
What is checked: We check whether the server accepts 0-RTT (early data) on a resumed TLS 1.3 connection, by establishing a session and trying to resume it with data sent ahead of the handshake.
0-RTT speeds up returning connections by letting the client send data before the handshake completes. The catch: this early data can be replayed by an attacker. Without server-side anti-replay protection — which can't be reliably verified from outside — that is a risk, especially for state-changing requests.
RPKI
Routing security: whether the domain's IP addresses are protected against route hijacking.
What is checked: For the IP addresses of the web server we determine the announcing ASN and prefix (from a local routing database) and use our self-hosted RPKI validator to check whether the route announcement is valid, invalid, or not covered by a ROA.
RPKI (Resource Public Key Infrastructure) lets network operators cryptographically authorise which ASN may announce an IP prefix. A valid entry protects against route hijacking and BGP misconfiguration.
Rating:
- Valid: a ROA covers the route and the announcing ASN matches
- No ROA: no RPKI authorisation published yet — recommended, but not an acute fault
- Invalid: a ROA exists but the announcement violates it (possible misconfiguration or hijack)
What is checked: For the IP addresses of the nameservers we determine the announcing ASN and prefix (from a local routing database) and use our self-hosted RPKI validator to check whether the route announcement is valid, invalid, or not covered by a ROA.
RPKI (Resource Public Key Infrastructure) lets network operators cryptographically authorise which ASN may announce an IP prefix. A valid entry protects against route hijacking and BGP misconfiguration.
Rating:
- Valid: a ROA covers the route and the announcing ASN matches
- No ROA: no RPKI authorisation published yet — recommended, but not an acute fault
- Invalid: a ROA exists but the announcement violates it (possible misconfiguration or hijack)
Mail configuration
The email configuration: authentication against spoofing, transport encryption and correct server setup.
Mail servers (MX)
RequiredWhat is checked: We look up the domain's MX records, which name the servers that accept its mail.
MX records are the entry point of the mail configuration. Without them the domain does not receive e-mail, and the mail-transport checks below do not apply.
What is checked: We look up the domain's SPF (Sender Policy Framework) TXT record and inspect its default mechanism.
SPF lists which servers may send mail for your domain. A strict policy (-all) tells receivers to reject mail from any other source, which reduces spoofing. A soft-fail (~all) only marks such mail; a missing or permissive policy offers little protection.
What is checked: We query common DKIM selectors under `_domainkey` for a published signing key. If none reveals a key, we additionally check whether the domain's `_domainkey` namespace exists at all — letting us detect DKIM even with a custom-named selector.
DKIM adds a cryptographic signature to outgoing mail so receivers can verify it was authorised by your domain and not altered in transit. Custom selectors cannot be discovered from DNS, so a negative result here does not always mean DKIM is absent.
What is checked: We look up the `_dmarc` TXT record and read its policy.
DMARC ties SPF and DKIM together and tells receivers what to do with mail that fails both — and where to send reports. An enforcing policy (quarantine or reject) actively blocks spoofed mail; p=none only observes.
MX over IPv6
RecommendedWhat is checked: We resolve each MX host and check whether it has an AAAA (IPv6) address.
Sending servers on IPv6-only networks can only deliver mail if your mail servers are reachable over IPv6.
What is checked: We connect to each MX on port 25, request STARTTLS, complete the TLS handshake and validate the certificate.
STARTTLS encrypts mail in transit between servers. Without it, messages travel in clear text and can be read or altered along the way. A valid, name-matching certificate is needed for the encryption to be trustworthy.
Mail TLS version
RequiredWhat is checked: We record the TLS version negotiated with each MX during STARTTLS.
As with the web server, only TLS 1.2 and 1.3 are considered secure for mail transport; older versions have known weaknesses.
What is checked: We look up the `_25._tcp` TLSA records for each MX and check them against the certificate presented during STARTTLS.
DANE binds your mail servers' certificates to DNSSEC, so a sending server can detect a forged or downgraded certificate that a public authority might otherwise accept. A published but non-matching TLSA record is worse than none, because strict senders will refuse delivery.
What is checked: We check whether a valid BIMI record (v=BIMI1) is published at `default._bimi.<domain>` and whether the required enforcing DMARC policy (`p=quarantine` or `p=reject`) is in place.
BIMI (Brand Indicators for Message Identification) lets supporting mail clients display your brand logo next to authenticated e-mail. It is not a security mechanism but a brand-display extra — yet it requires clean mail authentication (SPF, DKIM, strict DMARC policy), making it a visible bonus of a correct setup.
What is checked: We first read the `_mta-sts` DNS record and then retrieve the actual policy file via a real HTTPS request from `https://mta-sts.<domain>/.well-known/mta-sts.txt` and validate it — a pure DNS check would not show whether the policy is actually reachable and valid.
MTA-STS forces sending mail servers to reach your MX only over an encrypted, certificate-verified connection. This closes a gap in opportunistic STARTTLS, which can be defeated by a downgrade attack. The “enforce” mode provides full protection.
What is checked: We read the `_smtp._tls` TXT record and check its syntax — in particular whether a valid reporting address (`rua`) is present.
TLS-RPT lets other mail servers send you daily reports about failed TLS connections to your MX. This surfaces certificate or STARTTLS problems before mail is silently delivered unencrypted or stops being delivered — ideal together with MTA-STS.
Reverse DNS (PTR)
RecommendedWhat is checked: We resolve the MX hosts' IP addresses and check via PTR lookup whether each has a reverse-DNS entry.
Receiving mail servers often check whether a sending server's IP has a PTR record (ideally matching the HELO/MX name). Without it, your mail is more likely to be spam-filtered or rejected outright.
Open relay
RequiredWhat is checked: We open a real SMTP connection and attempt to address a message to a foreign recipient not hosted by the server. The connection is cleanly terminated right after the server's `RCPT TO` reply — no mail is ever actually sent.
An open relay accepts mail from arbitrary senders to arbitrary recipients and is promptly abused for spam and phishing. This severely damages the server IP's reputation and quickly leads to blacklist entries.
Cipher suite (mail)
RecommendedWhat is checked: For each MX we evaluate the cipher suite negotiated in the STARTTLS handshake and check whether it provides forward secrecy.
Forward secrecy (ECDHE/DHE) ensures that a later compromise of the server key cannot retroactively decrypt earlier, captured mail connections.
Mail server certificate
RequiredWhat is checked: For each MX we verify the trust chain against publicly trusted CAs and the match against the MX hostname.
A valid, matching certificate is the prerequisite for sending servers to actually verify the TLS connection (especially relevant with MTA-STS/DANE). Opportunistic STARTTLS without enforcement often accepts an invalid certificate, but that undermines the protection.
Mail server key
RequiredWhat is checked: For each MX we check the algorithm and length of the certificate's public key.
Keys that are too short (RSA < 2048 bit, ECDSA < 256 bit) are considered insecure and can be attacked with reasonable effort.
Mail server signature
RequiredWhat is checked: For each MX we check the certificate's signature algorithm.
Signatures using SHA-1 or MD5 are considered broken and theoretically allow forged certificates. Modern certificates use SHA-256 or stronger.
What is checked: For each MX we advertise a compression method in the STARTTLS ClientHello and check whether the server selects it.
Active TLS compression enables CRIME-style attacks and must be disabled. TLS 1.3 has no record compression.
What is checked: For each MX we check whether the server offers the secure renegotiation extension (RFC 5746).
Without secure renegotiation, a prefix-injection attack against the TLS connection is possible. TLS 1.3 removes renegotiation entirely.
What is checked: For each MX we check the Extended Master Secret extension (RFC 7627) in the TLS 1.2 handshake.
Extended Master Secret binds the master secret to the entire handshake and prevents triple-handshake attacks. It should be active for TLS 1.2; TLS 1.3 supersedes it with its key schedule.
Blacklist
Whether the mail server IPs appear on well-known spam and reputation blacklists (DNSBL).
Blacklists / DNSBL
What is checked: We query your mail servers' IP addresses against a curated selection of well-known DNS-based blacklists (DNSBL) — each list individually.
Lists checked (25)
RPKI (mail)
Routing security specifically for the domain's mail servers.
What is checked: For the IP addresses of the mail servers we determine the announcing ASN and prefix (from a local routing database) and use our self-hosted RPKI validator to check whether the route announcement is valid, invalid, or not covered by a ROA.
RPKI (Resource Public Key Infrastructure) lets network operators cryptographically authorise which ASN may announce an IP prefix. A valid entry protects against route hijacking and BGP misconfiguration.
Rating:
- Valid: a ROA covers the route and the announcing ASN matches
- No ROA: no RPKI authorisation published yet — recommended, but not an acute fault
- Invalid: a ROA exists but the announcement violates it (possible misconfiguration or hijack)