Free tool · no signup
Free DMARC record generator
Build the DMARC record for your domain, and find out before you publish it whether the reports it asks for will actually reach you. Most DMARC records that produce no reports are correct. They were just never authorised.
Ungated · no email required · unlimited use
In short
- This is a free, ungated DMARC record generator. It builds the TXT record published at _dmarc on a domain, which tells receiving mail servers what to do with messages that fail SPF and DKIM alignment, and where to send the reports.
- A DMARC record starts with v=DMARC1 followed by a p tag. RFC 7489 §6.3 requires those two in that order; every other tag may follow in any order. The record is published on the _dmarc subdomain, not on the root of the domain as SPF is.
- The policy is a position on a ladder, not a setting. p=none changes nothing and starts the reports; p=quarantine sends failing mail to spam; p=reject refuses it outright and is the only policy that actually stops spoofing. The correct first record for any domain is p=none with a report address.
- RFC 7489 §7.1 requires that when reports are sent to a domain outside your own, that domain must publish an authorisation record at yourdomain._report._dmarc.theirdomain. Without it, receivers must not send your reports, which is the most common reason a correct DMARC record produces nothing. This generator checks it against live DNS while you type the address.
- DMARC is a verdict on SPF and DKIM: mail that neither can vouch for in an aligned way fails. Enforcement on a domain with broken authentication therefore refuses that domain's own mail, so this generator reads the SPF record first and states what it can and cannot see before handing over an enforcing policy.
- DMARC defines twelve tags, of which only v and p are required; every other tag has a default that applies when it is omitted, so a short record is usually the correct one. The tag most records are missing is np, added by RFC 9091, which sets the policy for subdomains that do not resolve. Because nothing legitimate can send from a subdomain that does not exist, np=reject carries no rollout risk and is safe to publish on the same day as p=none.
Enter your domain recommended
We read the DMARC record you already publish so you edit it rather than replace it blind, and we read your SPF record, because DMARC is a verdict on it.
Without a domain the record still builds, but nothing can be verified: whether your reports will arrive is a question about your domain, not about the address.
Say where the reports go
The aggregate report address. This comes before the policy because it is what makes every later step safe: reports are how you find the senders you forgot about, and you cannot raise a policy you cannot measure.
Pick your rung on the ladder
DMARC is a position on a ladder, not a setting. Each rung has something that has to be true before you climb to it.
Advanced tags
Subdomain policyspApplies to subdomains instead of the main policy. Worth setting to reject even while your main domain is at none, because subdomains that never send are the easiest thing in your estate to spoof.
Non-existent subdomainsnpApplies only to subdomains that do not resolve at all: the ones an attacker invents, like invoices.yourdomain.com. Nothing legitimate can ever send from a subdomain that does not exist, so np=reject is the one enforcement setting with no rollout risk attached, and it is safe on day one even while your main domain is still at none.
np=rejectis the one enforcement setting that cannot break anything: a subdomain that does not resolve has never sent legitimate mail. Safe to publish today, even atp=none.DKIM alignmentadkimSPF alignmentaspfRelaxed accepts a subdomain match, strict demands an exact one. Relaxed is the default and the right answer for almost everyone; strict breaks mail sent from subdomains you forgot about.
Forensic reportsrufPer-message failure reports, which may contain content and recipient addresses. Most large receivers never send them. Treat turning this on as a data-protection decision, not a technical one.
v=DMARC1; p=none;
The value on its own. This is what the host or value field of a DNS panel expects.
No report address, so this record produces nothing you can read. You will never find out who sends as your domain, which means you can never safely climb past monitoring. Add one in step 2.
How to publish this
- Type
TXT- Host / name
_dmarc- Value
The record below- TTL
3600
The one that catches people: DMARC does not go on the root of the domain the way SPF does. It goes on _dmarc, and a DMARC record published at the root does nothing at all, with no error shown anywhere.
Reading DMARC reports is where most rollouts stall
The reports arrive as XML from every receiver on the internet, and the work is finding the legitimate senders hiding in them. SmartReach keeps your sending domains authenticated and warmed so there is far less to find.
See the deliverability suiteThe order that matters
Reports first, policy second
Every other DMARC generator opens with the policy dropdown. Policy is the last decision, not the first: a record at p=reject published before anyone has read a report is how an organisation blocks its own invoices. The reports are what make each step up the ladder safe, so they come first here.
Start from what you publish
Enter your domain and we read the DMARC record already at _dmarc, plus the state of your SPF, so the record you build is an edit rather than a rival.
Say where the reports go
The aggregate report address comes first because it is what makes every later step safe. We check live that the destination is authorised to receive your reports and can accept mail at all.
Pick your rung on the ladder
Monitor, quarantine or reject, with what has to be true before each. The tool will tell you when the rung you picked is ahead of the domain you picked it for.
Publish, then watch
Copy the record into one TXT record at _dmarc on your domain, wait for the TTL, then check it with the DMARC checker and start reading what arrives.
The three rungs
What has to be true before each policy
p=none · Monitor
Receivers change nothing about how they treat your mail, and send you reports on what they saw. Nothing can break, which is the point: this is the rung where you find out who sends as your domain.
First: Nothing. Publish it today, then read reports for two to four weeks before moving.
p=quarantine · Quarantine
Mail that fails alignment goes to spam rather than the inbox. Legitimate senders you have missed become visible fast, and recoverably, because the message is findable rather than gone.
First: Every legitimate sender you found in the reports now passes SPF or DKIM with alignment. Move a percentage at a time if you are unsure.
p=reject · Reject
Mail that fails alignment is refused at the door. This is the only policy that actually stops someone spoofing your domain, and the only one Gmail and Yahoo treat as full compliance for bulk senders.
First: Weeks of clean reports at quarantine, and working SPF and DKIM. Publish it while either is broken and you block your own mail.
The rung most people skip is the one that costs nothing: RFC 7489 §6.6.3 gives DMARC inheritance that SPF does not have, so sp=reject protects every subdomain you have, including the ones that never send mail and are the easiest thing in your estate to spoof, while your main domain is still safely monitoring.
Deliberate omissions
What this generator will not emit
DMARC's failure mode is not a silent permerror. It is your own invoices being refused. These six are left out for a reason from the specification rather than a house preference.
It will not hand you reject on a broken domain
DMARC is a verdict on SPF and DKIM, so enforcement on a domain whose SPF is missing or over the lookup limit rejects your own mail. We read your SPF record in the same pass and say so before you copy anything.
It will not build a record with nowhere to report
A policy you cannot measure is a policy you cannot safely raise. Without a rua address you get no reports, so you never learn who sends as your domain and you can never move past monitoring with any confidence.
It will not add forensic reporting by default
Failure reports can carry message content and recipient addresses, which makes them a data-protection question rather than a technical one. Most large receivers never send them anyway. It is available under the advanced options with that warning attached, not switched on quietly.
It will not emit pct with p=none
The percentage tag says what share of failing mail gets the policy applied. At p=none nothing is being applied to any of it, so the tag reads as caution while doing nothing at all.
It will not pretend an unauthorised address will work
When your reports go to a domain you do not own, RFC 7489 §7.1 requires that domain to publish an authorisation record before any receiver will send anything. We check for it live, and a missing one is shown as the blocker it is rather than left to be discovered by an empty dashboard.
It will not emit tags that only restate a default
rf=afrf is the only report format anyone implements, and adkim=r and aspf=r are already what receivers assume. Emitting them adds length and gives a reader something to wonder about without changing what any receiver does. The shortest record that says what you mean is the correct one.
The one worth reading twice is the report authorisation. RFC 7489 §7.1 puts the requirement on the DESTINATION, not on you: your record can be perfect and your vendor can simply never have published the record that lets them receive anything. Receivers are not permitted to send in that case, so the failure is total, silent, and invisible from your own DNS.
Take it with you
Put this generator on your own site
Free to embed, on any site, with no permission needed and nothing to sign. It carries a visible credit back here, which is the whole arrangement. The report addresses are still verified against live DNS inside the frame, so an embedded copy checks exactly what this one does.
Deliberate by default
What this generator puts in, and what it leaves out
DMARC defines twelve tags. Two are required and the rest all have defaults, so the shortest record that says what you mean is usually the correct one, which is why the record you just built is shorter than the specification. This is every tag, and the rule that decides whether it appears. For what each one means, the DMARC checker carries the full reference.
| Tag | When this generator emits it |
|---|---|
| v=required | Always, first. RFC 7489 §6.3 requires it there. |
| p=required | Always, second, for the same reason. |
| rua= | Whenever you give an address, and each one is checked against live DNS first, because a report address that is not authorised produces silence rather than an error. |
| ruf= | Only when you switch it on. Failure reports can carry message content, which makes enabling them a data-protection decision rather than a technical one. |
| sp= | Only when you set it. Worth setting on almost every domain. |
| np= | Only when you set it. Worth setting to reject on day one, because it is the one enforcement setting with no rollout risk attached. |
| adkim= | Only when you choose strict. Relaxed is already what receivers assume. |
| aspf= | Only when you choose strict, for the same reason. |
| pct= | Only below 100, and never at p=none, where a percentage of a policy that applies to nothing reads as caution while doing nothing at all. |
| fo= | Only alongside ruf, and defaulted to 1 rather than the specification default of 0, which reports only when SPF and DKIM both fail. |
| ri= | Only when you change it from daily, which receivers may ignore anyway. |
| rf= | Never. afrf is the only value in real use, so emitting it adds length and changes nothing. |
The one most records are missing is np, added by RFC 9091 after the original specification and still absent from most generators. It sets the policy for subdomains that do not resolve at all: the ones an attacker invents. Nothing legitimate can ever send from a subdomain that does not exist, so np=reject is the only enforcement setting with no rollout risk attached, and it is safe on the same day you publish p=none.
Once it is published
DMARC only works on top of the other two
A DMARC policy does not authenticate anything by itself. It decides what happens when SPF and DKIM have already spoken. Check the published record, then check the two records it passes judgement on.
What happens when a check fails
DMARC Checker
DMARC tells receivers whether to quarantine or reject mail that fails SPF and DKIM, and where to send the reports. Check your policy, alignment and reporting address.
What it looks like
v=DMARC1; p=reject; pct=100
Which servers may send as you
SPF Checker
SPF lists the servers allowed to send mail for your domain. Check that yours is published, resolves, and stays under the ten-lookup limit that silently breaks it.
What it looks like
v=spf1 include:_spf.google.com ~all
Proof the message is really yours
DKIM Checker
DKIM signs every message with a key only you hold. Check that the public key is published, parses, is not revoked, and is long enough to be trusted.
What it looks like
v=DKIM1; k=rsa; p=MIIBIjANBgkq…
Or start from a domain that already enforces
The ladder, already climbed
Every rung above monitoring depends on SPF and DKIM being right on every system that sends as you. SmartReach hands you sending domains and mailboxes with all three records in place, so there is nothing to fix before you can enforce.
- Sending domains and mailboxes bought and authenticated in minutes, no IT ticket
- SPF, DKIM and DMARC configured for you, so there is no record to hand-edit
- Warmup, inbox rotation and ESP matching across unlimited sending accounts
- Every address verified free before a campaign sends, so bounces never touch your domain
“This software is focused on the end receiver as much as the user.”Matt McQuin · Co-founder, ColdlyticsEvery rule on this page is checked against RFC 7489, the specification that defines DMARC. Last reviewed . The report authorisation check runs against live DNS every time you use it, not against anything stored here.
FREQUENTLY ASKED QUESTIONS
DMARC record questions, answered
Stop fixing deliverability one DNS record at a time.
SmartReach buys and authenticates your sending domains and mailboxes with SPF, DKIM and DMARC already in place, then warms them, rotates them, and verifies every address before you send.