DMARC / SPF / DKIM / BIMI Checker

Pure front-end DNS-over-HTTPS. Optional DKIM selector; leave blank to probe common selectors. Results use history.replaceState for shareable URLs.

Your inputs

How it works

We ask Cloudflare DNS-over-HTTPS first (Accept: application/dns-json), then fall back to Google DNS JSON API. Responses are normalized to one internal shape before scoring.

MX shows whether the domain can receive mail. SPF is read from apex TXT (v=spf1): multiple records fail; +all fails; include/a/mx/ptr/exists/redirect each count toward the RFC 7208 limit of 10 lookups (estimate on the published record).

DMARC is read from _dmarc.<domain>. We surface p=, sp=, pct, rua, and basic syntax. Missing rua means you will not get aggregate reports — the monitoring hook for Pro.

DKIM probes common selectors unless you supply one; empty p= means the key was revoked. BIMI is read from default._bimi.<domain> and is marked warn unless DMARC is quarantine/reject with pct=100.

Budget: at most 20 DNS queries per analysis, concurrency 4, 4s timeout, 10-minute sessionStorage cache per domain+selector.

FAQ

Why can DMARC be pass while mail still lands in spam?

DMARC only authenticates the domain alignment path. Content, lists, IP reputation and user complaints are separate.

How do I find my DKIM selector?

Open a raw message header, find DKIM-Signature, and read the s= tag. That value is the selector.