What SPF does, in one paragraph
SPF is a public list of the servers allowed to send mail using your domain. It lives in a TXT record on the domain itself, and it starts with v=spf1. When a message arrives, the receiving server reads that list and compares it with the server the message actually came from.
That is the whole mechanism. It says nothing about the message, only about the machine that delivered it, which is why SPF on its own has never been enough and why DKIM and DMARC exist alongside it.
The ten-lookup limit, and why it breaks records that look fine
RFC 7208 caps SPF evaluation at ten DNS lookups. The terms that cost a lookup are include:, redirect=, a, mx, ptr and exists:. Anything expressed as a raw ip4: or ip6: range is free.
The trap is that the count is over the whole tree, not your record. If you include your email provider, and they include their CDN, and the CDN includes a subprocessor, every one of those costs against your ten. You can publish a three-term record on Monday and be over the limit on Friday without touching anything, because somebody upstream added a line.
When you go over, the result is not a partial pass. Evaluation returns a permerror, and most receivers score a permerror the same as no SPF record. This is the failure this checker exists to catch, and it is why the count above follows the includes instead of stopping at your record.
Reading the end of the record
The last mechanism is usually all, and its qualifier decides what happens to servers you did not list. -all says reject them. ~all says treat them as suspicious but deliver. ?all says make no judgement, which is close to publishing nothing.
+all says every server on the internet may send as you. It appears in the wild more often than it should, normally left behind by a test. A domain with `+all` is worse off than a domain with no SPF at all, because it actively authorises the people spoofing it.
~all is the sensible default while you are still discovering which systems send on your behalf. Move to -all once your DMARC reports have been quiet for a few weeks.
If you are about to start cold outreach
Sending volume is what turns a marginal SPF record into a deliverability problem. A domain that has only ever sent replies can survive a soft configuration for years. Point a hundred cold emails a day at it and the same record starts costing you the inbox.
Fix SPF, DKIM and DMARC before the first campaign rather than after, because reputation is slow to build and fast to lose. Check the other two with the DKIM checker and the DMARC checker.