DMARC Census, August 2026
We looked up the DMARC and SPF records of 1,000,766 domains and asked two questions of each: does it publish a policy receivers act on, and can anyone receive the reports it asks for?
The population is the Tranco top 1 million (list JZ8PY) plus 1,321 US federal domains, scanned between 2026-08-20 and 2026-08-21. 555 of the federal domains are in the million already and were scanned once, so the dataset holds 1,000,766 rows. Unless a sentence says otherwise, a share on this page is of the 1,000,296 domains whose DMARC lookup answered. We call those the measured domains. The 470 lookups that failed after retries are left out. They're never counted as having no record.
Jump to key findings, tiers, rank, countries, TLDs, reports that go nowhere, SPF, the federal cohort, collectors, methodology or the data.
Key findings
- Of the top 1,000 domains in the August 2026 scan, 72.1% publish a valid DMARC record and 55.8% are in the enforced tier. Across ranks 100,000 to 1,000,000, those shares are 45.7% and 19.4%.
- 427 of the domains with a usable SPF record in the August 2026 scan end it with +all. That lets any host on the internet send as them.
- Of 1,321 registered US federal .gov domains, 79.2% publish p=reject in the August 2026 scan and 198 publish no DMARC record. That list is wider than the mail-sending executive-branch set that Binding Operational Directive 18-01 has held to p=reject since October 2018, so the gap isn't a count of agencies breaking the directive.
The quality tiers
Each domain lands in one tier. Two questions decide it: do receivers act on its policy, and can anyone receive the reports it asks for?
| Tier | Domains | Share |
|---|---|---|
| No record | 525,752 | 52.6% |
| Broken | 5,129 | 0.5% |
| Dead reporting | 128,980 | 12.9% |
| Monitoring | 105,464 | 10.5% |
| Partial enforcement | 27,320 | 2.7% |
| Enforced | 207,651 | 20.8% |
- No record 525,752 domains (52.6%) No DMARC record at the _dmarc name.
- Broken 5,129 domains (0.5%) A record exists and receivers ignore it: more than one record, a bad v= tag, or no usable p=.
- Dead reporting 128,980 domains (12.9%) p=none, and no rua destination that can receive a report.
- Monitoring 105,464 domains (10.5%) p=none, with at least one rua destination that can receive a report, or one the scan could not rule out.
- Partial enforcement 27,320 domains (2.7%) quarantine or reject, weakened by pct below 100 or a softer sp=.
- Enforced 207,651 domains (20.8%) quarantine or reject, with no pct or sp tag weakening it.
Two tags weaken a policy without changing it. pct= applies the policy to only that share of failing mail, and sp= sets a separate, often softer, policy for subdomains.
5,129 domains publish a broken record that receivers can't use, including 4,477 with more than one DMARC record. RFC 7489 tells receivers to treat that as no record at all. Broken rows aren't in the valid-record count.
Of the 469,415 valid records, 49.9% set p=none, 24.9% set p=quarantine and 25.2% set p=reject.
How much DMARC adoption there is depends on what you count. 47.4% of measured domains publish something at the _dmarc name, but that count mixes every tier, broken records included. 207,651 domains (20.8%) reach the enforced tier. 525,752 (52.6%) publish no record. Most of what's left sits at p=none: 128,980 dead and 105,464 monitoring.
Among domains at quarantine or reject, 10,318 apply the policy to only part of their failing mail with pct below 100, and 18,596 leave subdomains weaker than the organizational domain. Some do both. That's why those two figures add up to more than the 27,320-domain partial-enforcement tier.
Shares are of the 1,000,296 domains whose DMARC lookup answered. 470 domains failed to resolve after retries. They're excluded, not counted as having no record.
Valid records and enforcement by rank
The top 1,000 domains publish and enforce at far higher rates than the rest of the million, so their numbers say little about it. Both series are shares of the domains in that bucket whose DMARC lookup answered.
| Rank bucket | Measured | Valid DMARC | Enforced tier |
|---|---|---|---|
| Top 1k | 1,000 | 72.1% | 55.8% |
| 1k to 10k | 8,998 | 66.0% | 43.8% |
| 10k to 100k | 89,924 | 57.0% | 31.5% |
| 100k to 1M | 899,608 | 45.7% | 19.4% |
Fewer domains publish a record the further down the list you go, and the enforced share falls faster than the valid-record share.
The buckets cover the Tranco million only. The 766 federal cohort domains outside the million count in the overall shares and sit in no bucket.
Adoption by country
Countries with a ccTLD of their own, shaded by the share of its measured domains publishing a valid DMARC record. Hover a country for its numbers.
- under 30%
- 30 to 39%
- 40 to 49%
- 50 to 59%
- 60% and up
- under 200 domains
| Country | ccTLD | Measured | Valid DMARC | At enforcement |
|---|---|---|---|---|
| Norway | .no | 1,790 | 78.4% | 49.7% |
| Denmark | .dk | 2,288 | 74.6% | 52.8% |
| Saudi Arabia | .sa | 554 | 72.9% | 55.6% |
| Anguilla | .ai | 3,564 | 72.6% | 40.5% |
| Australia | .au | 8,418 | 72.4% | 40.8% |
| Estonia | .ee | 732 | 72.4% | 43.9% |
| Ireland | .ie | 1,464 | 70.8% | 36.6% |
| Slovenia | .si | 763 | 70.5% | 33.7% |
| Luxembourg | .lu | 261 | 70.5% | 48.7% |
| New Zealand | .nz | 1,727 | 70.1% | 37.8% |
| Bolivia | .bo | 200 | 70.0% | 51.5% |
| Croatia | .hr | 1,098 | 69.9% | 29.1% |
| Tanzania | .tz | 216 | 69.9% | 42.1% |
| Romania | .ro | 3,984 | 69.6% | 29.6% |
| Belgium | .be | 3,301 | 68.8% | 39.0% |
| Singapore | .sg | 891 | 68.4% | 45.8% |
| Portugal | .pt | 2,023 | 68.3% | 37.9% |
| Uruguay | .uy | 487 | 68.2% | 34.7% |
| Paraguay | .py | 307 | 68.1% | 43.6% |
| Lithuania | .lt | 1,059 | 67.6% | 31.4% |
| Argentina | .ar | 3,230 | 67.0% | 25.5% |
| Israel | .il | 1,671 | 66.8% | 22.6% |
| Algeria | .dz | 217 | 66.8% | 46.1% |
| Slovakia | .sk | 1,820 | 66.6% | 30.1% |
| Greece | .gr | 3,518 | 66.5% | 26.3% |
| Ecuador | .ec | 551 | 66.4% | 45.2% |
| United Arab Emirates | .ae | 728 | 66.3% | 40.5% |
| Sweden | .se | 3,484 | 66.1% | 36.5% |
| Poland | .pl | 9,006 | 65.6% | 33.4% |
| Finland | .fi | 2,221 | 65.5% | 28.9% |
| Chile | .cl | 2,588 | 65.1% | 34.1% |
| Switzerland | .ch | 3,785 | 65.0% | 37.6% |
| Bulgaria | .bg | 1,191 | 64.7% | 30.9% |
| Spain | .es | 5,409 | 64.7% | 34.5% |
| Bosnia and Herzegovina | .ba | 314 | 64.3% | 37.3% |
| South Africa | .za | 2,804 | 64.2% | 34.8% |
| Italy | .it | 10,344 | 63.9% | 23.2% |
| France | .fr | 10,705 | 63.5% | 29.4% |
| Czechia | .cz | 4,920 | 63.0% | 26.6% |
| Austria | .at | 2,985 | 62.9% | 31.7% |
| Moldova | .md | 400 | 62.7% | 33.0% |
| Costa Rica | .cr | 222 | 62.6% | 44.6% |
| Guatemala | .gt | 233 | 62.2% | 39.5% |
| Latvia | .lv | 846 | 61.9% | 39.7% |
| Brazil | .br | 16,992 | 61.7% | 26.9% |
| Venezuela | .ve | 245 | 61.6% | 42.0% |
| Turkey | .tr | 3,083 | 61.5% | 36.0% |
| Hungary | .hu | 2,976 | 61.1% | 21.8% |
| Canada | .ca | 6,236 | 60.9% | 32.4% |
| Dominican Republic | .do | 275 | 60.0% | 33.1% |
| Germany | .de | 27,159 | 59.7% | 30.6% |
| Peru | .pe | 1,201 | 59.0% | 32.7% |
| Bangladesh | .bd | 659 | 58.9% | 38.1% |
| Hong Kong | .hk | 883 | 57.9% | 35.3% |
| Serbia | .rs | 1,039 | 57.5% | 22.5% |
| North Macedonia | .mk | 283 | 57.2% | 27.6% |
| Malaysia | .my | 1,629 | 57.0% | 36.2% |
| Japan | .jp | 16,967 | 56.4% | 12.7% |
| Kenya | .ke | 523 | 56.2% | 27.2% |
| Armenia | .am | 352 | 55.7% | 38.1% |
| Mexico | .mx | 3,358 | 55.3% | 29.6% |
| Iceland | .is | 448 | 54.7% | 28.8% |
| Indonesia | .id | 4,761 | 54.5% | 25.8% |
| Egypt | .eg | 324 | 54.3% | 34.3% |
| Thailand | .th | 981 | 53.3% | 28.1% |
| European Union | .eu | 5,897 | 53.2% | 27.6% |
| Niue | .nu | 280 | 52.9% | 25.4% |
| British Indian Ocean Territory | .io | 10,113 | 52.4% | 30.7% |
| Philippines | .ph | 1,359 | 51.9% | 27.8% |
| Micronesia | .fm | 335 | 51.9% | 21.8% |
| Nigeria | .ng | 670 | 51.9% | 17.5% |
| Colombia | .co | 7,113 | 51.5% | 27.7% |
| Morocco | .ma | 547 | 50.1% | 23.6% |
| Pakistan | .pk | 1,660 | 49.7% | 17.5% |
| Guernsey | .gg | 766 | 48.8% | 24.2% |
| Georgia | .ge | 446 | 48.7% | 23.5% |
| India | .in | 12,070 | 48.6% | 25.2% |
| Belarus | .by | 1,279 | 48.3% | 26.3% |
| Kyrgyzstan | .kg | 262 | 48.1% | 31.7% |
| Uzbekistan | .uz | 646 | 47.5% | 27.6% |
| Ukraine | .ua | 4,768 | 46.1% | 20.4% |
| Sri Lanka | .lk | 507 | 44.0% | 18.1% |
| Nepal | .np | 260 | 43.8% | 25.8% |
| Taiwan | .tw | 2,784 | 43.7% | 20.1% |
| United Kingdom | .uk | 27,738 | 42.4% | 22.8% |
| Azerbaijan | .az | 544 | 41.9% | 28.3% |
| Saint Helena | .sh | 274 | 40.5% | 25.5% |
| Russia | .ru | 37,713 | 38.7% | 20.3% |
| Tunisia | .tn | 309 | 38.2% | 17.2% |
| Kazakhstan | .kz | 1,506 | 37.8% | 21.0% |
| Iran | .ir | 3,223 | 37.2% | 20.6% |
| Netherlands | .nl | 18,896 | 36.6% | 20.0% |
| Tuvalu | .tv | 2,715 | 35.8% | 17.1% |
| Vietnam | .vn | 2,731 | 34.3% | 17.4% |
| Isle of Man | .im | 266 | 33.8% | 20.7% |
| Montenegro | .me | 2,911 | 33.3% | 17.2% |
| Soviet Union | .su | 1,035 | 30.8% | 15.2% |
| United States | .us | 4,114 | 30.7% | 19.7% |
| Samoa | .ws | 374 | 29.4% | 19.5% |
| Laos | .la | 201 | 28.4% | 15.4% |
| Tonga | .to | 856 | 26.2% | 12.5% |
| South Korea | .kr | 4,616 | 23.3% | 4.7% |
| Sao Tome and Principe | .st | 251 | 21.5% | 13.5% |
| Palau | .pw | 302 | 18.5% | 9.6% |
| China | .cn | 10,881 | 15.1% | 8.2% |
| Cocos Islands | .cc | 4,630 | 15.0% | 9.0% |
106 countries have at least 200 measured domains under their ccTLD in this snapshot, and 89 of them are shaded on the map. Norway leads: 78.4% of measured .no domains publish a valid DMARC record, against 15.1% for .cn at the other end.
A domain counts toward a country by its TLD alone: every .de domain is Germany, wherever it is hosted or owned. Domains on gTLDs like .com carry no country signal and sit outside the map, which is what the TLD table below is for. ccTLDs registered mostly from outside their country, .io, .ai, .co, .tv and .me among them, are measured and tabled but never shaded, rather than coloring the wrong place. Countries with fewer than 200 measured domains stay uncolored. A few too small to draw at this size, Singapore and Hong Kong among them, are marked with a dot in the same colors.
Adoption by TLD
The same measurement with the country question dropped, so the generic TLDs the map cannot show are here too. Every TLD with at least 1,000 measured domains, biggest first.
| TLD | Measured | Valid DMARC | At enforcement |
|---|---|---|---|
| .com | 428,071 | 47.6% | 23.7% |
| .net | 48,955 | 35.9% | 18.6% |
| .org | 38,845 | 54.7% | 26.7% |
| .ru | 37,220 | 39.0% | 20.5% |
| .uk | 27,738 | 42.4% | 22.8% |
| .de | 27,159 | 59.7% | 30.6% |
| .nl | 18,896 | 36.6% | 20.0% |
| .br | 16,992 | 61.7% | 26.9% |
| .jp | 16,967 | 56.4% | 12.7% |
| .in | 12,070 | 48.6% | 25.2% |
| .cn | 10,881 | 15.1% | 8.2% |
| .fr | 10,705 | 63.5% | 29.4% |
| .it | 10,344 | 63.9% | 23.2% |
| .io | 10,113 | 52.4% | 30.7% |
| .pl | 9,006 | 65.6% | 33.4% |
| .au | 8,418 | 72.4% | 40.8% |
| .co | 7,113 | 51.5% | 27.7% |
| .xyz | 6,827 | 10.8% | 5.1% |
| .ca | 6,236 | 60.9% | 32.4% |
| .eu | 5,897 | 53.2% | 27.6% |
| .info | 5,419 | 30.8% | 15.0% |
| .es | 5,409 | 64.7% | 34.5% |
| .top | 5,173 | 5.5% | 2.9% |
| .cz | 4,920 | 63.0% | 26.6% |
| .shop | 4,869 | 38.4% | 3.7% |
.com is the largest registry in the snapshot at 428,071 measured domains, 47.6% of them publishing a valid DMARC record. 61 further TLDs clear the 1,000-domain bar and are not listed here; the full set is in the published aggregates.
A domain counts under the last label of its name, so a .co.uk domain is counted under .uk. Shares divide by measured domains, the rows whose DMARC lookup answered, which is the same denominator the rest of this report uses.
Reports that go nowhere
The rua tag on a DMARC record names the addresses receivers send aggregate reports to. A record with a rua on it looks like monitoring. Whether anything can arrive depends on a second record, and the destination has to publish that one.
128,980 domains publish a p=none DMARC record whose reporting address is missing, dead, or never authorized. That's 12.9% of measured domains and 27.5% of every valid record in the scan. We call it monitoring theater. The record passes a presence scan as adoption, and no report it asks for ever arrives.
The scan reads DNS, so it can see whether a destination can receive a report. It can't see whether anyone reads one. The monitoring tier means a report can arrive, and nothing stronger.
When a rua address sits on another organization's domain, RFC 7489 requires an authorization TXT record at <domain>._report._dmarc.<rua-host>. A receiver that finds no DMARC version tag there must not send the report, and it raises no error to the domain that named the address. 34,506 domains in this scan name at least one outside address that never authorized them. Reports to that address never arrive. Some of those domains also name an address that does work, and those reports still arrive.
29,782 domains name only destinations that are provably dead. They're the part of the unauthorized group with no working address beside the dead one. Neither group covers the whole dead tier, because a p=none record with no rua tag is dead too: it names no destination at all.
192,507 domains name at least one outside reporting address. 143 of them name at least one address the scan could not resolve to a verdict, which counts as neither authorized nor dead. A domain is counted once in each category it has an address in, so the categories overlap. At least 2,066 domains name more than one kind, which is why the counts sum past the total.
SPF
DMARC passes on SPF or DKIM alignment. An SPF record that receivers refuse to evaluate takes half the alignment surface with it.
639,844 of the 1,000,296 measured domains publish an SPF record. 36,735 of those records (5.7%) return permerror, which means receivers refuse to evaluate the record at all. 16,591 exceed the ten-lookup limit and 10,474 publish more than one record. The scan also flags an include that points at a name with no SPF record, and an include or redirect loop. It doesn't parse for other syntax errors, so the permerror count is a floor.
How the records end
| Ending | Domains | Share |
|---|---|---|
| -all (fail) | 236,546 | 39.2% |
| ~all (softfail) | 332,221 | 55.1% |
| ?all (neutral) | 15,856 | 2.6% |
| +all (pass everything) | 427 | 0.1% |
| no all mechanism | 18,059 | 3.0% |
Shares are of the 603,109 domains with a usable SPF record. Records that already permerror are left out, because receivers never reach their final mechanism.
US federal .gov domains
Every registered federal .gov zone, from CISA's public registry: executive, legislative and judicial. CISA's Binding Operational Directive 18-01 required executive-branch domains that send mail to reach p=reject by October 2018. This list is wider than that, and its parked and redirect names have no mail to protect, so its reject share is not a compliance rate.
| Tier | Domains | Share |
|---|---|---|
| No record | 198 | 15.0% |
| Broken | 6 | 0.5% |
| Dead reporting | 25 | 1.9% |
| Monitoring | 20 | 1.5% |
| Partial enforcement | 9 | 0.7% |
| Enforced | 1,063 | 80.5% |
The enforced count, 1,063, sits above the reject count, 1,046, because 26 quarantine domains join the tier and 9 weakened domains leave it.
The federal reject share is 79.2% (1,046 domains). Across the whole scan it's 11.8% (118,165 domains), and that figure already includes this cohort. 198 federal domains (15.0%) publish no DMARC record, and 25 publish a dead one. Some of those are parked names that send no mail. The registry doesn't say which.
1,321 domains in the cohort. 79.2% publish p=reject and 81.2% publish quarantine or reject.
Who is named to receive the reports
The rua tag is the one part of a DMARC record that names a collector, so counting those names shows which platforms are named to receive reports. A name in DNS isn't proof a report arrives, and this isn't advertised market share. The largest named collector is Cloudflare, on 27,809 domains, then Brevo at 15,817 and Valimail at 14,379.
Free collectors matter here. A working rua is exactly what moves a record from dead to monitoring, and a free one means an operator doesn't need a contract to get a first report. Cloudflare, the largest collector in the scan, includes collection with the domain. Postmark's free DMARC Digests is the sixth largest collector.
Each bar counts the domains whose rua list names a destination on that platform, once per domain. A domain naming two platforms counts for both.
140,950 matches across 27 platforms. The largest destination matching no platform in the list is axa.com, named by 3,904 domains. A destination like this is usually a company collecting reports for its own portfolio of domains rather than a vendor.
MTA-STS, TLS-RPT and BIMI
Each of these three records sits far behind DMARC.
As shares of the 1,000,296 measured domains: 1.0% MTA-STS, 1.1% TLS-RPT and 1.7% BIMI.
Methodology
| Population | Tranco list JZ8PY, 1,000,000 domains, plus the cohort frames below. 1,000,766 rows were scanned in total. |
|---|---|
| Frames | tranco:
1,000,000 domains from https://tranco-list.eu/list/JZ8PY cohort:us-federal-gov: 1,321 domains from research/cohorts/us-federal-gov.csv 555 cohort domains also rank in the Tranco million and were scanned once, which is why the frames sum to more than the row count. |
| Collection window | 2026-08-20T07:24:24.037Z to 2026-08-21T08:47:10.620Z. Aggregated 2026-09-03T16:20:11.913Z. |
| Resolver | Queries went to unbound:5353, with retries against 1.1.1.1, 8.8.8.8. |
| Error rate | 470 DMARC lookups failed after retries, which is 0.05% of the scanned rows. Those rows are excluded from every share on this page. |
| Public Suffix List | Whether a reporting address is external is decided by comparing organizational domains against the Public Suffix List fetched 2026-08-19T18:23:44.687Z, sha256 780c7961bd74b9ee. The list is pinned per snapshot so a re-run classifies destinations the same way. The list is used with its private section, so two customers of one platform that publishes a private rule count as external to each other, and a report address on a sibling tenant needs its own authorization record. |
| Multiple records | More than one v=DMARC1 record at _dmarc is invalid per RFC 7489. This scan scores those 4,477 domains as broken. |
| Vendor classification | Each rua destination is classified by the host that receives the mail, so a platform reselling another platform's collection counts under the receiving host. Hosts the map does not recognize stay unmatched rather than guessed. |
| Absence versus failure | NXDOMAIN or an empty TXT answer is absence. A timeout or SERVFAIL after retries is unknown. Failures are never counted as absence. |
| Independent comparison | The adoption tracker at dmarcdkim.com/dmarc-adoption updates daily over its own population of 1.35 million accumulated domains. When we checked it in August 2026 it reported 11.4% at full reject, where this scan finds 11.8% (118,165 domains) at p=reject. This scan's count includes 1,858 rejects weakened by pct and 7,758 with a weaker sp, which the tier framework scores as partial. The two measurements agree closely on policy rates. Their adoption headlines are not directly comparable, because the tracker measures an accumulated set of domains and this scan measures one pinned Tranco snapshot. We haven't compared the two populations. |
| Scanner | Version a551ef2-dirty. |
Limitations
The scan reads what domains publish in DNS. Nothing here is a delivered-mail pass rate or an actual rejection.
A domain whose reporting address couldn't be resolved to a verdict counts as neither authorized nor dead. That holds the headline figures down, not up.
- This edition covers one scan window, so it reports a level and not a trend.
- DNS at a million names still fails. 470 lookups ended in error after retries and are excluded rather than scored as no DMARC. The flakiness that remains is a bound on every rate.
- rua authorization was checked at scan time only. A destination that authorized the next day, or revoked the next day, isn't in this snapshot.
- The named cohort is one list so far: 1,321 US federal domains. Other planned cohorts aren't in this edition.
- Vendor classification of rua hosts is incomplete. Unmatched destinations will move into named platforms in later revisions.
The data
- aggregates.json: every count and share on this page, as published. Dates, list ids and the scanner version are in the manifest next to it.
- Data repository: the per-snapshot files.
Using this
The aggregate data is published under CC BY 4.0. Reuse it, including commercially, with attribution. Suggested citation: