If you promised a sponsor 20,000 impressions and delivered 13,000, ad blocking is the most likely explanation. Understanding the mechanism tells you which fixes are real and which are wishful.

How blocking works

Three mechanisms, in order of how much damage they do:

Hostname blocking. The extension holds a list of known ad-serving domains. Requests to them are dropped before they leave the browser. This is most of the effect.

Cosmetic filtering. CSS rules hide elements matching known patterns — class names like .ad-container, or attributes commonly used by ad tech. The request may succeed but nothing is shown.

Network-level blocking. A DNS filter or a router-level blocker takes out the request for everyone on that network, including devices without an extension.

How much of your audience

It varies enormously by subject:

If your readers are technical, assume a third of your inventory is invisible before you quote anything.

What actually helps

First-party serving. Point ads.yoursite.com at your ad server. Hostname lists do not contain your domain. This recovers the largest share of blocked impressions of anything on this list.

Avoid obvious naming. A container called class="ad-banner" gets caught by cosmetic filters. class="sponsor-slot" is less likely to. This is not deception — the ad is still labelled — it is just not adopting the exact strings the filter lists target.

Serve fewer, better ads. Blocking correlates with how aggressive a site's advertising is. One tasteful sponsorship attracts less hostility than four units and a pop-up, and readers whitelist sites they do not resent.

What does not help

Anti-adblock walls. Detecting a blocker and demanding it be disabled. These damage trust, get defeated within days, and in the EU there is an argument they engage ePrivacy rules by reading device state. Not worth it.

Reinjecting through a workaround. Anything designed specifically to evade a blocker escalates an arms race you will lose, and it makes your site look like something to be protected against.

What to tell your sponsor

Be upfront, early:

Around 25% of my audience runs an ad blocker, so served impressions run below raw pageviews. The figures I report are what actually rendered, not what was theoretically available.

This is a stronger position than it feels like. You are demonstrating that your numbers are real, at a moment when much of the industry's are not.

Report the right number

Report filled, served impressions — ideally viewable ones. Never quote pageviews as if they were impressions. A blocked ad is not an impression, and a sponsor who later discovers the difference will assume the gap was deliberate.