DMARC Adoption in the Top 1,000 Domains (October 2026)

We read DMARC, SPF and BIMI for the Tranco top 1,000 on 19 October 2026. 73.8% of the 688 domains with MX records enforce DMARC; 11.5% publish none.

October 19, 20265 min read

On 19 October 2026 we read the DMARC, SPF and BIMI records of the first 1,000 domains on the Tranco list. Of the 688 domains that have an MX record, 346 (50.3%) publish p=reject, 508 (73.8%) are at quarantine or reject, and 79 (11.5%) publish no DMARC record at all.

The tables are free to reuse: download the aggregate CSV. We report totals only and do not name individual organisations.

How we ran the scan

  • The list. Tranco list ID 467YX, first 1,000 entries, in rank order. Tranco blends several popularity rankings, so it contains websites, CDNs, ad networks and API hostnames.
  • The lookups. Plain public DNS queries on 19 October 2026 (UTC): TXT at _dmarc.<domain>, TXT at the domain itself for SPF, TXT at default._bimi.<domain> for BIMI, and MX at the domain.
  • The mail filter. A domain counts as a "mail domain" if the MX query returned an answer. 688 of the 1,000 did.
  • Classification. The DMARC policy is the p= value. SPF is classified by the qualifier on its final all term (-all, ~all, ?all), or as redirect when the record hands off with redirect=. A domain with no v=DMARC1 TXT record at _dmarc is "none published".

We queried the exact name on the list. We did not walk up to a parent domain, and we did not send or receive any mail.

Headline numbers

DMARC policy All 1,000 domains 688 mail domains
p=reject 435 (43.5%) 346 (50.3%)
p=quarantine 168 (16.8%) 162 (23.5%)
p=none 118 (11.8%) 101 (14.7%)
No DMARC record 278 (27.8%) 79 (11.5%)

One record was neither: it publishes the bare string v=DMARC1 with no p= tag and no rua=. Under RFC 7489 section 6.6.3 a receiver applies no DMARC processing to that. The newer RFC 9989 treats a record without p= as p=none.

The mail filter changes the picture a lot. Of the 278 domains with no DMARC record, 199 have no MX record either. Many of those are CDN edges, DNS infrastructure or telemetry hosts that never put their name in a From header. They still benefit from a p=reject record, because spoofers do not care whether a domain sends mail. 89 of the 312 non-mail domains already publish p=reject.

Enforcement by rank

Higher rank does not mean better DMARC. Among mail domains, the top 100 and the bottom half of the list sit within about two points of each other.

Rank band Mail domains At p=reject Quarantine or reject
1 to 100 67 38 (56.7%) 50 (74.6%)
101 to 250 94 61 (64.9%) 74 (78.7%)
251 to 500 166 80 (48.2%) 120 (72.3%)
501 to 1,000 361 167 (46.3%) 264 (73.1%)

The 101 to 250 band is the strongest on both measures. The number of mail domains with no DMARC record runs 8, 11, 20 and 40 across the four bands.

SPF: how the record ends

The all qualifier tells a receiver what to do with a server the record does not list. -all is a hard fail, ~all a soft fail, ?all neutral (RFC 7208, section 4.6.2). Under DMARC the qualifier matters less than it used to, because the DMARC policy decides the outcome. It still shows intent.

SPF ending All 1,000 domains 688 mail domains
-all 430 (43.0%) 339 (49.3%)
~all 266 (26.6%) 254 (36.9%)
?all 19 (1.9%) 13 (1.9%)
redirect= 34 (3.4%) 32 (4.7%)
No SPF record 247 (24.7%) 46 (6.7%)

Three mail domains publish two SPF records at once. RFC 7208 section 4.5 says that is a permerror, so SPF cannot pass for them at receivers that follow the RFC. All three still had both records when we checked again later the same day.

BIMI

161 of the 1,000 domains (16.1%) publish a BIMI record at default._bimi. Among mail domains it is 160 of 688 (23.3%). 117 of the 161 include an a= URL pointing to a mark certificate.

BIMI only works at enforcement. The BIMI Group implementation guide says the DMARC policy must be quarantine or reject, and that p=none or a pct below 100 is not accepted. 113 BIMI publishers are at p=reject and 45 at p=quarantine. Three are at p=none, so mailbox providers that follow the guide will not show their logo.

Patterns worth knowing

Consumer mailbox providers split their policy. Several of the largest consumer mail domains publish p=none with sp=quarantine, while the same companies' corporate domains publish p=reject. People send as a consumer address through mailing lists, forwarders and other services the provider does not control, so rejecting failures would break real mail.

Open source projects stop at p=none. Projects that run public mailing lists sit at p=none with a rua= address. Mailing lists rewrite subjects and footers, which breaks DKIM, and SPF fails once the list server resends the message.

Some records ask for nothing. A few domains publish v=DMARC1; p=none; and no other tag. That record requests no action and no reports, so it tells the owner nothing.

Partial enforcement. 10 records set pct below 100. Two use p=quarantine; pct=0, a pattern RFC 9989 appendix A.6 says some receivers treated as a signal to rewrite the From header rather than apply the policy. One publishes p=reject with pct=5.

The newer tags. Only two domains use np= (the policy for non-existent subdomains), both with np=reject. Three use psd=.

What the records ask for

Of the 722 domains with a DMARC record:

  • 670 include rua= for aggregate reports. 52 do not, including 26 at p=reject.
  • 396 include ruf= for failure reports, the per-message reports that can contain message content.
  • 102 set adkim= and 121 set aspf=. Strict alignment (s) appears 51 times for DKIM and 44 times for SPF.
  • 170 set sp=. 19 domains at p=reject relax their subdomains to sp=none.

For what each tag does and its default, see our DMARC record syntax guide.

Limitations

  • Not every listed name sends mail. Tranco includes CDN, API and tracking hostnames. That is why we report mail domains separately. The MX test is a rough filter: three names counted as mail domains answered the MX query with a CNAME, not a real MX record. We left them in so the numbers match the CSV.
  • One point in time. This is a single read on one day. Records change, and we will rerun the scan.
  • DNS only. We read what domains publish. We did not test whether their real mail passes SPF, DKIM or alignment. A domain at p=reject can still have broken senders, and a domain at p=none may be fully aligned and waiting.
  • No parent lookup. We queried _dmarc.<name> for the exact name on the list. A listed subdomain could inherit a policy from its parent in practice.
  • Multi-string TXT records. DNS joins the strings of a TXT record with no space. Our scanner joined them with a space, which garbled two records, although both read correctly when the strings are joined. We count them as published.

Check your own domain

Run your domain through the DMARC checker to see your policy, then the SPF checker for the qualifier and lookup count. If you have no record yet, the record generator builds a p=none starting record with rua=, and How to implement DMARC in 5 steps covers the move to reject.

Frequently asked questions

What share of top domains enforce DMARC in 2026?

In our scan of the Tranco top 1,000 on 19 October 2026, 603 of 1,000 domains (60.3%) published p=quarantine or p=reject. Among the 688 domains with an MX record, 508 (73.8%) were at enforcement.

How many top domains have no DMARC record at all?

278 of the 1,000 domains had no DMARC record. Most of them do not receive mail: only 79 of the 688 domains with an MX record (11.5%) had no record at _dmarc.

Why do some large mailbox providers still use p=none?

Consumer mailbox domains are used as From addresses by mailing lists, forwarders and third-party services their owners do not control, so a reject policy would break legitimate mail. Several large consumer mailbox domains in our scan pair p=none with sp=quarantine, which protects their subdomains while the main domain stays in monitoring mode.

Can I use this data?

Yes. The aggregate tables are free to download as a CSV at /data/dmarc-adoption-2026-10-19.csv. We publish aggregates only and do not name individual organisations. Please cite the scan date.

dmarcdmarc adoptionspfbimi

Check your own domain

Run the free DMARC, SPF and DKIM checks, or start a 14-day trial of DMARC+ reporting.