Free diagnostic

SPF checker for published sender authorization.

Inspect the SPF TXT record, terminal policy, duplicate-record risk, and direct DNS lookup mechanisms without storing the submitted domain.

Check publication before evaluating a sender

A domain should publish one SPF record. This diagnostic exposes the record, its terminal all mechanism, and the mechanisms that directly trigger DNS lookups.

  • Multiple SPF records produce a permanent evaluation error.
  • The RFC limit applies to recursive evaluation, not only visible include terms.
  • SPF can pass while DMARC fails when the authenticated identity is not aligned.

Use monitoring for the full graph

This free check is deliberately bounded. Use DMARC monitoring and domain monitoring to track recursive includes, record drift, DKIM, DMARC, MX, transport security, and provider evidence together.

Diagnostic bridge

A free checker is the first step, not the operating system

Use the checker when the question is publication. Use monitoring when the question is whether real senders align, whether unknown sources remain, and whether enforcement can safely change.

DMARC monitoring

Label sources, inspect SPF/DKIM alignment over time, and plan enforcement.

Monitoring docs

Understand RUA ingestion, source attribution, alerts, and rollout evidence.

Authentication diagnosis

See why raw SPF/DKIM passes can still fail DMARC alignment.

Fundamentals

What is SPF?

SPF (Sender Policy Framework), defined by RFC 7208, lets a domain publish which servers may send email on its behalf. The policy lives in a single TXT record at the domain itself, starting with v=spf1. When a receiving server gets a connection from a sending IP, it fetches that record and walks the policy to decide whether the connecting IP is authorized. Because the answer is public DNS data, anyone can inspect it, which is exactly what this checker does. An SPF record is a list of terms, evaluated left to right. Mechanisms such as ip4, ip6, a, mx, include, and exists each describe a set of authorized senders; the first one that matches the connecting IP decides the result. Each mechanism can carry a qualifier: + for pass (the default when none is written), - for fail, ~ for softfail, and ? for neutral. Records normally end with an all mechanism that catches whatever the earlier terms did not match, so the qualifier on all is the policy's final word on unauthorized senders. One detail matters more than any other: SPF evaluates the envelope sender, the address in the SMTP MAIL FROM command that later appears as the Return-Path header, not the visible From address your recipients see. A message can pass SPF on its Return-Path domain while the visible From domain is something else entirely. DMARC closes that gap by requiring an authenticated domain to align with the From domain; see DMARC alignment explained.

Reading the output

How to read your SPF checker results

This tool runs live DNS queries against the domain you submit and reports exactly what is published. It is anonymous, rate limited, and does not retain the submitted domain. No SMTP connection is opened and no mailbox is probed. Every result has a status, an evidence block, a limitations list, and a link to RFC 7208.

  • Status: "pass" means the domain publishes exactly one SPF record, the only correct configuration. "fail" means no v=spf1 TXT record was found. "warning" means more than one is published, a permanent error under RFC 7208.
  • Records: the full text of every SPF TXT record found at the domain. More than one entry here is the duplicate-record error described below.
  • Record count: how many SPF records are published. This must be 1. Zero breaks authorization for the envelope sender; two or more breaks evaluation entirely.
  • Terminal policy: the qualifier on the trailing all mechanism, reported as -all, ~all, +all, or ?all. If none is shown, the record ends with a bare all (which defaults to +all and authorizes everyone) or has no all mechanism at all, and both deserve a closer look.
  • Direct lookup terms: a count of the terms in the visible record that trigger DNS work: include:, a, mx, ptr, exists:, and redirect=. This is a quick screen, not the recursive 10-lookup count, because includes can contain further includes; the tool restates this limitation on every run.
  • Limitations and references: each run repeats that the direct count is not a full recursive evaluation and that SPF authorization does not prove DMARC alignment. To see how a real message fared, paste its headers into the header analyzer.

Troubleshooting

Common SPF errors and how to fix them

Most SPF problems come from a small set of patterns, several visible directly in this tool's output. The SPF cheat sheet covers mechanisms and limits in compact form.

  • Exceeding the 10-DNS-lookup limit: RFC 7208 caps evaluation at 10 mechanisms and modifiers that cause DNS lookups, and nested includes count toward the total. Four includes can pass the limit once each vendor's own includes are expanded, producing a PermError that receivers treat as a failed check. Audit the full include tree, drop vendors you no longer use, and prefer ip4/ip6 terms for infrastructure you control.
  • Multiple SPF TXT records: two v=spf1 records produce a PermError, because receivers cannot know which to evaluate. This tool reports it as a warning status with a record count above 1. Merge every mechanism into a single record.
  • +all and ?all misuse: +all (including a bare all with no qualifier) authorizes every IP on the internet to send as your domain, and ?all declares you have no opinion. Neither stops a spoofed envelope sender. Use ~all while migrating, then -all once the record is stable.
  • Stale ESP entries: records accumulate include terms for providers you stopped using years ago. Each stale entry wastes lookups and silently authorizes that vendor's entire IP pool to send as your domain. Compare the record against the senders you actually use and delete the rest.
  • Include chains beyond two levels: when your include points at a vendor record that includes another vendor's record, you lose visibility into what you authorize and inherit every change they make. Keep the tree shallow and audit anything deeper than two levels.
  • redirect= versus include: an include adds another domain's authorized senders to your policy; redirect= hands the whole decision to that domain, evaluated only when nothing earlier matched. When consolidating, for example pointing an old domain at the new domain's policy, one redirect= is cleaner than copying a growing list of includes.
  • Flattening tradeoffs: replacing includes with their resolved ip4/ip6 ranges removes DNS lookups but freezes the answer in place. When a provider changes its sending IPs, the flattened record is wrong until someone edits it. Flatten only stable trees, and only if you monitor for IP changes; never flatten a provider that publishes a mutable include tree.

Providers

Per-provider SPF notes

SPF is one standard, but the large mailbox providers weigh it differently and publish their own sender requirements on top of it.

  • Gmail and Google Workspace: Google-hosted domains send through include:_spf.google.com. Google requires SPF for senders to its users and adds DKIM, DMARC, and further conditions for bulk senders, so SPF pass alone is not a delivery signal. Alignment is the metric to watch; DMARC monitoring tracks it over time.
  • Outlook and Microsoft 365: Exchange Online senders authorize include:spf.protection.outlook.com. Microsoft has historically applied a best-guess inference when a domain publishes no SPF record at all, but that is a reason to publish a correct record, not to rely on the guess. SNDS, Microsoft's sender data portal, reports IP-level reputation for sending IPs you own; it does not show per-domain SPF failures, so aggregate DMARC reports are the visibility path for authentication problems.
  • Yahoo: Yahoo's bulk-sender requirements parallel Google's: SPF, DKIM, and a DMARC record are expected. A PermError from duplicate records or lookup overflow can count against authentication just as a hard fail would.
  • Every provider, on forwarding: SPF evaluates the connecting IP, so a forwarded message arrives from the forwarder's IP, which your record does not authorize. That is expected behavior, not misconfiguration, and it is the main reason DKIM and DMARC exist alongside SPF.

Comparison

WillItInbox vs MXToolbox vs dmarcian

All three can tell you something about an SPF record, but they are built around different jobs. MXToolbox offers free ad-supported one-off DNS lookups, with paid monitoring from $129 per month. dmarcian is a DMARC-focused suite built around deployment and reporting rather than standalone SPF checks. WillItInbox runs free SPF checks with no login and no retention of the submitted domain, with optional DMARC monitoring (see the monitoring documentation) when you need the recursive picture and drift detection.

CapabilityWillItInboxMXToolboxdmarcian
SPF lookupFree, one-off, live DNSFree, one-off, ad-supportedDMARC-suite oriented
Duplicate-record and terminal-policy readoutYes, in free checkYes, as separate detailWithin DMARC tooling
Login requiredNo for free checksNo for free lookupsAccount-oriented platform
Submitted-domain retentionNone for public checksVaries by productVaries by product
Monitoring beyond one-off checksOptional DMARC/domain monitoringPaid plans from $129/moDMARC reporting platform

Live diagnostic

Check current evidence

This anonymous tool is rate limited and does not retain submitted input. It reports observable evidence without promising delivery, authentication alignment, or inbox placement.

No SMTP mailbox probing, account lookup, or tenant data is used.

Enter an input to see current evidence, limitations, official references, and the relevant next step.

FAQ

Can I have two SPF records on one domain?

No. A domain must publish exactly one TXT record starting with v=spf1. When two exist, receivers cannot determine which to evaluate and the result is a permanent error under RFC 7208. To authorize several senders, merge their mechanisms into a single record.

What happens after 10 DNS lookups?

RFC 7208 limits evaluation to 10 mechanisms and modifiers that trigger DNS lookups, counted recursively across every include, a, mx, ptr, exists, and redirect in the tree. Exceeding the limit produces a PermError, which receivers treat like a failed check and which can sink DMARC for that message. Shrink the tree: remove unused vendors, prefer ip4/ip6 terms for your own infrastructure, keep nesting shallow.

Does SPF pass mean DMARC passes?

No. DMARC requires SPF or DKIM to pass with a domain that aligns with the visible From domain. SPF passes on the Return-Path domain, so if that differs from the From domain, DMARC still fails on the SPF side. See the worked pass-but-not-aligned case at /examples/spf-dkim-dmarc-diagnosis.

Should I use -all or ~all?

Use ~all (softfail) while you are still discovering every legitimate sender, because unauthorized mail is marked but usually still accepted. Move to -all (fail) once the record is stable and DMARC reports show your real streams passing. Avoid +all and ?all entirely: +all authorizes everyone, and ?all tells receivers you have no policy.

Does SPF flattening break when ESPs change IPs?

Yes. Flattening replaces includes with the IP ranges they currently resolve to, so the record stops doing DNS lookups but also stops tracking the provider. When the provider moves sending IPs, the flattened record is wrong until someone edits it, and legitimate mail starts failing. Flatten only stable ranges and monitor for changes, or keep the include and spend the lookups.

Why does SPF fail on forwarded mail?

SPF evaluates the IP of the server that connects to the receiver. A forwarder resends your message from its own IP, which your record does not authorize, so SPF fails even though nothing is wrong with your setup. This is inherent to the protocol and the reason DKIM, which survives forwarding, carries most of the weight for DMARC on forwarded paths.

Does this SPF checker store or probe anything?

No. The tool runs live DNS queries and shows the published answer with its limitations and a link to RFC 7208. It requires no login, opens no SMTP connection, probes no mailbox, and does not retain the domain you submit. It reports DNS evidence only; it does not promise delivery, alignment, or inbox placement.