Free SPF Record Checker

Look up and validate the SPF TXT record on any domain: mechanisms, qualifiers, the all policy, and the 10 DNS lookup limit. It runs free in your browser over DNS-over-HTTPS, with no signup and nothing stored.

Catch problems before they cost you.

Create a free Unspam account to re-run these checks on a schedule and get alerted the moment your setup breaks. No credit card.

What is an SPF record?

SPF (Sender Policy Framework, defined in RFC 7208) is a published list of the servers allowed to send email for your domain. It lives as a single DNS TXT record on the sending domain that starts with v=spf1, followed by mechanisms that name authorized sources and a final all policy. When a mailbox provider receives a message, it checks the sending IP against the SPF record on the envelope (Return-Path) domain and uses the result as one signal for inbox placement. SPF is also one of the building blocks of DMARC, so a correct record is part of meeting the Gmail, Yahoo, and Microsoft sender requirements that increasingly reject unauthenticated bulk mail.

How to read your result

  • v=spf1

    Every valid SPF record begins with v=spf1. If the record does not start with this exact tag, or no TXT record is returned at all, the domain has no usable SPF policy.

  • Mechanisms (include, a, mx, ip4, ip6)

    These name the sources you authorize. include delegates to another domain's SPF (for example your email platform), a and mx authorize your own A and MX hosts, and ip4 / ip6 list specific addresses or CIDR ranges.

  • The all qualifier

    The mechanism at the end sets the default for everyone not listed: -all is a hard fail (recommended), ~all is a soft fail (common while testing), ?all is neutral, and +all authorizes anyone (do not use it).

  • DNS lookup count

    SPF allows at most 10 DNS lookups during evaluation. Mechanisms like include, a, and mx each cost lookups, and nested includes add their own, so the checker follows the whole include chain to count the real total and flags records that go over the limit. Expand the breakdown to see which mechanism each lookup came from.

  • One record only

    A domain must publish exactly one v=spf1 TXT record. If the checker finds two or more, the record is invalid and providers will return a PermError.

Common problems and fixes

Two or more SPF records on one domain

A domain may publish only one TXT record that starts with v=spf1. When a second one is added (often when a new email platform is set up), evaluation returns a PermError and SPF effectively fails. Merge every source into a single record with multiple include mechanisms.

More than 10 DNS lookups

Each include, a, mx, ptr, and exists mechanism triggers DNS lookups, and nested includes add their own. Once evaluation needs more than 10, the result is a PermError. Flatten or remove unused includes to stay under the limit.

Using +all

Ending the record with +all tells the world that every server is authorized to send as your domain, which disables SPF entirely and invites spoofing. Use -all for a hard fail, or ~all while you are still confirming your sources.

No SPF record or wrong version tag

If the lookup returns nothing, or a TXT record that does not begin with v=spf1, the domain has no enforceable policy and DMARC has nothing to align against. Publish one record that starts with v=spf1 and ends with a restrictive all.

Record split incorrectly or over 255 characters

A single TXT string is capped at 255 characters. Long records must be broken into multiple quoted strings inside one TXT record (which is valid), not into separate records. Splitting into separate records creates the multiple-record error instead.

Questions, answered.

How do I check my SPF record?
Enter the domain you send from (for example yourdomain.com, or the subdomain in your Return-Path) and the tool queries its DNS TXT records over DNS-over-HTTPS, then highlights the v=spf1 record, its mechanisms, the final all qualifier, and the DNS lookup count. Everything runs in your browser, so there is no signup and nothing is stored. For a full message-level test, run a free deliverability check.
What does ~all versus -all mean?
Both set the policy for senders not listed in your record. -all is a hard fail that asks receivers to treat unauthorized mail as forged, and it is the recommended end state. ~all is a soft fail that marks such mail as suspicious without outright rejecting it, which is useful while you confirm every legitimate source. Avoid +all, which authorizes everyone and disables SPF.
Why does my SPF record fail with a PermError?
The two most common causes are exceeding the 10 DNS lookup limit (too many include, a, or mx mechanisms) and publishing more than one v=spf1 record on the same domain. Both are permanent errors that make SPF fail until you flatten the lookups or merge the records into one. The checker counts lookups and detects duplicate records so you can see which applies.
Can I have more than one SPF record?
No. A domain must have exactly one TXT record starting with v=spf1. If you use several email providers, combine them with multiple include mechanisms in that single record rather than adding separate records. Multiple SPF records are invalid and produce a PermError. Note that a subdomain can carry its own SPF record, since SPF is not inherited from the root domain.
Do I still need SPF in 2026?
Yes. Google and Yahoo have required authentication for bulk senders (5,000 or more messages a day) since February 2024, and Microsoft added the same requirement in May 2025. Enforcement has tightened from temporary deferrals and junk-foldering toward outright rejection. SPF is also required for DMARC alignment, so a correct record is part of reaching the inbox. See our deliverability guide for the full picture.

A clean record is step one. See where your email actually lands.