Skip to content
← All analysers
Technical analysis

DMARC record analyser

Grade a DMARC record on enforcement, not just syntax.

Short answer

A DMARC record protects a domain only at p=quarantine or p=reject with pct=100 and subdomains covered. A syntactically perfect p=none record blocks nothing: it asks receivers to report failures and deliver the mail anyway. Aggregate reporting via rua is what makes moving to enforcement safe.

Read it from DNS with dig +short TXT _dmarc.example.com, then paste the value here. Quoted, multi-string records are joined the way a resolver joins them.

Runs entirely in your browser. The record you paste is never sent to a server, logged, or stored — this page has no backend to send it to.

Paste a record to see the findings. Nothing is checked until you do.

How to use it

  1. Read the record: dig +short TXT _dmarc.example.com.
  2. Paste it and check the policy grade before the syntax findings.
  3. If you are at p=none, publish a rua address and read reports for two weeks before tightening.
  4. Move p=none → p=quarantine → p=reject, confirming pass rates hold at each step.

Frequently asked questions

Why is my valid record still scored low?

The score grades protection, not syntax. p=none is valid and stops nothing, so it costs points until you reach enforcement.

Do I need sp=?

Only to differ from p. Subdomains inherit p when sp is absent, so an explicit sp=none under p=reject silently leaves every subdomain spoofable.

What does DMARC need for BIMI?

A policy of quarantine or reject at pct=100 with subdomains covered. The analyser reports BIMI eligibility directly.

Guides that go deeper

More technical analysis

All analysers
Technical analysis

SPF record analyser

Parse an SPF record, count its DNS lookups, and find what will break it.

Runs in your browser
Technical analysis

DKIM key analyser

Check a DKIM public key's strength, revocation state, and tags.

Runs in your browser
Technical analysis

Email header analyser

Read authentication, DMARC alignment, and hop-by-hop delays from raw headers.

Runs in your browser