The Index · measured daily from public DNS
94% of the best-known senders enforce DMARC.
Read from public DNS on 4 Aug 2026 across 98 domains in seven sectors. Every percentage on this page carries the number it was calculated from, the roster is published in full, and each domain’s own reading is printed below so the aggregate can be checked rather than believed.
At quarantine or reject
94%
92 of 98
Still at p=none
4%
4 of 98 publish a policy that enforces nothing
No DMARC at all
2%
2 of 98
Collecting rua reports
97%
95 of 98 would find out if something broke
One reading so far. The series begins once there are two — this page will not draw a trend through a single point.
By sector
| Sector | n | Enforcing | p=none | No DMARC | rua |
|---|---|---|---|---|---|
| Ecommerce & DTCDirect-to-consumer brands, the heaviest lifecycle senders in the index. | 18 | 72% | 22% | 6% | 94% |
| FinanceThe category with the strongest regulatory pressure on authentication. | 12 | 100% | 0% | 0% | 100% |
| MarketplacesPlatforms sending on behalf of third parties, the hardest alignment problem. | 12 | 92% | 0% | 8% | 92% |
| Media & publishingNewsletter-first businesses, where the list is the product. | 12 | 100% | 0% | 0% | 100% |
| RetailLarge multi-channel retailers with long-lived legacy sending estates. | 14 | 100% | 0% | 0% | 100% |
| SoftwareProduct and transactional senders, usually the most technically staffed. | 18 | 100% | 0% | 0% | 94% |
| Travel & hospitalityHigh transactional volume, and the most phished category in the index. | 12 | 100% | 0% | 0% | 100% |
What this does not claim
An unreadable SPF is not a failure. 31 of 98 publish a macro record or delegate their sender list to a hosted manager. Those cannot be expanded by reading DNS — not by us, not by anyone — so they are excluded from every statistic about who authorises whom rather than counted as broken. This site shipped that mistake once, publicly, against three named brands.
We do not publish a “misconfigured” rate, and here is why. 26 of the 67 readable domains publish DKIM keys for a platform their SPF does not name. That is a real count, and it is not a fault rate. SPF is evaluated against the envelope domain, and every major platform sends with its own bounce domain by default — so on those messages the sender’s SPF is never consulted and DMARC passes on DKIM alignment alone, exactly as intended. Stripe, Shopify and Figma all look like this. A benchmark that counted them as broken would be wrong about the best-run senders in the index, so this one does not.
DNS is not deliverability. A domain at p=reject with perfect records can still be sending mail nobody asked for. This measures what a sender has published, which is the floor, not the ceiling.
No sender is ranked. There is no leaderboard and no score. The roster was fixed before the first reading and does not change because a number moves.
Every domain, as measured
The aggregate above is calculated from exactly these rows. Check our arithmetic.
| Domain | DMARC | SPF | DKIM | Notes |
|---|---|---|---|---|
| aesop.com | p=reject | -all | 2 | |
| allbirds.com | p=quarantine | ~all | 7 | SPF not readable from DNS |
| away.com | absent | ~all | 1 | |
| bombas.com | p=reject | ~all | 2 | |
| brooklinen.com | p=quarantine | ~all | 1 | |
| casper.com | p=reject | ~all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| chubbies.com | p=none | ~all | 3 | |
| everlane.com | p=reject | ~all | 4 | |
| glossier.com | p=reject | ~all | 6 | SPF not readable from DNS |
| gymshark.com | p=reject | ~all | 5 | SPF not readable from DNS |
| harrys.com | p=quarantine | ~all | 5 | |
| lush.com | p=none | ~all | 3 | |
| oatly.com | p=reject | -all | 5 | |
| patagonia.com | p=none | ~all | 6 | signs with 2 platforms its SPF does not name — normal if that platform sends with its own return path |
| peloton.com | p=quarantine | -all | 4 | |
| represent.com | p=quarantine | absent | 0 | |
| ruggable.com | p=none | no all | 4 | |
| warbyparker.com | p=reject | ~all | 3 | |
| americanexpress.com | p=reject | -all | 0 | |
| barclays.co.uk | p=reject | -all | 0 | SPF not readable from DNS |
| chase.com | p=reject | -all | 0 | SPF not readable from DNS |
| coinbase.com | p=reject | -all | 2 | |
| hsbc.co.uk | p=reject | ~all | 0 | SPF not readable from DNS |
| klarna.com | p=reject | -all | 3 | SPF not readable from DNS |
| monzo.com | p=reject | -all | 3 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| n26.com | p=reject | ~all | 4 | |
| paypal.com | p=reject | ~all | 2 | |
| revolut.com | p=quarantine | ~all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| vanguard.com | p=reject | ~all | 2 | SPF not readable from DNS |
| wise.com | p=reject | ~all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| amazon.com | p=quarantine | -all | 0 | |
| asos.com | p=reject | -all | 3 | |
| deliveroo.co.uk | p=reject | ~all | 3 | |
| depop.com | p=reject | ~all | 4 | |
| doordash.com | p=reject | ~all | 6 | SPF not readable from DNS |
| ebay.com | p=reject | ~all | 6 | |
| etsy.com | p=reject | -all | 4 | |
| justeat.co.uk | absent | absent | 0 | |
| uber.com | p=quarantine | ~all | 6 | SPF not readable from DNS |
| vinted.com | p=quarantine | -all | 3 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| wayfair.com | p=quarantine | -all | 6 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| zalando.com | p=reject | -all | 1 | |
| bbc.co.uk | p=reject | ~all | 0 | |
| bloomberg.com | p=reject | -all | 0 | |
| economist.com | p=quarantine | ~all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| ft.com | p=reject | -all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| medium.com | p=reject | ~all | 4 | |
| npr.org | p=reject | -all | 5 | SPF not readable from DNS |
| nytimes.com | p=reject | ~all | 5 | SPF not readable from DNS |
| substack.com | p=reject | ~all | 1 | |
| theatlantic.com | p=reject | -all | 3 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| theguardian.com | p=reject | -all | 2 | |
| vox.com | p=reject | ~all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| wired.com | p=reject | ~all | 5 | signs with 2 platforms its SPF does not name — normal if that platform sends with its own return path |
| adidas.com | p=reject | -all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| costco.com | p=reject | -all | 4 | SPF not readable from DNS |
| decathlon.com | p=reject | -all | 9 | SPF not readable from DNS |
| hm.com | p=reject | ~all | 4 | SPF not readable from DNS |
| ikea.com | p=reject | -all | 2 | |
| johnlewis.com | p=quarantine | -all | 0 | SPF not readable from DNS |
| lego.com | p=reject | -all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| marksandspencer.com | p=reject | -all | 2 | SPF not readable from DNS |
| nike.com | p=reject | ~all | 3 | SPF not readable from DNS |
| sephora.com | p=reject | -all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| target.com | p=reject | ~all | 6 | SPF not readable from DNS |
| uniqlo.com | p=reject | ~all | 7 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| walmart.com | p=reject | ~all | 5 | SPF not readable from DNS |
| zara.com | p=reject | -all | 0 | SPF not readable from DNS |
| 1password.com | p=quarantine | ~all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| asana.com | p=quarantine | -all | 1 | SPF not readable from DNS |
| atlassian.com | p=reject | ~all | 4 | SPF not readable from DNS |
| canva.com | p=reject | -all | 6 | signs with 2 platforms its SPF does not name — normal if that platform sends with its own return path |
| cloudflare.com | p=reject | -all | 3 | |
| dropbox.com | p=reject | ~all | 0 | SPF not readable from DNS |
| figma.com | p=quarantine | -all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| github.com | p=quarantine | ~all | 6 | |
| hubspot.com | p=reject | no all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| klaviyo.com | p=reject | ~all | 4 | |
| linear.app | p=reject | ~all | 1 | |
| mailchimp.com | p=reject | ~all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| notion.so | p=quarantine | ~all | 0 | |
| shopify.com | p=reject | ~all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| slack.com | p=reject | -all | 0 | |
| stripe.com | p=reject | ~all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| vercel.com | p=quarantine | ~all | 4 | |
| zoom.us | p=reject | ~all | 5 | SPF not readable from DNS |
| airbnb.com | p=reject | -all | 2 | |
| booking.com | p=reject | -all | 3 | SPF not readable from DNS |
| britishairways.com | p=reject | ~all | 1 | SPF not readable from DNS |
| delta.com | p=reject | -all | 4 | SPF not readable from DNS |
| easyjet.com | p=reject | ~all | 4 | SPF not readable from DNS |
| expedia.com | p=reject | -all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| hilton.com | p=quarantine | -all | 4 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| lufthansa.com | p=reject | -all | 0 | |
| marriott.com | p=reject | -all | 5 | signs with 1 platform its SPF does not name — normal if that platform sends with its own return path |
| ryanair.com | p=reject | ~all | 0 | SPF not readable from DNS |
| trainline.com | p=reject | -all | 2 | |
| united.com | p=reject | ~all | 2 | SPF not readable from DNS |
The whole index as JSON →The blocklist censusHow we measureTell us we are wrong