Fill rate explained: the other half of the revenue equation
Fill rate is the share of ad requests that actually returned a paid ad. It's simple to calculate and easy to misread — a high fill rate can mean you're underpricing. Here's how fill rate works and how to read it alongside eCPM.
Publisher revenue comes down to two numbers multiplied together: how much you earn per impression, and how many impressions you actually fill. eCPM covers the first. Fill rate covers the second — and on its own it’s one of the most commonly misread metrics in monetization, because maximizing it is usually the wrong goal.
Here’s what fill rate is and how to read it properly.
What fill rate is
Fill rate is the percentage of ad requests that resulted in an ad actually being served:
Fill rate = (ads served ÷ ad requests) × 100
Request 1,000 ads, serve 850, and your fill rate is 85%. The other 15% are unfilled impressions — the slot went empty (or to a house ad, a backup, or a default) and earned nothing.
Why requests go unfilled
- No bid cleared the floor. Buyers bid, but not above your minimum. This is the most important cause because you control it.
- No demand for that inventory. Some geos, formats, and audiences simply attract fewer buyers.
- Buyer targeting excluded it. Advertisers’ own filters (brand safety, geography, audience) rule the impression out.
- Timeout. Bids existed but arrived after the auction closed — an entirely self-inflicted loss.
- Technical failures. Broken tags, latency, blocked requests.
- Ad blockers. The request never completes at all.
The trap: high fill rate isn’t the goal
Here’s where people go wrong. Fill rate is trivially easy to maximize — just drop your floor to zero. Almost everything will fill. You’ll have a magnificent 99% fill rate and less revenue, because you sold premium inventory at remnant prices.
The opposite error is just as real: push floors too high and you protect an impressive average price while leaving a third of your inventory empty, earning nothing.
Fill rate and eCPM move in opposite directions, and you can always improve one by sacrificing the other. Chasing either alone is how publishers lose money while watching a metric go up.
Read them together instead
The number that actually matters is revenue per available impression — sometimes called session or request-level revenue — which combines both:
Revenue per request ≈ eCPM × fill rate
This is why, as the eCPM guide puts it, a $12 eCPM at 40% fill is worth less than an $8 eCPM at 85% fill. Judge changes on the combined figure, never on fill or price in isolation. Every floor pricing decision is really a bet on this trade-off, which is exactly why static floors leak money: the optimal balance point moves constantly, and a quarterly setting can’t track it.
How to improve fill without giving away value
The goal is lifting fill while holding or raising price:
- Add demand competition. More bidders via header bidding means more chances someone clears your floor at a good price — the only lever that improves both sides at once.
- Set floors per segment, not globally. A single floor is too high for your weak inventory and too low for your premium — segment-level floors raise fill on the former without discounting the latter.
- Fix timeouts. Bids lost to a short timeout are free fill you’re discarding.
- Improve supply quality. Clean supply paths and low fraud/MFA exposure make buyers more willing to bid on you.
- Watch unfilled by segment. Chronic zero-fill pockets may need different demand partners, different formats, or fewer ad slots rather than lower prices.
The takeaway
Fill rate is the share of ad requests that returned a paid ad, and it’s half of publisher revenue — but maximizing it is not the objective, because you can always buy fill by dropping your floor. Read it alongside eCPM as revenue per available impression, and treat the two as a single trade-off rather than separate KPIs. The genuine wins come from more demand competition, per-segment floors, tighter timeout settings, and cleaner supply — all of which raise fill without selling your inventory cheap.
Lumorrow sets floors per impression in real time, pre-auction — optimizing the fill-versus-price trade-off on every request instead of once a quarter. See how the platform works → or explore it as a publisher →.