DMARC, SPF & DKIM Checker

One email authentication checker for all three records: an SPF lookup with the 10 DNS lookup counter, a DMARC record lookup with every policy tag explained, and a DKIM checker that auto-tries eight common selectors.

Your browser queries Cloudflare DNS directly, so the domain you check and your IP address are visible to Cloudflare. DevDome does not proxy, see or store these lookups. Privacy policy.

SPF

TXT at the domain root Waiting
The SPF record check appears here: the raw v=spf1 record, every mechanism explained in plain English, and the DNS lookup count against the 10 lookup limit.

DMARC

TXT at _dmarc.domain Waiting
The DMARC record lookup appears here: policy, subdomain policy, report addresses and alignment settings, each explained.

DKIM

TXT at selector._domainkey.domain Waiting
The DKIM check appears here. Leave the selector field empty to auto-try eight common selectors: default, google, selector1, selector2, k1, s1, s2 and mail.

Record generator

Missing a record? Build a correct one here and paste it into your DNS.

SPF record builder

Who sends email for this domain?
v=spf1 ~all

DMARC record builder

Policy: what should receivers do with failing mail?
v=DMARC1; p=none

SPF vs DKIM vs DMARC: what each record proves

An email authentication checker is only useful if you know what each protocol actually guarantees. The three records answer three different questions, and deliverability depends on all of them.

ProtocolWhat it provesWhere the record livesWhat failure causes
SPF The sending server IP is on the list the domain owner published. TXT record on the root of the domain, starting with v=spf1 Mail from unlisted servers is softfailed or rejected. Forwarding often breaks it, which is why DKIM exists.
DKIM The message was signed by the domain and was not altered in transit. TXT record at selector._domainkey.domain Receivers lose the strongest authenticity signal and lean on reputation alone. Spam scoring rises.
DMARC The visible From domain aligns with SPF or DKIM, and states what receivers should do when it does not. TXT record at _dmarc.domain Without it, spoofed mail using your domain is delivered normally and you never hear about it.

This checker queries all three over DNS-over-HTTPS, so results come from a live resolver, not a cache. The SPF lookup resolves your include mechanisms recursively to count real DNS lookups against the 10 lookup limit, the DMARC record lookup falls back to the organizational domain the way real receivers do, and the DKIM checker tries eight common selectors in parallel when you do not know yours.

Spam folders and spoofing: why site owners should care

Most small sites discover email authentication the hard way: a customer says the contact form "does not work", but it works fine, the notification just went to spam. WordPress is the classic case. wp_mail() sends straight from the web server with no authentication, an IP that appears in no SPF record and a message no DKIM key ever signed. Receivers score it exactly like forged mail, because technically it is indistinguishable from forged mail.

The spoofing side is worse. A domain with no DMARC record can be impersonated freely: phishing mail with your exact From address sails through, burns your domain reputation, and you get zero visibility because there is no rua address to report to. Publishing SPF, DKIM and DMARC is not an email nicety, it is part of basic site health, right next to an expiring certificate or a lapsed domain. DevDome Site Health watches your site continuously, probing uptime every 15 minutes and auditing domain health daily, so the quiet failures get loud before customers find them.

DMARC, SPF and DKIM FAQ

What is the difference between SPF, DKIM and DMARC?

SPF is a list of servers allowed to send mail for a domain, published as a TXT record at the domain root. DKIM is a cryptographic signature on each message, verified against a public key published at selector._domainkey.domain. DMARC ties both to the visible From address: it requires SPF or DKIM to pass AND align with the From domain, tells receivers what to do on failure, and sends the domain owner reports. You need all three for reliable delivery: SPF and DKIM authenticate, DMARC enforces and reports.

How do I check my DMARC record?

Enter your domain in the checker above. It runs a DMARC record lookup on the TXT record at _dmarc.yourdomain.com and translates every tag into plain English: the p policy (none, quarantine or reject), the subdomain policy sp, the report addresses rua and ruf, the pct percentage and the adkim and aspf alignment modes. If no record exists, or two exist, it flags that too.

What does p=none mean in a DMARC record?

p=none is monitoring mode: receivers check alignment and send you aggregate reports, but failing mail is still delivered normally. It is the correct place to START a DMARC rollout, because reports show you every legitimate sender before you enforce anything. It is a weak place to STAY: with p=none, anyone can still spoof your domain and the mail goes through. The usual path is none, then quarantine, then reject.

What is the SPF 10 DNS lookup limit?

RFC 7208 caps the number of DNS-querying terms in an SPF evaluation at 10: include, a, mx, ptr, exists and redirect all count, and includes count everything inside them recursively. Go over 10 and SPF returns permerror, which many receivers score like having no SPF at all. It happens quietly as you add vendors over the years. This SPF record checker resolves your includes recursively and shows the running total against the limit.

Can a domain have two SPF records?

No. A domain must publish exactly one TXT record starting with v=spf1. Two or more is a permanent error under RFC 7208: receivers do not merge them, they treat SPF as broken. It usually happens when a second email vendor says "add our SPF record" and someone adds a new record instead of editing the existing one. The fix is to merge all include mechanisms into a single record, which this tool flags automatically.

How do I find my DKIM selector?

Open any message sent from the domain and view its full headers: the DKIM-Signature header contains s=yourselector. If you cannot find a sent message, the auto-try in this DKIM checker covers the common ones: google for Google Workspace, selector1 and selector2 for Microsoft 365, k1 for Mailchimp, and generic names like default, mail, s1 and s2. Transactional providers list their selector in their DNS setup docs.

Why do WordPress emails go to spam?

By default wp_mail() sends straight from the web server with no SMTP authentication. That server IP is almost never in your SPF record and nothing signs the mail with DKIM, so contact form messages and order confirmations fail email authentication and land in spam. The fix: send through an authenticated SMTP provider using an SMTP plugin, add that provider to your SPF record, publish its DKIM key, then add a DMARC record so you can see the results.