ToolFeather
Developer / SEOBuilt on this page

DMARC Record Generator

Create a DMARC record that's right for where you are in the roll-out. Pick a policy, decide how subdomains are treated, add report addresses, and copy the exact record to publish at _dmarc.

Quick presets

DMARC Record Generator

Your policy
One or more email addresses, separated by commas.
Alignment, reporting and testing options

Load current record asks Cloudflare's public DNS-over-HTTPS resolver (1.1.1.1) straight from your browser. Nothing passes through ToolFeather. Building the record itself happens on this page, with no network at all.

Queries your browser sent (0)

These are the exact requests, each one a link. Open one to see the raw JSON answer from the resolver.

    The record is built on this page. Load current record asks Cloudflare DNS directly from your browser.

    ToolFeather · RFC 9989 tags
    Scratchpad auto-saved
    Stored in this browser (localStorage)
    Step-by-step~40s read

    How it works — in four simple steps

    No signup and nothing to install — it all runs in your browser.

    1

    Enter your domain

    Or load its current record.

    2

    Choose the policy

    Start with none, finish at reject.

    3

    Add a report address

    A mailbox you read, or a DMARC report service.

    4

    Publish and verify

    Add the TXT record at _dmarc, then run the DMARC checker.

    Pro tip

    Collect rua reports for a few weeks before moving past p=none. They show every service sending as you.

    Features

    Every RFC 9989 tag

    p, sp, np, rua, ruf, adkim, aspf, fo, t, plus legacy pct when you need it.

    Roll-out guidance

    Advice for the monitor, quarantine and reject stages, and what testing mode really does.

    Report checks

    Validates addresses and explains the authorisation record needed for reports sent to another domain.

    Load the live record

    Fill the form from the domain's current DMARC record and edit from there.

    Publish-ready output

    Type, host and value, plus a zone-file line.

    About the DMARC Record Generator

    A DMARC record is a TXT record at _dmarc.yourdomain. It always starts v=DMARC1, followed by the policy p=. Everything else is optional, but rua= is the tag you really want: it's where receivers like Gmail, Yahoo and Microsoft send daily aggregate reports listing every server that sent mail as your domain and whether it passed. Those reports are what let you tighten the policy without blocking your own email.

    Roll it out in stages. Begin with p=none and watch the reports for two to four weeks while you fix SPF and DKIM for each legitimate sender. Then go to p=quarantine, and finally p=reject. RFC 9989 adds t=y for this: receivers apply the next-weaker policy (reject is treated as quarantine, quarantine as none) while you test. It replaces the old pct sampling, which updated receivers now ignore. The generator can still add pct for older receivers if you need it.

    sp= sets the policy for existing subdomains, and the new np= covers subdomains that don't exist at all, the made-up names phishers like (invoices.yourdomain.com). adkim and aspf choose relaxed alignment (the default: any subdomain of your domain counts) or strict (exact match only). Everything is built on this page. Load current record makes a single DNS query from your browser to fill the form with what's live.

    Examples

    Monitoring: v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
    Enforced: v=DMARC1; p=reject; np=reject; rua=mailto:dmarc-reports@example.com

    Frequently asked questions

    5 answers
    Where do I publish the DMARC record?
    As a TXT record with the host name _dmarc (full name _dmarc.yourdomain.com) and the generated value. Keep exactly one DMARC record. Two or more and receivers ignore DMARC entirely.
    What email address should I use for rua?
    A mailbox set aside for reports, such as dmarc-reports@yourdomain.com, or the address a DMARC reporting service gives you. Reports are XML attachments, and a service makes them readable.
    Is t=y the same as pct=0?
    No. t=y steps the policy down one level: reject is handled as quarantine, quarantine as none. With p=quarantine; t=y nothing is quarantined, but with p=reject; t=y failing mail still goes to spam.
    Should I set np=reject?
    If your main policy is reject, yes. Names that don't exist never send legitimate mail, so rejecting them costs nothing and blocks a common phishing trick.
    Does ToolFeather see the domains I enter?
    No. Your browser sends each query straight to Cloudflare's 1.1.1.1 or Google Public DNS over HTTPS, without cookies or a referrer. ToolFeather has no server in the path. The resolver you pick handles the query under its own privacy policy. Cloudflare and Google both publish theirs and say they don't sell resolver data. The list under the results shows every request your browser made.