Tools

SPF, DKIM & DMARC Checker

Free SPF, DKIM and DMARC checker: audits a domain's email authentication against the RFCs, counts the SPF 10 DNS lookup limit as a tree, scans 44 common DKIM selectors, decodes an email header and hands you a corrected record to copy. No sign-up.

Email authentication auditSPF · DKIM · DMARC · MX · MTA-STS · BIMI
The domain is read from DNS only; a pasted header never leaves your browser.

The SPF record is resolved as a tree under the 10 DNS lookup rule of RFC 7208; 44 common DKIM selectors are scanned; DMARC, MX, MTA-STS, TLS-RPT and BIMI are read. If you know your selector, enter it: it is the s= value in the DKIM-Signature header.

Email security report Waiting
?0/100
Scorewaiting for a check
Errors0need fixing
Warnings0could be better
Passed0all fine
Mail provider-
SPF lookups-
DMARC policy-
DKIM-
Priority to-do list

After the check, the fixes that raise the grade the most are listed here.

  • A90-100
  • B80-89
  • C70-79
  • D60-69
  • F0-59
Type a domain and press Check. The report is split into SPF, DKIM, DMARC, MX and TLS, sender rules and record generator tabs.
Sample domains
Talha Aslan Written byTalha AslanDigital marketing expert, Google Partner Last updated

How to use the SPF, DKIM & DMARC Checker

  1. 1Enter the domain

    Type a domain such as example.com or an address such as name@example.com. The tool keeps the part after the @ sign and converts internationalized domain names to punycode.

  2. 2Add a selector if you know it

    Put your DKIM selector in the second field. Leave it empty and the tool scans 44 common selectors. They include those of Google, Microsoft 365, Yandex, SendGrid, Mailchimp and cPanel.

  3. 3Read the grade and the to-do list

    The summary shows a grade from A to F and a score out of 100. It also lists the five fixes that raise the grade the most; click one to jump to its row.

  4. 4Drill down in the tabs

    Each tab covers one topic. SPF shows the numbered lookup tree, DKIM the key lengths and DMARC every tag, while MX and TLS covers MTA-STS, TLS-RPT and BIMI.

  5. 5Copy the corrected record

    The record generator builds an SPF record for your providers and a staged DMARC record. You can test the SPF record before publishing it and follow the cPanel or Plesk steps on the same screen.

  6. 6Confirm with a real message

    Send yourself an email and paste its header into the Email header analyzer. Alignment, the DKIM signature and one-click unsubscribe show up there.

How the tool counts the 10 lookup limit and the score

The counting rules come from RFC 7208, section 4.6.4. Scoring works like the other audit tools on this site.

Terms that countinclude, a, mx, ptr, exists and redirect, including those inside nested include records; at most 10 in total
Terms that do not countip4, ip6, all and exp; they trigger no DNS query during evaluation
Void lookupsqueries that return an empty answer or a nonexistent name; at most 2, more is permerror
mx sub-limiteach mx term may look at no more than 10 MX hosts; more is permerror for that term
Scorea passed check earns its full weight, a warning half and an error nothing; points earned divided by total weight, times 100
GradeA 90-100, B 80-89, C 70-79, D 60-69, F 0-59; a critical SPF or DMARC error caps the score at 69, errors in both cap it at 49

The sending IP is unknown, so the tool counts the worst case. It follows every path in the record but skips terms after the all mechanism. If the record contains all, redirect does not count either: RFC 7208 5.1 switches it off in that case.

Sample SPF records and what the tool reports

I measured these records with the test button in the record generator; the last column is the verdict the tool shows on screen.

SPF record (sample)DNS lookupsVoid lookupsTool result
v=spf1 include:_spf.google.com ~all1 / 100 / 2Pass; ~all softfail
v=spf1 include:spf.protection.outlook.com include:_spf.google.com -all2 / 100 / 2Pass; -all fail
v=spf1 include:spf.protection.outlook.com include:sendgrid.net include:_spf.google.com -all4 / 100 / 2Pass; sendgrid.net opens one more nested include
v=spf1 include:_spf.mail.hostinger.com ~all3 / 100 / 2Pass; official Hostinger Email record
v=spf1 redirect=_spf.google.com -all0 / 100 / 2redirect never runs because the record has all
v=spf1 include=_spf.google.com ~all0 / 100 / 2Warning; include= is an unknown modifier, Google servers stay unauthorized
v=spf1 ip4:203.0.113.10 +all0 / 100 / 2Error; +all authorizes every server
v=spf1 include:yok-boyle-bir-alan-12345.com ~all1 / 101 / 2Error; the include target has no SPF, result permerror

I measured the lookup counts on September 26, 2026 against the providers' records of that day. When a provider changes its own include record, your count changes too, so repeat the check every few months.

Where email authentication records live in DNS

Name, type and a sample value for the seven records the tool reads; the values are illustrative.

RecordDNS nameTypeSample value
SPFexample.com (@)TXTv=spf1 include:_spf.google.com ~all
DKIMselector._domainkey.example.comTXT or CNAMEv=DKIM1; k=rsa; p=MIIBIjANBgkq...
DMARC_dmarc.example.comTXTv=DMARC1; p=none; rua=mailto:dmarc@example.com
MTA-STS_mta-sts.example.com and mta-sts.example.com/.well-known/mta-sts.txtTXT and HTTPS filev=STSv1; id=20260926
TLS-RPT_smtp._tls.example.comTXTv=TLSRPTv1; rua=mailto:tls@example.com
BIMIdefault._bimi.example.comTXTv=BIMI1; l=https://example.com/logo.svg
Null MXexample.comMX0 .

Sources: RFC 7208 (SPF), RFC 6376 (DKIM), RFC 9989 (DMARC), RFC 8461 (MTA-STS), RFC 8460 (TLS-RPT), RFC 7505 (null MX). BIMI is still an IETF draft.

What does an SPF DKIM DMARC checker test, and why run one?

An SPF DKIM DMARC checker reads your domain's email authentication records from the outside. It shows you the verdict receiving servers will reach. Before Gmail, Outlook or Yahoo deliver a message, they ask three questions and look for the answers in your DNS. If one record is missing or broken, your message lands in spam or never arrives.

  • SPF: may this server send for this domain?
  • DKIM: did the message arrive unchanged, and who signed it?
  • DMARC: does the From domain match one of those checks, and what happens if not?

I run this check in the first week of every business website I build. Contact form notifications and quote emails usually get lost because of a missing DNS record, not because of the design. That is why my web design projects keep DNS, SSL and email authentication on the same handover checklist. Starting business email from scratch? My guide to email on your own domain covers choosing a provider.

How does the SPF limit of 10 DNS lookups work?

An SPF record is more than its own line. Every include term calls the SPF record of another domain, and that record can contain further includes. RFC 7208 limits the combined number of include, a, mx, ptr, exists and redirect terms in that chain to 10. A record over the limit returns permerror, and SPF then passes for no message at all.

The problem tends to grow quietly. For example, your record shows three includes, but one of them opens five more lookups on its own. So the tool draws the tree with numbers: each line shows which lookup it is, and anything after the tenth turns red. It also counts void lookups, the ones that come back empty, separately; their limit is 2.

When a domain gets close to the limit, I work in this order:

  1. Remove the includes of services you no longer use.
  2. Keep marketing platforms out of the root record; most of them use their own Return-Path subdomain and align through DKIM.
  3. Move heavy sending to a subdomain such as news.example.com, which gets its own SPF record.

Some tools suggest flattening includes into IP addresses. However, a flattened record goes stale without warning once a provider changes its IP ranges. So I only use it where someone monitors it.

Why do the DKIM selector and key length matter?

A DKIM key does not sit at the root of your domain; it lives at selector._domainkey.example.com. The provider picks the selector name. Google Workspace uses google by default, Microsoft 365 uses selector1 and selector2, and Yandex 360 uses mail. cPanel and Plesk use default. Services such as Amazon SES and Postmark generate random or date-based selectors that no tool can guess. In that case, take the s= value from the header of a message you sent and enter it in the selector field.

Once a key is found, length is the value to watch. RFC 8301 requires signers to use at least 1024 bits and recommends 2048. Google also refuses keys under 1024 bits for mail to personal Gmail accounts. The tool decodes the base64 key from DNS and prints the real bit length. If you see 1024 bits, I recommend a new 2048 bit key from your provider's panel.

  • Empty p=: the key is revoked; fine for an old selector.
  • t=y: the domain is testing DKIM; remove it once setup is done.
  • CNAME without a key: normal for the standby selector on Microsoft 365, but if it is your only selector, DKIM does not work.

How do you move DMARC from none to reject?

The DMARC record lives at _dmarc.example.com. It tells receivers what to do with mail that fails authentication (p) and where to send reports (rua). p=none only monitors, so spoofed mail is still delivered. In contrast, p=quarantine sends that mail to spam and p=reject refuses it outright.

I never make the switch in a single step. First I start with p=none and rua and read the aggregate reports for two to four weeks. Meanwhile I align every legitimate sender through SPF or DKIM. When only spoofed sources remain in the reports, I move to p=quarantine, and after a few quiet weeks to p=reject.

RFC 9989, published in May 2026, replaced the old RFC 7489 and changed a few things:

  • The pct tag is gone; a t=y testing flag replaces it. Google still reads pct during a staged rollout, though.
  • The np tag sets a separate policy for subdomains that do not exist.
  • A DNS tree walk replaces the public suffix list.
  • For general-purpose domains whose users post to mailing lists, the RFC advises quarantine instead of reject.

The tool reads your record under both standards and flags obsolete tags separately.

Does your SPF DKIM DMARC checker result meet the bulk sender rules?

Google and Yahoo have required the same basics from bulk senders since February 2024. Microsoft followed for Outlook.com on May 5, 2025. Google defines a bulk sender as close to 5,000 messages to personal Gmail accounts within 24 hours. Microsoft says more than 5,000 a day, and Yahoo gives no number. Moreover, Microsoft rejects non-compliant mail with the code 550 5.7.515. Since November 2025, Gmail has also rejected such traffic temporarily or permanently.

DNS reveals some of these requirements and hides others. The Sender rules tab draws that line clearly:

  • Visible in DNS: a valid SPF record, a DKIM key, a key of at least 1024 bits, a DMARC record of at least p=none.
  • Needs a real message: From alignment, one-click unsubscribe, TLS when sending.
  • Needs your sending platform: a complaint rate below 0.3 percent, reverse DNS for the sending IP, unsubscribes honored within two days.

In short, even with every DNS row green, run your newsletter's header through the header analyzer once. Google Postmaster Tools is a free and reliable place to watch your complaint rate.

What does the email header analyzer show you?

Correct DNS records are one thing; only the header shows how a real message was actually authenticated. Send yourself a message, open its header and paste it in. The tool parses the text entirely in your browser and sends nothing to a server. The header never becomes part of a share link either.

  • Authentication-Results: the spf, dkim and dmarc verdict of the receiving server.
  • Alignment table: relaxed or strict match between the From domain and the envelope (Return-Path) and signing (d=) domains.
  • DKIM signatures: selector, algorithm, signed headers and a one-click check of that selector.
  • One-click unsubscribe: the List-Unsubscribe and List-Unsubscribe-Post headers; RFC 8058 requires the DKIM signature to cover both.
  • Delivery hops: delays between servers from the Received lines, and whether the last hop used TLS.

When a platform's message passes DKIM but fails alignment, the cause is almost always the same: the platform signs with its own domain. Turn on custom domain authentication in the platform's panel, and the signature moves to your domain, so DMARC passes.

Where do you add the records in cPanel and Plesk?

First find out where your DNS is managed: you add records at whichever company your domain's nameservers point to. The DNS lookup tool shows the nameservers, and a Whois lookup shows the registrar. If the nameservers are at a service like Cloudflare, the zone inside cPanel changes nothing.

  • cPanel: the Email Deliverability screen installs the suggested SPF and DMARC records in one click. It also generates a DKIM key. To add records by hand, open Zone Editor, then Manage and Add Record.
  • Plesk: under Websites & Domains, pick your domain and add a TXT record in DNS Settings. For DKIM, tick the DKIM box in Mail Settings; Plesk then publishes default._domainkey itself.

Keep two rules in mind. If the domain already has a v=spf1 record, edit it rather than adding a second one, because two SPF records cause permerror. Also, if you use MTA-STS, check the mta-sts subdomain with the SSL checker. Senders only read the policy file over a valid certificate. After any change, wait until the old record's TTL expires and run the tool again.

Common email authentication mistakes

  • MistakeAdding a second v=spf1 record for a new serviceDo this insteadMerge everything into one record and add the service with include. With two SPF records receivers return permerror and SPF never passes.
  • MistakeWriting include=_spf.google.com instead of include:_spf.google.comDo this insteadUse a colon. Receivers treat a term written with an equals sign as an unknown modifier and skip it silently, so your servers stay unauthorized.
  • MistakeLaunching DMARC at p=reject on day one without ruaDo this insteadStart with p=none and rua and read the reports. Move to quarantine and reject only after all legitimate services are aligned.
  • MistakeAdding Mailchimp, SendGrid or Amazon SES to the root SPF recordDo this insteadThese services handle SPF on their own Return-Path subdomain. Do not spend root lookups on them; set up DKIM with your own domain in the service panel instead.
  • MistakeLeaving old includes and DKIM keys behind after switching providersDo this insteadOnce the move is done, delete the old include, remove the old selector's key, then run the tool again and check all three tabs.
  • MistakeSettling for a 1024 bit DKIM keyDo this insteadRFC 8301 recommends 2048 bits. Generate a new key in the provider panel, publish the new selector and remove the old one a few days later.

Frequently Asked Questions

Domain, website and email are one piece of infrastructure.

When I build a business website I set up DNS, SSL, form notifications and email authentication correctly from day one, so your enquiries never get lost in spam.

Explore Web Design
WhatsApp Call Now