Skip to content

Free tool · DMARC record check

DMARC Record Checker

Look up a domain’s DMARC record, see which policy actually applies, and check report addresses — following the current DMARC standard, RFC 9989.

What a DMARC record is

DMARC tells receiving servers what to do with mail that claims to come from your domain but fails authentication, and asks them to send you reports. A message passes DMARC when SPF or DKIM passes for a domain that matches the From address the reader sees — that matching is called alignment.

The record is a TXT record at _dmarc on your domain:

_dmarc.example.com   TXT   "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"

DMARC is defined by RFC 9989, published in May 2026. It replaces RFC 7489, the version most older guides describe.

DMARC tags

TagMeaningDefault
v=DMARC1Must be the first tag, spelled exactly like this, or the record is ignored.—
p=Policy for the domain: none, quarantine or reject.none if missing
sp=Policy for subdomains.Same as p
np=Policy for subdomains that don’t exist.Same as sp
t=yTest mode: receivers apply one level less than your policy.n
rua=Where to send daily aggregate reports, as mailto: addresses.No reports
ruf=Where to send failure reports. Not every receiver sends them.None
adkim=, aspf=Alignment: r (relaxed, subdomains count) or s (strict, exact match).r

pct is gone. RFC 9989 removed the percentage tag and added t=y for testing instead. Receivers that still follow the older standard may read pct, so the checker reports it, but new records shouldn’t use it.

From p=none to p=reject

  1. Start with p=none and a report address. Nothing changes for your mail, and the reports show every service sending as your domain and whether it passes.
  2. Fix what fails. Add missing services to SPF and turn on DKIM for each of them.
  3. Move to p=quarantine when reports show your own mail passing. Failing mail goes to spam.
  4. Finish with p=reject. Forged mail is refused outright.

p=none meets Gmail’s and Yahoo’s requirement for bulk senders, but it doesn’t protect your domain from spoofing; only quarantine and reject do.

Subdomains and report addresses

A subdomain without its own DMARC record falls under its parent’s: receivers walk up the DNS tree to the organisational domain and apply its sp= policy, or p= if there is none. This checker does the same walk and tells you where the policy came from.

Reports sent to an address at another domain — usually a DMARC reporting service — are only delivered if that domain publishes a record authorising them, at yourdomain._report._dmarc.theirdomain. The checker looks for it and warns you if it’s missing, since reports would otherwise quietly go nowhere.

Questions

What is the best DMARC policy?

p=reject gives the most protection, but only once all your real mail passes SPF or DKIM with alignment. Get there in steps: none, then quarantine, then reject, checking reports at each stage.

Do I need DMARC if I don’t send bulk email?

Gmail and Yahoo only require it from bulk senders, but without DMARC anyone can send mail that appears to come from your domain. A domain that sends no mail at all should publish p=reject.

Why aren’t my DMARC reports arriving?

Check that rua uses the mailto: format, that the mailbox exists, and — if it’s at another domain — that the domain publishes the authorisation record. Reports typically cover one day and arrive the day after.

Can I have two DMARC records?

No. With more than one record at _dmarc, receivers ignore DMARC for the domain. Combine everything into one record.

What happened to pct=?

RFC 9989 removed it. Use t=y to test a stricter policy instead: receivers then apply one level less — quarantine is treated like none, and reject like quarantine.

Sources

More free tools

Check something else

Setup guides