SPF validator: does this record's syntax and lookup count hold up?
AdminKit's SPF validator checks a pasted SPF TXT record's syntax, counts its DNS-lookup-causing terms against RFC 7208's limit of 10, and explains its qualifiers — entirely offline, with no DNS queries performed. It never follows include or redirect chains; for a live, fully-resolved check against your domain's actual DNS, use AdminKit's SPF check instead.
Part of the Email authentication cluster — more tools, guides and terms on email authentication.
What the result means
This is a static syntax and lookup-count check of the record text you paste, not proof that your domain's published record matches it or that any particular mail source would pass. For the fully-resolved, live check against your domain's actual DNS, see the SPF check.
Next step
Run the live SPF check against
your own domain to follow every include/redirect chain over real DNS, or check your
DMARC policy next.
Keep this result
Copy a link to this check so you can share it or run it again later. Want a heads-up if something changes? That's early access, not a live feature yet — tell us and we'll set it up by hand.
How it works and limits
Paste an SPF TXT record below and AdminKit checks its syntax, counts the DNS-lookup-causing terms it contains
against RFC 7208’s limit of 10, and explains its qualifiers — entirely
offline. It never queries DNS or follows an include/redirect chain, which is why it reports the lookup count
in this record only; a record that looks fine here can still exceed the limit once nested includes are resolved.
What it checks
- Version tag — whether the record starts with the required
v=spf1term, as RFC 7208 §4.5 requires. - Lookup-causing term count — how many
include,a,mx,ptr,existsandredirectterms appear in this record, against RFC 7208 §4.6.4’s hard cap of 10, counted the same way Microsoft documents in its own SPF setup guide. - Qualifiers and flags — the
+,-,~and?qualifier on each mechanism, and the trailingallterm’s effect (fail, softfail, neutral or pass). - Syntax findings — a severity-ranked list of specific issues found (for example a missing version tag, a malformed term, or too many lookup-causing terms), each citing the offending term where one exists.
Why “this record only” matters
Six mechanism types cost a DNS lookup under RFC 7208 §4.6.4: include, a, mx, ptr, exists and redirect —
and include/redirect can each point at another record with its own lookup-causing terms nested inside. Because
this tool never resolves DNS, it counts only the terms visible in the text you paste; it has no way to see what a
nested include adds. Microsoft’s own guidance
on this exact limit puts it plainly: “having fewer than 10 include: statements doesn’t guarantee fewer than 10
DNS lookups.” A record this check marks valid can still fail in production once every include is followed — that
fully-resolved count is what the live SPF check reports instead.
Limits
- No DNS lookups are performed, ever — this reads the record text only, so it cannot confirm the record you paste is
what a domain actually publishes, or that an
include/redirecttarget even exists. - The lookup-term count is for this record alone; see the SPF check for the fully-resolved count after every nested include and redirect is followed.
- It does not evaluate whether any specific sending IP address would pass or fail against the record.
See what an SPF check result actually means for how a fully-resolved result is interpreted, fixing SPF “too many DNS lookups” (PermError) for what to do if a record is over budget, and the glossary entry for SPF for the short definition. SPF is one of three records mail authentication relies on — see SPF, DKIM and DMARC explained for how it combines with the other two, and how AdminKit’s checkers compare to other free options in the free SPF/DMARC checker roundup.
Frequently asked questions
Does this tool query DNS?
No — paste the record's text and it is checked entirely offline: syntax, the DNS-lookup-causing term count against RFC 7208's limit, and qualifiers. It never resolves the record against a real domain or follows an include/redirect chain; for that, use AdminKit's live SPF check.
Why does the lookup count only cover "this record only"?
Because the check never performs a DNS lookup, it can only see the include, a, mx, ptr, exists and redirect terms written in the text you paste — it cannot see the terms inside a nested include it never resolved. A record that looks fine here can still exceed RFC 7208's 10-lookup cap once its includes are followed; the live SPF check reports that fully-resolved count.
What's the difference between this and AdminKit's SPF check?
This validator is a static syntax/structure check of text you paste, with no DNS involved. The SPF check instead looks up a domain's actual published SPF record and resolves every include and redirect it finds over real DNS, so it reports the true, fully-resolved lookup count and an overall pass/fail against that domain.
Does AdminKit store the record I paste?
No — the record is sent to AdminKit's API to be parsed and the result returned; it is not logged or retained for this check. See /legal/privacy/ for the site-wide policy.