Ad Blockers: How Much Revenue You Lose and Fixes
How ad blockers cut website ad income, how to measure your own blocked share, and how Google's ad blocking recovery messages work now.
10 min read · Updated
Nobody can tell you how much ad revenue your site loses to ad blockers, because the share of blocked visits changes with your audience, your topic, your devices and your countries. The only number that counts is the one measured on your own site, and AdSense will measure it for you at no cost: go to Privacy & messaging, open Ad blocking recovery, and paste the ad blocking tag into your page head.
The loss itself is easy to describe. A visitor with a blocker installed loads your page, the blocker stops the request to the ad network, and the ad slot stays empty. No impression, no revenue, and often no record of the visit in your ad dashboard either.
This guide covers how blocking works, three ways to measure it, a worked example with modelled numbers, how Google's ad blocking recovery messages are set up today, and the other options (Acceptable Ads, lighter pages, income that does not depend on display ads). We have left out any "X% of internet users block ads" statistic on purpose. Quoted percentages tend to come from vendors selling a fix, and none of them describe your readers.
How ad blockers actually work
Most blockers run on filter lists. A list is a long set of rules that says "do not load anything from this ad domain" or "hide any element that looks like this". EasyList is the best known, and its maintainers say it was tested with Adblock Plus, AdBlock, uBlock Origin and AdGuard. When your page asks a blocked domain for an ad, the browser extension cancels the request before it leaves.
Two details matter for publishers.
First, the block usually happens at the request. Your page still loads, your analytics script may still run, and the ad code is simply told no. That is why analytics and ad reports can disagree about how many people visited.
Second, blockers differ in how aggressive they are. Some let through ads that meet the Acceptable Ads standard (more on that below), some block trackers as well as ads, and some work at the network or DNS level rather than inside the browser. A blocker on a home router can affect every device in the house, including phones that never installed anything.
In-app ads are a different case. A browser extension has no way to look inside an app, so the extension-based blocking discussed here is a website problem. Network-level filters can still touch app traffic, so if fill drops for no clear reason, fill rate explained is a good place to start looking.
What a blocked visit really costs you
A blocked visit costs the ad revenue for that page, and sometimes more than that. Affiliate banners and sponsor graphics can be hidden by the same rules. Some consent or newsletter pop-ups get caught as collateral.
It helps to be honest about the other side too. A visitor who blocks ads would, in many cases, not have clicked them. Even so, the impression has value on its own, because most display ads are paid per thousand views. A blocked visitor is a lost impression whether or not they would have clicked.
Where the loss lands depends on what you earn per visit. A site making $7 per 1,000 pageviews loses seven dollars for every thousand blocked pageviews. A site making $17 loses seventeen. Our website RPM by niche guide shows how wide that range is, and the AdSense revenue calculator lets you test your own numbers.
Three ways to measure your blocked share
Let AdSense detect it
This is the cleanest method. In AdSense, go to Privacy & messaging > Ad blocking recovery > Tagging and copy the tag code. Paste it between the head tags of your site, then create a message and leave it as a draft. Google's help page says AdSense starts detecting ad blockers and generating reporting metrics even when the message is unpublished, so you can collect data for a few weeks before showing anyone anything. The tagging instructions list the exact steps, and WordPress sites running Google's Site Kit plugin can deploy the tag without touching code.
Pages you exclude from a message still count towards the ad blocking rate, according to Google's help page on creating a message, so the figure reflects your whole site, not just the pages you target.
Compare analytics with the ad network
Take pageviews from your analytics tool for a month. Take the page views AdSense reports for the same month. If the ad script never ran, AdSense never counted the visit, so the ad network figure is usually lower. The gap is a rough upper bound on the blocked share, and it also includes bots filtered out, slow loads where the visitor left before ads ran, and tracking differences between the two tools.
Be careful with homemade detection scripts
Writing a script that checks whether a bait element got hidden feels easy. The IAB Tech Lab, which has an ad blocking working group, notes that many blockers are built to resist detection and that home-built tools give inconsistent blocking rates. If a number from a custom script looks suspiciously high or low, that may be the script and not your audience.
A worked example
This is an example with assumptions, not a statistic. Say a site has 100,000 analytics pageviews a month from a Tier 1 audience and earns the AdSense benchmark of $7.00 per 1,000 pageviews in our modelled estimates. Assume, for the sake of the sum, that 20% of visits come from browsers that block the ads.
| Scenario | Views with ads | Monthly revenue |
|---|---|---|
| No blocking | 100,000 | $700 |
| 20% blocked | 80,000 | $560 |
| Message wins back 5% of blocked visits | 81,000 | $567 |
| Message wins back 10% of blocked visits | 82,000 | $574 |
| Message wins back 20% of blocked visits | 84,000 | $588 |
The blocked share costs $140 a month in this example. A recovery message that persuades one blocked visitor in ten to allow ads brings back $14. Even the optimistic row recovers $28.
Scale the same assumptions to 1,000,000 pageviews and every figure grows tenfold: the loss is $1,400 and a 10% recovery is worth $140. None of the 5%, 10% and 20% rows is a forecast. What the table shows is the shape: even a generous recovery rate wins back a small slice of what blocking removes.
Ad blocking recovery messages in AdSense, step by step
Google's recovery tool used to live inside the separate Funding Choices product. It now sits in AdSense under Privacy & messaging, which includes the integrated Funding Choices functionality. The name survives in code, since the Custom Choice function is still called googlefc.controlledMessagingFunction. The same message type is also documented for Google Ad Manager users in Google's overview of ad blocking recovery messages.
What the message is: a single screen with your site logo, an Allow ads button and, if you want one, a Custom Choice button. The feature is limited to websites viewed in desktop browsers. It does not appear in mobile apps or mobile browsers. Google has also ended support for one-click allowlisting, so the message now shows visitors instructions for allowing ads on your site rather than doing it for them.
The setup, as Google documents it:
- Add the ad blocking tag to your page head (Privacy & messaging > Ad blocking recovery > Tagging).
- Go to Ad blocking recovery > Create message.
- Select sites. With no page inclusions, the message applies to the whole site, subdomains included. Adding an inclusion limits the message to those pages and excludes all others. You can add up to five inclusions or exclusions per domain, and exclusions override inclusions.
- Pick a default language and any extra languages that match your site.
- Optionally switch on Custom choice, which needs the
googlefc.controlledMessagingFunctionfunction in place before you publish. - Choose a placement: a centered modal visitors can dismiss, a centered modal they cannot, or a bottom-pinned bar they can close.
- Review account settings, including the section for Acceptable Ads users, then publish or save as a draft.
Before your first message goes live, Google requires that account settings review. To check how a message looks, append ?fc=alwaysshow&fctype=ab to a page address; that parameter ignores ad block detection, though the message has to be published and the AdSense code has to be on the page. Results appear in a Privacy & messaging report, where you can add the ad blocking recovery metrics and dimensions.
Our advice, which is judgment and not data: start with the dismissible bottom bar, not a modal you cannot close. A wall that traps readers can cost you the visitor and the goodwill, and it pairs badly with the page-experience concerns in ads and Core Web Vitals.
Consent messages live in the same Privacy & messaging area, so if you also show a cookie or GDPR banner, plan the two together. Consent messages for ads covers that side, and stacking two overlays on a first visit annoys people.
Acceptable Ads
Acceptable Ads is a published standard that some blockers, Adblock Plus among them, honor by letting through ads that meet it. The standard sets limits on placement, distinction and size. Ads must be recognizable as ads and marked with the word "advertisement" or an equivalent. On desktop, ads may take up no more than 15% of the visible page above the fold and 25% below it. Pop-ups, pop-unders, overlays, expanding ads, autoplay sound or video and rich media cannot be allowlisted.
Whether to apply depends on your layout. A clean site with a few clearly labelled units may already be close. A page built around sticky video and interstitials will not qualify without a redesign, and then the sensible question is whether the redesign pays for itself. AdSense also asks you to review a setting for Acceptable Ads users before you publish your first recovery message, which is why it shows up in the setup list above.
Quieter fixes that do not need a message
Recovery messages try to turn blocked visits into paid ones. A different approach is to make the page worth more per visit, so each remaining visitor earns more and the lost ones matter less.
- Trim the ad load. Four or five stacked units on every page is the kind of layout that sends readers looking for a blocker. Our guides to website ad formats and ad placement compare layouts for earnings and reader experience.
- Make pages lighter. Heavy ad scripts slow a page, and slow pages push readers towards blockers. Ads and Core Web Vitals has the practical fixes.
- Add income that blockers do not touch. Sponsorships, a newsletter, memberships and affiliate links sold on the strength of your content do not depend on an ad request. See how to monetize a blog and affiliate marketing vs display ads. Affiliate links can be blocked too, but plain text links usually survive.
- Raise income per visit among the people who do see ads. Seven ways to earn more from the audience you have lists the options that apply to most sites.
Workarounds that try to disguise ad code so blockers miss it are a different matter. Read your network's program policies first, because a trick that works today can put an account at risk tomorrow. Google's recovery message is the supported route, and for most small publishers it is the only one worth considering.
When it is not worth the effort
Under about 50,000 monthly pageviews, the sums above (with the same assumptions) come to a few dollars. A message that adds friction to every blocked visit for that gain is a poor trade, and effort spent on content or on getting the right ad network tends to return more.
It starts to make sense when your audience is large, your earnings per thousand views are high, or you have measured a blocked share that is clearly material. A finance or technology site with a higher RPM, for example in the AdSense technology estimates, has more to win per recovered visit than a general-interest one. Run draft mode first, read the blocked share, and then decide.
Common questions
Does an ad blocker affect AdSense invalid traffic?
Blocked views are simply never counted, so they do not show up as invalid traffic. Invalid traffic is a separate issue about bots and bad clicks, covered in invalid traffic explained.
Will the recovery message work on phones?
No. Google states that ad blocking recovery messages are only available on websites viewed in desktop browsers, so mobile visitors never see them.
Can I show the message to only some pages?
Yes. Use page inclusions or exclusions in the message settings, up to five per domain. With no inclusions the message covers your entire site.
Should I lock content for readers who block ads?
That is your call, and it is a heavy one. The Custom Choice button lets you offer an alternative such as a subscription or newsletter signup without cutting anyone off, and it is the gentler place to start.
What to do next
Add the ad blocking tag today and leave the message in draft. Come back in two to four weeks and read the blocked share from your Privacy & messaging report.
Then plug a monthly pageview count and your RPM into the AdSense revenue calculator, and check what a site of your size earns on our 100,000 monthly pageviews page. Multiply the lost share by your RPM. If the result is below the cost of an hour of your time each month, skip the message and spend the effort on page speed or ad layout.