Free tool

SPF record checker

Enter a domain to read its SPF record, follow every include, and count the DNS lookups receivers will make. Each problem comes with the change that fixes it.

How to read the result

Record is the TXT record exactly as published. DNS lookups is what it costs a receiver: up to 7 is comfortable, 8–10 leaves no room for the next service, above 10 SPF fails for all mail. Include chain shows where the lookups come from: every include can pull in more.

The ending matters: -all and ~all are fine, ?all protects almost nothing, +all lets anyone send as you. A record with no all at all gives unlisted servers a neutral result.

SPF alone does not stop spoofing of the From address people see; DMARC does. Check it next with the DMARC checker, or run the whole domain health check.

Questions

What is the SPF 10 DNS lookup limit?
Receivers stop evaluating SPF after 10 DNS lookups. include, a, mx, ptr, exists and redirect each cost one, and the includes inside an include count too. Past 10, SPF fails with a permanent error for every message, even from servers that are listed.
Can a domain have two SPF records?
No. With more than one v=spf1 record, SPF fails for all mail (permerror). When you add a new sending service, add its include to the existing record instead of creating a second one.
Should I use ~all or -all?
~all (soft fail) is the safe default while you are still finding every service that sends for you. -all (fail) is stricter. With DMARC at quarantine or reject the difference matters little, because DMARC decides what happens to failing mail. Never use +all.
Which SPF include do Resend and Amazon SES use?
Amazon SES uses include:amazonses.com, and Resend sends through SES, so its records use the same include, usually on a sending subdomain such as send.yourdomain.com. Postmark is include:spf.mtasv.net. Your provider's domain settings show the exact record.
SPF record checker: lookup, validate and count DNS lookups