DMARC Record Generator.
Build a syntactically-clean v=DMARC1 TXT record without memorising tag names. Pick a policy, set reporting endpoints, and copy the result straight to your DNS host.
Generated DMARC Record
Live updates as you fill the form. Copy and publish at _dmarc.{domain} as a TXT record.
_dmarc.example.com
v=DMARC1; p=none;
How the generator builds your record
The composer assembles a string that starts with v=DMARC1; (required), then appends each non-empty tag in the order RFC 7489 recommends. Tags you leave blank are omitted entirely — DMARC defaults fill in. No string-escape headaches; no DNS provider treats the output differently.
A safe rollout, every time
Generate at p=none first. Watch reports for 2–4 weeks. Move to p=quarantine with pct=25, then 50, then 100. Move to p=reject only after pass-rate is steady for several reporting cycles.
Every DMARC tag, explained
| Tag | Description |
|---|---|
v= |
Always v=DMARC1. The version marker. Anything else makes the record invalid. |
p= |
none, quarantine, or reject. What receivers do with mail that fails DMARC. |
sp= |
Same values as p=. Defaults to whatever p= is set to. |
pct= |
Integer 0-100. Defaults to 100. Use during phased rollout to quarantine/reject. |
rua= |
Comma-separated mailto: URIs for aggregate XML reports. |
ruf= |
Per-message failure reports. Most receivers ignore this. |
adkim= |
r (relaxed, default) or s (strict). |
aspf= |
r (relaxed, default) or s (strict). |
fo= |
0, 1, d, s. Controls which failures trigger ruf reports. |
ri= |
Seconds between aggregate reports. Default 86400 (24h). |
The four-phase rollout your record needs to support
Publishing a v=DMARC1 record is the first move, not the last. The phases below are the operational arc every successful DMARC deployment travels. The generator above lets you compose the right record for the phase you're in.
Discover (p=none)
Publish p=none with rua= pointed at a DMARC platform. Read the aggregate reports until your sender inventory is stable and you've fixed obvious authentication gaps. No mail is blocked.
Enforce partial (p=quarantine pct=25 → 50 → 100)
Move to p=quarantine with pct=25. Watch pass-rate for a week. Bump to 50, watch. Bump to 100, watch. Failing mail goes to recipient spam folders; legitimate senders you missed surface as anomalies in the reports.
Enforce full (p=reject pct=100)
Move to p=reject when quarantine has been stable for several reporting cycles with 99%+ pass rate from legitimate senders. Failing mail is bounced at the SMTP gate.
Maintain
New SaaS signups, DKIM rotations, brand acquisitions — every change to the sender estate requires confirming DMARC posture. The recurring monitoring is the work that justifies the service line.
Common DMARC record mistakes
Most published DMARC records have at least one of the following issues. Skim before you publish.
critical p=reject as the first published record expand_more
high No rua= reporting address expand_more
high rua= address on a different domain without delegation expand_more
medium pct= used with p=none expand_more
medium Strict alignment (adkim=s aspf=s) on first publish expand_more
low ruf= configured but unused expand_more
DMARC Generator vs hand-crafting the TXT
You can absolutely hand-write a DMARC record — the syntax is forgiving and the tag set is small. Generators add value in three places: validating every tag against RFC 7489 before you publish (the most common errors are typos in p= and rua=), surfacing the soft warnings that the spec doesn't enforce but operational experience does (p=reject without rua= is technically valid but operationally reckless), and producing a copy-ready TXT string with mailto: prefixes already in place so DNS providers don't reject the record on save.
Pair this with the rest of your auth stack
DMARC validator
Audit the live record after publishing — does what you generated actually resolve at receivers?
mark_email_unreadSPF analyzer
DMARC fails if SPF or DKIM doesn't align. Check SPF lookup count and include chain before going to enforcement.
vpn_keyDKIM validator
Verify every selector your mail flows use, plus key length. 1024-bit keys are increasingly distrusted.
dnsDNS Lookup
Confirm the TXT you just published actually resolves at every authoritative resolver — Cloudflare, Google, Quad9.
Continue learning
The academy articles that go deeper on each DMARC tag.
What does DMARC p=none mean? north_east
Why monitoring mode is the right first step, and what to look for in the first two weeks.
DMARC policy explained: p=none, p=quarantine, p=reject north_east
When to move between phases and how to recognize you're ready.
DMARC alignment explained: relaxed vs strict north_east
When relaxed is enough; when strict catches the spoof attempts relaxed misses.
How to move from DMARC monitoring to enforcement safely north_east
The phased pct ramp, the rollback windows, and the checkpoint that confirms enforcement is safe.
Generator FAQ
What goes in the rua= address? expand_more
Should I publish at p=reject immediately? expand_more
What if my rua= mailbox is on a different domain? expand_more
Can I include multiple rua= addresses? expand_more
What's the difference between relaxed and strict alignment? expand_more
Why is the generator warning me when I haven't done anything wrong? expand_more
How is this different from typing the record by hand? expand_more
Will the generator publish the record for me? expand_more
Stop composing DMARC records by hand.
DMARC AI generates, publishes, monitors, and escalates DMARC policies across your entire client portfolio — one dashboard, multi-tenant.