Check an SPF record

Enter a domain. The SPF checker reads the TXT record, resolves every include, counts DNS lookups against the limit of 10 and rates the closing qualifier (-all, ~all, ?all).

What is an SPF record?

SPF (Sender Policy Framework) is a TXT record in your domain's DNS that declares which servers may send email on behalf of that domain. For every incoming message, receiving mail servers check whether the sending IP address is listed in the SPF record of the sender domain. If it is not, the message is treated as suspicious and, depending on the policy, ends up in spam or is rejected.

Together with DKIM and DMARC, SPF is one of the three pillars of email authentication. Since 2024 Google and Yahoo require bulk senders to have SPF and DKIM in place and a DMARC record with at least p=none. Without SPF, newsletters, invoices and system emails increasingly land in spam.

How to read the result

The checker shows the record it found, splits it into mechanisms and evaluates three things: is the syntax valid, how many DNS lookups does the record cause once all includes are resolved, and how strict is the closing qualifier.

  • v=spf1: version tag, must come first.
  • include:domain: pulls in a provider's SPF record, e.g. _spf.google.com for Google Workspace or spf.protection.outlook.com for Microsoft 365. Each include costs one DNS lookup plus whatever lookups the included record causes itself.
  • a and mx: allow the domain's A or MX servers. Each costs one lookup.
  • ip4 and ip6: allow fixed addresses or networks. They cost no lookup and are therefore the cheapest option.
  • -all: hard fail, every other sender is unauthorised. Recommended.
  • ~all: soft fail, other senders are suspicious but usually accepted. A good intermediate step.
  • ?all or +all: neutral or allow everything. Offers no protection.

The 10 lookup limit

RFC 7208 limits the number of DNS queries a receiving server may perform while evaluating an SPF record to ten. Mechanisms such as include, a, mx, ptr, exists and the redirect modifier count; ip4 and ip6 do not. If the limit is exceeded the receiver answers with permerror and treats the record as if it did not exist. That is exactly when mail lands in spam even though an SPF record is present.

The most common cause is sprawl: Google Workspace (three lookups), Microsoft 365 (two), a newsletter tool, a CRM, a ticket system and the old hosting provider nobody removed. The checker resolves every include recursively and shows which service consumes how many lookups so you can clean up precisely.

Common mistakes

These are the problems we see most often when checking client domains:

  • Multiple SPF records: two TXT records starting with v=spf1 are a permanent error. Everything belongs in a single record.
  • More than ten lookups: see above. Remove unused services or use ip4/ip6 instead of include.
  • No all at the end: without -all or ~all the record has no effect.
  • +all: allows every server in the world to send on behalf of the domain.
  • The ptr mechanism: deprecated, slow and ignored by many receivers.
  • Typos in includes: an include pointing to a domain without an SPF record is an error.

Examples for common providers

Google Workspace:

v=spf1 include:_spf.google.com -all

Microsoft 365

Microsoft 365 with additional newsletter sending via Brevo:

v=spf1 include:spf.protection.outlook.com include:spf.brevo.com -all

Monitor SPF continuously

An SPF record changes whenever someone adds a service, switches hosting or a provider restructures its networks. A one-off check says nothing about next month. DomainWarn checks the SPF record of all client domains regularly, detects changes and alerts you when the lookup limit is exceeded or the closing qualifier is weakened.

Frequently asked questions

How many lookups may an SPF record have?
At most ten. include, a, mx, ptr, exists and redirect count, each including the lookups that included records cause themselves. ip4 and ip6 do not count.
What is the difference between -all and ~all?
-all (hard fail) tells receivers to reject unlisted senders. ~all (soft fail) only marks them as suspicious. For domains with a finished configuration -all is the recommendation; ~all suits the rollout phase.
Is SPF enough on its own?
No. SPF only protects the envelope sender and breaks on forwarding. A domain is only protected against spoofing once DKIM and a DMARC policy are in place as well.
Why does my mail land in spam despite SPF?
Often because of permerror caused by more than ten lookups or multiple records, because DKIM or DMARC is missing, or because the sending IP is not in the record. The checker shows the first two causes directly.

Add the SPF record at IONOS, STRATO, Hetzner, Cloudflare and others

The path to the DNS editor differs by host. For the common providers this shows where you create the SPF record and what to watch out for.

SPF record at IONOS

  1. Sign in to the IONOS account and open "Domains & SSL".
  2. Click the gear icon next to the domain and choose "DNS".
  3. Choose "Add record", pick the type (TXT, MX, CNAME) and host name, paste the value, save.
  4. Changes usually apply within minutes; the default TTL is one hour.

Use "@" as the host name for the apex domain; IONOS shows it as the domain name.

SPF record at STRATO

  1. In the STRATO customer login open "Domains" and then "Domain administration".
  2. Choose "manage" next to the domain and switch to the "DNS settings" tab.
  3. STRATO separates by type: "TXT and CNAME records" for SPF, DKIM, DMARC and verifications, "MX records" for mail delivery.
  4. Enter the value and save; propagation can take up to an hour.

For subdomain records such as _dmarc or selector._domainkey put the prefix into the "Subdomain" field, not into the value.

SPF record at Hetzner

  1. Open the Hetzner DNS Console (dns.hetzner.com) and select the zone of the domain.
  2. Choose "Add record", enter type, name and value, lower the TTL if needed.
  3. Save; the Hetzner name servers serve the record immediately.

SPF record at ALL-INKL

  1. Sign in to KAS (the customer administration system) and open "Domain".
  2. Click "edit" next to the domain and then "DNS settings".
  3. "Create new DNS record", enter name (empty for the apex), type and value, save.
  4. ALL-INKL applies changes within minutes.

SPF record at Cloudflare

  1. In the Cloudflare dashboard open the domain and choose "DNS" → "Records".
  2. Choose "Add record" and enter type, name and content.
  3. For MX, TXT and mail-related CNAME records keep the proxy status on "DNS only"; the orange cloud belongs to web records only.
  4. Save; Cloudflare propagates instantly.

SPF record at netcup

  1. In the netcup Customer Control Panel (CCP) open "Domains" and select the domain.
  2. Switch to the "DNS" tab and choose "Add new record".
  3. Enter host (@ for the apex), type and destination, then "Save DNS records".

SPF record at united-domains

  1. In the united-domains portfolio click the domain and open "DNS settings".
  2. Under "Custom DNS records" choose the type, enter subdomain and value.
  3. Save; propagation takes a few minutes.

SPF record at checkdomain

  1. In the checkdomain customer area open "Domains" and select the domain.
  2. Open "DNS settings" and create a new record with type, name and value.
  3. Save.

SPF record at domainfactory

  1. In the domainfactory customer menu open "Domains" and select the domain.
  2. Open "Name server settings" and create a new record.
  3. Enter type, host name and value, save.

SPF record at Alfahosting

  1. In the Alfahosting customer center open the domain and choose "DNS management".
  2. Create a new record with type, name and value, save.

SPF record at webgo

  1. In the webgo customer portal open "Domains" and choose "DNS management" next to the domain.
  2. Create a record with type, name and value, save.

SPF record at 1blu

  1. In the 1blu customer service area open "Domains" and choose "DNS settings" next to the domain.
  2. Create a record with type, name and value, save.

SPF record at Host Europe

  1. In KIS (the customer information system) open "Domain services" and then "Domain administration".
  2. Choose "Name server / DNS" next to the domain and create the record with type, name and value.
  3. Save.

SPF record at Mittwald

  1. In mStudio open the project and select the domain under "Domains".
  2. Open "DNS", edit or create the record, save.

SPF record at GoDaddy

  1. At GoDaddy open "My Products" and choose "DNS" next to the domain.
  2. Choose "Add", enter type, name and value, save.

SPF record at Hostinger

  1. In hPanel open "Domains" and choose "DNS / Nameservers" next to the domain.
  2. In the DNS zone editor create the record with type, name and value.

SPF record at Amazon Route 53

  1. In the AWS console open Route 53, "Hosted zones" and select the zone.
  2. Choose "Create record", enter name, type and value, set the TTL, "Create records".

SPF record at Google Cloud DNS

  1. In the Google Cloud console open "Cloud DNS" and select the zone.
  2. "Add record set", enter name, type and value, create.

SPF record at Azure DNS

  1. In the Azure portal open "DNS zones" and select the zone.
  2. Add a "Record set", enter name, type and value, OK.

SPF record at OVHcloud

  1. In the OVHcloud control panel open "Web Cloud" → "Domain names" and the domain.
  2. Tab "DNS zone", "Add an entry", choose the type, enter subdomain and value, confirm.

SPF record at DigitalOcean

  1. In the DigitalOcean dashboard open "Networking" → "Domains" and select the domain.
  2. Choose the type, enter host name and value, "Create Record".

SPF record at Squarespace

  1. At Squarespace open "Domains", select the domain and open "DNS settings".
  2. Under "Custom records" create the record with type, host and data.

SPF record at Wix

  1. In the Wix account open "Domains" and choose "Manage DNS records" next to the domain.
  2. Under the matching type choose "Add record", enter host name and value, save.

SPF record at Shopify

  1. In the Shopify admin open "Settings" → "Domains" and select the domain.
  2. Open "DNS settings", "Add custom record", enter type, name and value, confirm.

SPF record at INWX

  1. At INWX open "Nameserver" and select the domain.
  2. "Add record", enter type, name and value, save.

SPF record at dogado

  1. In the dogado customer area open the domain and choose "DNS".
  2. Create the record with type, name and value, save.

SPF record at Variomedia

  1. In the Variomedia customer menu open the domain and choose "DNS settings".
  2. Create the record with type, name and value, save.

SPF record at Namecheap

  1. At Namecheap open "Domain List", "Manage" and the "Advanced DNS" tab.
  2. "Add New Record", enter type, host and value, save.

SPF record at Gandi

  1. At Gandi open the domain and choose "DNS records".
  2. "Add a record", enter type, name and value, create.

SPF record at Vercel

  1. In the Vercel dashboard open "Domains" and select the domain.
  2. Under "DNS Records" enter type, name and value, "Add".

SPF record by mail provider

SPF record for Microsoft 365

  • Microsoft 365 sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:spf.protection.outlook.com -all

SPF record for Google Workspace

  • Google Workspace sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:_spf.google.com -all

SPF record for IONOS

  • IONOS sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:_spf-eu.ionos.com -all

SPF record for STRATO

  • STRATO sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:_spf.strato.com -all

SPF record for mailbox.org

  • mailbox.org sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:mailbox.org -all

SPF record for Proton Mail

  • Proton Mail sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:_spf.protonmail.ch -all

SPF record for Zoho Mail

  • Zoho Mail sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:zohomail.eu -all

SPF record for Hornetsecurity

  • Hornetsecurity sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:spf.hornetsecurity.com -all

SPF record for Mimecast

  • Mimecast sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:eu._netblocks.mimecast.com -all

SPF record for Cloudflare Email Routing

  • Cloudflare Email Routing sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:_spf.mx.cloudflare.net -all

SPF record for Fastmail

  • Fastmail sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:spf.messagingengine.com -all

SPF record for iCloud Mail

  • iCloud Mail sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:icloud.com -all

SPF record for OVHcloud

  • OVHcloud sends through its own servers, so the SPF record of the domain must include the provider: v=spf1 include:mx.ovh.com -all

Guides for this tool

More tools

Free tool

DMARC Checker

Free DMARC record check and lookup: policy (none, quarantine, reject), pct, reporting addresses and syntax errors. With recommendations for moving to p=reject.

Open tool →
Free tool

DNS Checker

Free DNS lookup straight from the authoritative name server: A, AAAA, CNAME, MX, TXT, NS and CAA records at a glance. No sign-up, every record explained.

Open tool →
Free tool

MX Checker

Free MX lookup: which mail servers receive for a domain, do they resolve, is the priority right? Detects missing and unreachable mail servers.

Open tool →
Free tool

SSL Checker

Free SSL certificate check: expiry date, issuer, chain, host name, alternative names and TLS version. Detects expired, self-signed and mismatched certificates.

Open tool →
Free tool

HTTP Header Checker

Free HTTP header check: HSTS, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy with recommendations.

Open tool →
Free tool

Redirect Checker

Free 301 redirect check: every hop with status code and response time, from http to https, from www to non-www. Detects redirect chains, loops and 302s.

Open tool →
Free tool

DKIM Checker

Free DKIM record check and lookup: selector, key type, key length, syntax and revoked keys. Leave the selector empty to try common selectors automatically.

Open tool →
Free tool

DNSSEC Checker

Free DNSSEC test: DS record, resolver validation and broken signature chains. Shows whether validating resolvers like Google or Cloudflare reach your domain.

Open tool →
Free tool

MTA-STS Checker

Free MTA-STS check: DNS record, policy file, mode, max_age and whether your MX servers are covered. Shows whether inbound mail enforces TLS.

Open tool →
Free tool

TLS-RPT Checker

Free TLS-RPT record check: syntax, reporting addresses (rua) and common errors such as a missing record. Shows whether you get reports on TLS failures.

Open tool →
Free tool

BIMI Checker

Free BIMI record check: syntax, logo URL, SVG Tiny PS, VMC certificate and the DMARC prerequisite. Shows why your logo does not appear in Gmail.

Open tool →
Free tool

Blacklist Check

Free IP blacklist and domain blacklist check: mail server IPs, website IP and domain against Spamhaus, Spamcop, Barracuda, PSBL and SURBL. With delisting links.

Open tool →
Free tool

Domain Checker

Free domain check: expiry date, registrar, EPP status, transfer lock and name servers straight from the registry via RDAP. Warns about expiry and holds.

Open tool →