Defaults.Exposed

Defaults.ExposedReports

DMARC pct Tag: 476,000 Domains Water Down Enforcement

Published

Figures as of 2026-08-16 · methodology v9. This is a recurring report; each edition re-measures the same population so the numbers can be tracked over time. All figures are aggregate — we never publish an individual business’s grade or name an individual registrant’s domain.

The headline: 476,465 domains publish enforcement their own record waters down

Across 75.5 million DMARC records parsed in the August 2026 census, at least 476,465 domains publish an enforcement policy — quarantine or reject — and then weaken it in the same line of text, using a pct value below 100. Another 10,940 of them have turned the dial all the way to zero: a record that reads as enforcement and enforces nothing.

The pct tag is DMARC’s sampling dial. It tells receiving mail servers what percentage of failing messages the published policy should actually apply to. It exists for a good reason: it lets a cautious admin ramp from monitoring to full enforcement in stages. The problem is the ramp has a parking brake, and a measurable population of domains set it years ago and walked away.

Most DMARC coverage — ours included — sorts the world into three buckets: none, quarantine, reject. Our DMARC enforcement report counts those buckets across the graded web. This report looks inside the enforcement buckets at the tag almost nobody audits, because a p=quarantine record at pct=10 is not a quarantine policy. It is a 90%-delivery policy wearing a quarantine label.

Key numbers

What does the DMARC pct tag actually do?

A DMARC record’s p= tag tells receivers what to do with mail that fails authentication: none (deliver, just report), quarantine (spam-folder it), or reject (refuse it). The pct tag, defined alongside the rest of DMARC in RFC 7489 (2015 — industry context, not census data), adds sampling: apply the policy to this percentage of failing messages, chosen at random by the receiver.

The subtle part is what happens to the messages that fall outside the sample. They do not get a free pass to the inbox by definition — they get the next policy down. Under p=reject; pct=50, the unsampled half is treated as quarantine. Under p=quarantine; pct=50, the unsampled half is treated as none: delivered normally, exactly as if the domain published no enforcement at all.

That asymmetry is the whole story of this report. A weakened reject still catches everything one way or another — half refused, half spam-foldered. A weakened quarantine leaks. Every percentage point below 100 on a quarantine policy is a percentage point of spoofed, authentication-failing mail that receivers are instructed to deliver as if nothing were wrong. And 90% of the watered-down cohort is quarantine.

The design intent was a ramp: publish p=quarantine; pct=5, watch your reports for a week, move to 25, then 50, then 100, then repeat at reject. Used that way, pct is one of the more thoughtful pieces of the standard. Our census can’t observe intent. What it can observe is where the dials are set on one day in August 2026 — and a dial that was meant to be turned weekly does not naturally come to rest at 10.

How many domains weaken their own DMARC policy?

Of the 75.5 million DMARC records the census could parse a policy from, 35.0 million publish enforcement. Here is where their dials sit:

PolicyRecords parsedpct < 100Share weakened
p=quarantine19,129,666428,9952.24%
p=reject15,853,95247,4700.30%
All enforcement34,983,618476,4651.36%

Two readings of that table are both true. The optimistic one: 98.6% of enforcement records run at full strength — the vast majority of domains that made it to quarantine or reject either never touched the dial or finished the ramp. The other one: nearly half a million domains sit in a state their own security tooling probably reports as “DMARC enforced,” and quarantine domains are more than seven times more likely than reject domains to be in it.

That gap makes sense once you remember the downgrade rule. Reject publishers tend to be the domains that finished the journey; quarantine is where ramps live — and where ramps stall. (A further 4.7 million enforcement records write pct=100 explicitly. That is harmless: it restates the default.)

Where is the dial actually set?

The distribution of sub-100 values is not smooth. It clusters hard at the round numbers, and one value dominates everything:

pct valueEnforcement recordsShare of weakened cohort
90218,42045.8%
5052,49611.0%
25–4948,96410.3%
11–2419,0004.0%
51–8914,5033.0%
91–991,9370.4%
1063,36013.3%
1–946,8459.8%
010,9402.3%

Buckets are our grouping of the exact values in the census data; every underlying figure is a per-value count.

The pct=90 spike deserves a closer look. It is not just a popular number — 208,867 of those 218,420 domains publish the identical three-tag combination: p=quarantine; pct=90; sp=none. Fingerprints like that almost never come from two hundred thousand admins independently making the same choice. They come from a template — a hosting panel, a setup wizard, a widely copied tutorial — stamped out at scale. Our census sees the record, not its author, so we can’t attribute it, but the shape is unmistakable: one default, replicated across a fifth of a million domains, each quietly delivering one in ten failing messages and exempting subdomains from enforcement entirely (sp=none — a back door we examine separately).

At the other end, a quarter of the weakened cohort — 121,145 domains — runs at pct=10 or below. At those settings the label and the behaviour have almost nothing to do with each other: a p=quarantine; pct=5 record instructs receivers to spam-folder one failing message in twenty and deliver the other nineteen normally.

pct=0: enforcement in name only

10,940 enforcement records set pct=0. Read literally, that instructs receivers to apply the published policy to nothing: every failing message gets the downgrade treatment, which for the 6,185 quarantine records means full normal delivery, indistinguishable in effect from p=none.

To be fair to some of these publishers: p=quarantine; pct=0 has a life as a deliberate operational trick. Because some mailing-list software checks only the policy tag when deciding whether to rewrite sender addresses, publishing quarantine-at-zero-percent triggers that compatibility behaviour without any mail actually being quarantined — a known technique from deliverability practice (industry knowledge, not something our census can confirm per record). Some fraction of the 10,940 chose this state on purpose.

But the trick only explains quarantine records, and 4,755 of the zero-percent records say p=reject; pct=0 — a configuration with no known operational upside, since the unsampled remainder still lands at quarantine. However the domains got here, the census reading stands: nearly eleven thousand records announce an enforcement policy and then, in the same seventy characters, suspend it.

The dial connected to nothing

The strangest finding in the data is not on the enforcement side at all. 2,422,718 p=none records carry a pct tag. On a monitoring policy, pct is inert — none downgraded is still none, so the tag changes nothing regardless of its value. 2.28 million of these write pct=100, harmless boilerplate probably copied from a generator. But 143,256 publish p=none with a pct below 100 — including 14,705 at pct=0, domains meticulously specifying that zero percent of their mail should receive no enforcement.

The census also caught 57 domains publishing pct=587. The tag takes 0 to 100; receivers ignore an invalid value and fall back to the default. Fifty-seven zones on the public internet have carried an impossible percentage through at least one census round, which tells you exactly how often these records get reread after the day they were written.

None of this inert-tag population is a security hole. It is something more familiar: evidence that DMARC records are written once, by tools or from tutorials, and then not understood by the people who own them. The same copy-paste culture that parks 143 thousand meaningless dials on monitoring records is the culture that parked 208 thousand quarantine records at 90%.

What should the dial say?

For a domain that has finished deploying, the answer is short: nothing. Omit pct entirely — the default is 100 — or state pct=100 if your tooling insists. The tag has one legitimate job, and that job is temporary: a ramp position held for days or weeks while reports confirm nothing legitimate is failing, then raised.

If your record says p=quarantine with any pct below 100 and you can’t name the person currently watching the reports, the ramp has stalled and the honest next step is one of two moves: finish it (raise pct, then move to reject), or accept that you are running partial enforcement and read your record accordingly. What the data argues against is the third state — the one 476,465 domains are in — where the record says one thing, the mail flow does another, and nobody is looking. Checking takes ten seconds: your DMARC record is public, and the dial is right there in the text.

How we measured this


What this means

For IT managers and security teams, the practical consequence is this: a DMARC report from your tooling that says “quarantine enforced” may be telling you something that is technically true and operationally misleading at the same time. If the underlying record carries a pct value below 100, the policy is partial — and in the most common case (quarantine at pct=90), nine in ten spoofed messages are directed to the inbox path exactly as if no enforcement existed. The dashboard green-light is accurate about the record; it is not accurate about the protection.

The 208,867 domains sharing the identical fingerprint p=quarantine; pct=90; sp=none point to a specific operational hazard: configuration tools and hosting panels that pre-fill a “safe-looking” record and then move on. If your domain’s DMARC record was created by a wizard or copied from a template more than a few months ago, checking the actual pct value takes ten seconds and the result will tell you whether the ramp ever moved. A value below 100 that nobody on the current team remembers setting is almost certainly a stalled ramp, not a live testing window.

For business owners, the stakes are direct: an email impersonating your domain to a supplier or customer will pass right through a watered-down quarantine policy on the percentage of messages that fall outside the sample. Fake-invoice fraud does not require bypassing your enforcement — it only needs the receiving mail server to follow the downgrade instruction your own record provides. The fix is free and involves one DNS record update.


Data to cite


FAQ

What does pct mean in a DMARC record? pct tells receiving mail servers what percentage of authentication-failing messages your published policy applies to, sampled at random. The default is 100. Messages outside the sample get the next policy down: reject falls to quarantine, quarantine falls to none (normal delivery). In the August 2026 census, 476,465 enforcement records set it below 100.

Is pct=90 good enough for DMARC? It means one in ten spoofed messages that fail authentication is delivered as if your policy didn’t exist — and under p=quarantine, delivered to the inbox path, not the spam folder. The census found 218,420 domains at exactly pct=90, the single most common weakened setting, which points at templates rather than deliberate choices. If you finished testing, remove the tag.

Does pct do anything with p=none? No. Sampling downgrades a policy to the next level down, and there is nothing below none, so the tag is inert on a monitoring record. The census still found 2,422,718 p=none records carrying a pct tag, 143,256 of them with values below 100 that change nothing.

Why would anyone set pct=0? p=quarantine; pct=0 is a known deliverability trick: some mailing-list software applies sender-rewriting compatibility behaviour based on the policy tag alone, so this record triggers it without quarantining any mail (industry knowledge). But the census found 4,755 records saying p=reject; pct=0, which has no such upside — and all 10,940 zero-percent enforcement records share the same practical property: the enforcement they announce is switched off.

How do I check my own pct setting? Your DMARC record is public DNS: look up the TXT record at _dmarc.yourdomain and read the tags. No pct tag means 100, which is what a finished deployment should say. Any explicit value below 100 means your enforcement is sampled — and if it has been sitting there longer than a testing window, your record and your actual protection have drifted apart.

How does a stalled pct ramp affect my spoofing exposure? Under p=quarantine, every percentage point below 100 is a percentage point of failing messages that get delivered normally. At pct=10 — held by 63,360 domains — 90% of spoofed messages that fail authentication are delivered to the inbox as if no DMARC enforcement exists. The label says quarantine; the mail flow says delivery.

What is the trend compared to previous census rounds? This is the first census round in which the pct tag distribution has been reported at this level of detail. Future editions of this report will track whether the stalled cohort grows or shrinks. The count of 476,465 weakened records is the August 2026 baseline.


See where your own domain stands

Check your domain free at defaults.exposed — see exactly what your DMARC pct value is set to and whether your enforcement is running at full strength or silently diluted. Takes 30 seconds. No account needed.

Read the flagship census report: The State of Domain Security 2026 →

Aggregate data only. Data stored and processed in the EU.


How to cite this report

Press / blog: defaults.exposed (2026). DMARC pct Tag: 476,000 Domains Water Down Enforcement. defaults.exposed August 2026 Domain Security Census (432,127,908 domains scanned, asOf 2026-08-16). Retrieved from https://defaults.exposed/en/articles/dmarc-pct-the-forgotten-dial

Academic: defaults.exposed. (2026, August 18). DMARC pct Tag: 476,000 Domains Water Down Enforcement. In defaults.exposed Domain Security Census: August 2026. https://defaults.exposed/en/articles/dmarc-pct-the-forgotten-dial

In-line citation: (defaults.exposed, August 2026 Domain Security Census, n=75,543,004 DMARC records)


About the defaults.exposed August 2026 Census

The defaults.exposed Domain Security Census is a recurring independent measurement of the public domain namespace. The August 2026 edition scanned 432,127,908 domains between 1–16 August 2026 and graded 376,928,781 of them using methodology v9. Scans are conducted from EU infrastructure. No individual domain, registrant, or business is named in any report. All figures are aggregate distributions. Data is stored and processed within the EU.

Methodology: defaults.exposed/en/articles/domain-security-scoring-methodology-v9 Full census report: defaults.exposed/en/articles/the-state-of-domain-security-2026