Free DMARC checker & record generator

Fix your DMARC record, without breaking your mail

Every tag checked against the spec, the corrected record for the policy you are on, and the exact record for each step from monitoring to p=reject — with what to look for before taking the next one.

Check DMARC
Paste a record instead No signup · live DNS lookup · results in seconds
11
tags validated
4
rollout stages generated
~2s
typical check
$0
no account needed
What we check

Everything a receiver reads in that record

DMARC is eleven tags and a great deal of consequence. Here is what each part decides, and which mistakes quietly delete the whole policy.

What DMARC actually decides

The policy receivers apply when a message fails authentication.

p=none asks receivers to report and change nothing. p=quarantine sends failing mail to the spam folder. p=reject refuses it at the SMTP transaction. Only the last one stops someone sending as your domain — and getting there without breaking your own mail is what the staged plan on this page is for.

Alignment, the part that trips people

DMARC does not ask whether SPF passed. It asks whether it passed for your domain.

A message passes DMARC when SPF passes for an envelope domain that aligns with the From address, or DKIM verifies for a signing domain that does. That is why mail can show SPF: pass in its headers and still fail DMARC — the ESP’s bounce domain passed, and your From domain was never checked. adkim= and aspf= decide how strictly "aligns" is read.

Reports are the whole point

rua= is what makes every later step safe.

Aggregate reports are a daily summary from each receiver of everything claiming to be from you, with whether it passed. They are how you find the systems sending as your domain that nobody remembered. DMARC with no rua= is enforcement with the lights off, and we grade it accordingly.

External reporting authorisation

The check almost no tool runs.

If your reports go to a different organisational domain — a reporting service, an agency — RFC 7489 requires THAT domain to publish a record saying it accepts them. Until it does, receivers that honour the rule send nothing. This is the usual reason a perfect-looking record produces no reports, and we look for it.

Why pct= exists

A rollout dial, not a permanent setting.

pct=25 applies your policy to a quarter of failing mail, so a mistake costs a quarter of the blast radius. It is the right tool while you move from monitoring to enforcement, and a gap if it is still there a year later — which the report will say. pct=0 disables the policy entirely.

The faults that make a record vanish

Some mistakes weaken a policy. These delete it.

Two DMARC records at _dmarc means receivers must treat the domain as having none. v= not first, or missing, does the same. So does p= with an unrecognised value. Each of these leaves a domain that looks protected in a DNS panel and is not protected anywhere else.

How it works

A record in, a plan out

No agent to install, no zone file to upload, no account to create.

01

Domain, or the record itself

Type a domain and we read what is published. Paste a record your provider handed you and we validate that instead — no DNS involved, which is the right moment to catch a typo.

02

Every tag, against the spec

Not just p=. Order, duplicates, misspelled tag names, invalid values, report addresses missing their mailto:, a pct that quietly disables the policy — each one with what it actually costs you.

03

The record to publish

Your current policy with every fault corrected, plus the exact record for each stage from monitoring to reject — and what to look for in your reports before taking the next one.

FAQ

About the DMARC fixer

No. It reads public DNS — the same TXT record anyone can look up with dig — so there is nothing to protect behind a login. It sets no cookie and needs no email address. Signing in only matters for the parts of the product that hold your data.
Yes, and that is the case this page was built for. Paste the record into the field instead of entering a domain and it is parsed and validated with no DNS lookup at all. Catching a misspelled tag or a missing mailto: before the record goes into your zone is worth far more than catching it a fortnight later when you notice no reports have arrived.
No. The record under "publish this now" is your current policy with the faults corrected — same p=, same pct=, same alignment. Making the record valid is not the same as tightening it, and a tool that quietly hands you a stronger policy under the heading "your corrected record" is how a validator causes an outage. Moving to a stronger policy is a separate, deliberate step, which is what the staged plan below it is.
Until every legitimate sender in your aggregate reports passes SPF or DKIM with alignment. Two to four weeks is typical, and longer if you have systems that only send monthly — invoicing, payroll, an annual renewal notice. Those are exactly the senders a rushed rollout breaks, because they are not in the reports yet when you move on.
Three usual causes, in order of likelihood. Your rua= address is at a different organisational domain and that domain has not published the authorisation record RFC 7489 requires — we check this and tell you the record to publish. Or the rua= value is missing its mailto: prefix, which makes the whole destination invalid. Or the domain simply receives very little mail, in which case there is nothing to report on. Reports also arrive daily rather than immediately, so give it 24 to 48 hours.
It stops them using your exact domain in the From address, at every receiver that honours it — which is most of the large ones. It does not stop display-name spoofing, where the name reads "Support Team" and the address is an unrelated free mailbox, and it does nothing about lookalike domains, which are somebody else’s domain with their own valid DMARC record. Worth doing, and worth knowing what it leaves.
A grade for the record itself: whether it is valid, whether it is enforcing, whether anyone receives the reports. It is deliberately not a deliverability score — a domain can have a flawless DMARC record and still have broken SPF, no DKIM key and a listed sending IP. For that, run the DNS checker or send a real message to a test address.
Yes. POST a JSON body of {"domain":"example.com"} — or {"record":"v=DMARC1; p=none;"} — to /api/dmarc/fix and you get the same report this page renders. It is rate-limited per IP for anonymous callers; send an API key as a bearer token to lift the cap on a paid plan.

DMARC is one record of several

Get the policy right, then find out whether the mail it governs actually authenticates. Read the rest of your DNS, or send one real message and see what a receiver sees.

New to this? The guides cover authentication from the ground up.