An impression is recorded when an ad is served to a page. It says nothing about whether the visitor scrolled far enough to see it.
On a typical page, 30–50% of served impressions are never seen. The ad loaded, the reader stopped halfway, and it sat there below the fold until the tab closed.
The industry definition
An impression counts as viewable when at least 50% of the ad is in the viewport for at least one continuous second. That is the IAB standard for display, and it is what advertisers mean when they say viewability.
Video has a stricter bar: 50% in view for two continuous seconds.
How it is measured
IntersectionObserver, a browser API that reports when an element enters or leaves the viewport and by how much. When an ad crosses 50% visibility, a one-second timer starts; if it is still visible when the timer fires, a viewable impression is recorded. If the reader scrolls away first, the timer resets.
It is cheap and accurate, and it needs no cookies.
What good looks like
- 60–70% is a healthy viewability rate for a well-placed unit
- Above 75% is very good, usually meaning the slot is high on the page
- Below 40% means the ad is too far down to be worth what you are charging
Why you should report it even though it makes your numbers look worse
Three reasons.
It builds trust. A publisher who volunteers "you got 41,000 impressions, 27,000 of them viewable" is obviously not hiding anything. That is worth more than the 14,000 impressions of flattery you gave up.
It explains disappointing click rates. A 0.4% CTR on 41,000 impressions looks weak. The same clicks against 27,000 viewable impressions is 0.6%, which is respectable. Viewability reframes a bad-looking number accurately.
It tells you where to put ads. If one slot runs at 75% and another at 35%, you have just learned which position to sell at a premium and which to move.
Improving it
Move the ad up. The most effective change and the least popular one. Ads near the top are seen more.
Place mid-content rather than in the sidebar. On mobile, sidebars often render below all the content, so a sidebar unit can be near-invisible to the majority of your traffic.
Use lazy loading. Counter-intuitive but true: if the ad only loads when it approaches the viewport, almost every impression served is one that got seen. Viewability rises sharply, and you serve fewer wasted requests.
Avoid stacking units. Three ads in a column means the second and third are seen far less than the first.
The honest tension
Higher viewability means fewer recorded impressions. If you are charging on a CPM basis, lazy loading directly reduces your billable count.
Which is a good argument for charging a flat monthly rate instead. Then improving viewability is a pure gain: the same fee, better results, a sponsor who renews.