Ad blockers and analytics: why your numbers are too low
Your accounting says you had 47 orders last month.
Your analytics says 31 conversions.
You check the date range. You check the filters. You check whether someone excluded internal traffic twice. The numbers still disagree and now you have a decision to make on Thursday using one of them.
I have watched people resolve this the wrong way. They pick the number that supports the decision they already wanted to make.
The right resolution is duller and much more useful. Find out how big your gap is, learn which part of it you can close and then stop being surprised by it every month.
No time to read this?
Sign up, paste two lines of code and see your real traffic without a cookie banner. No credit card, live in minutes.
Get my free accountHow much is actually missing
Let us start with what is measurable, because this topic attracts invented statistics.
Ad blocker adoption is well surveyed. GWI put it at 29.5% of internet users using an ad blocker at least sometimes in the second quarter of 2025. Statista has reported higher figures, above 40%, when counting anyone with a blocker on at least one device. Desktop use runs around a third in Western markets.
Those are ad blocking numbers, not analytics blocking numbers. The two are related but not the same and anyone quoting one as the other is selling something.
Here is the connection. Most popular blockers ship with a privacy filter list in addition to the ad list. Those lists include analytics endpoints. So a large share of blocker users also block analytics requests but not all of them and the share depends on which lists are switched on.
The honest summary: a meaningful part of your traffic is invisible, the exact share depends on your audience and it is never zero.
"Not everything that can be counted counts, and not everything that counts can be counted."
William Bruce Cameron, Informal Sociology, 1963
That line is usually attributed to Einstein, which is wrong and the mistake is instructive. Numbers acquire authority just by existing. A dashboard reading 31 looks like a fact even when it is a sample.
Why the gap is not random
This is the part that makes the problem worse than a simple undercount.
If the missing visitors were spread evenly, you could apply a correction factor and move on. They are not. Blocker use is concentrated in specific groups.
- Technical audiences. Developers, IT staff and anyone who works near security block at far higher rates than average.
- Younger visitors. Adoption is highest in the youngest adult brackets.
- Desktop users. Extensions are easier to install on desktop than on mobile.
- B2B buyers on managed devices. Corporate networks often filter tracker domains before the browser is even involved.
Read that list again and think about who your best customers are. For a B2B tool, an agency or a technical product, the people you most want to understand are exactly the people you measure worst.
That is not an undercount. That is a biased sample.
The four ways your data leaks
Ad blockers are one of four. It helps to know which is which, because they need different answers.
1. Browser extensions. uBlock Origin, AdBlock Plus and similar tools block requests to known tracker domains. This is the one everybody thinks of.
2. Consent declines. Anyone who says no to your cookie banner is not measured at all. Depending on your banner and your audience this can be larger than the blocker effect.
3. Browser privacy features. Safari and Firefox restrict cross site tracking by default. Cookie lifetimes get shortened, which mostly damages returning visitor and attribution data rather than page views.
4. Network level blocking. Pi-hole at home, a filtering DNS resolver or a corporate proxy. No extension is involved and the visitor may not even know it is happening.
Still with me? Good, because measuring your own gap takes about fifteen minutes.
Measure your own gap in fifteen minutes
Stop guessing at industry averages. Your number is the only one that matters and you can get close to it with three comparisons.
1. Server log against analytics
Your hosting panel or server log counts requests before any browser side blocking can happen. Pull page views for the same week from both sources.
The log will always be higher, because it also counts bots and asset requests. Filter to HTML page requests and exclude known crawlers if you can. What you are looking for is the order of magnitude of the difference, not a precise figure.
2. Business result against measured conversions
Take a number you know is complete. Orders in your shop admin, invoices, signups in your own database.
Compare it with what your analytics reported for the same period. This ratio is the most honest signal you have, because one side of it cannot be blocked.
3. Test it yourself
Install a common blocker, open your own site and watch the Network tab. Check whether your analytics request goes out or gets cancelled.
Then repeat with the blocker off. Now you know exactly how your specific setup behaves rather than how a blog post says it behaves.
What does not fix it
Two popular workarounds deserve a warning.
Proxying your analytics through your own domain. Technically this defeats simple domain based filters. It also puts you in a cat and mouse game with filter list maintainers, adds server load and does nothing about consent declines. You have made your tracker harder to block, not less objectionable.
Correction factors. Multiplying your numbers by 1.3 because a blog said 30% feels scientific. It is not. The bias is unevenly distributed across your pages and channels so a flat multiplier makes some numbers less accurate, not more.
What actually works
There is one durable answer and it is structural rather than technical.
Filter lists and browsers block trackers. They target scripts that identify individuals, follow them across sites and build profiles. That is the definition they work from.
Analytics that does none of those things is not a tracker by that definition. It does not need to hide, because there is nothing to hide from.
That also solves the second leak at the same time. No cookies means no consent banner, which means the visitors who would have declined are still counted.
Where StatJolt fits in
StatJolt does not identify visitors, does not follow them between sites and stores nothing on their device.
Because of that it is not classified as a tracker by the common filter lists and the requests are not blocked. The visitors who are invisible to your current setup show up in your counts.
There is no consent banner either so the second source of loss disappears with the first.
The result is not a bigger number for its own sake. It is a number you can put next to your order count without having to explain the difference.
If you only read one box
Ad blockers remove a real and unevenly distributed part of your traffic and consent declines remove more so your dashboard is a sample rather than a census. Measure your own gap by comparing your analytics with your server log and with a business number that cannot be blocked. The durable fix is to measure in a way that browsers and filter lists have no reason to block.
Replace GA4 in 2 minutes
Just paste the code and see how much clearer it gets. No cookies, no banner, no consent tool. 0 EUR until 2027, at any traffic level.
Or keep the other path: maintaining a consent tool, modelled data and half an hour a month spent digging through reports.
Get my free account