Definition
Fill rate is commonly calculated as filled impressions or responses divided by eligible ad requests. Exact definitions can vary by platform and reporting stage.
Where it fits
Eligible ad requests → Demand responses → Delivered impressions
Why it matters
High eCPM does not produce strong revenue when too many requests remain unfilled.
What fill rate measures
Fill rate is the share of eligible ad requests that actually result in a delivered ad:
Fill rate = Filled impressions (or responses) ÷ Eligible ad requests
A placement requesting 100,000 ads and showing 87,000 runs an 87% fill. The unfilled 13% is inventory that existed, cost a request, and earned nothing.
The definitional fine print matters more here than for most metrics, because the denominator is not standardized. Platforms count at different pipeline stages — raw requests versus eligible requests after policy filtering; network responses versus rendered impressions versus viewable impressions. A network reporting "fill" as responses-to-requests will show a higher number than a mediation layer reporting rendered-to-requested for the same traffic. Within one mediation stack (AdMob, AppLovin MAX, Unity LevelPlay), per-network fill is also conditional: each network's rate is computed only on the requests routed to it, so a network "filling 95%" of the leftovers it sees is not outperforming one filling 60% of everything.
Why fill rate matters — and what it doesn't capture
Revenue is rate × volume:
Revenue per 1,000 requests = eCPM × Fill rate
A placement with a $12 eCPM at 40% fill earns $4.80 per thousand requests; a $7 eCPM at 90% earns $6.30. The "premium" setup is the weaker business. This identity — revenue per thousand requests, sometimes called request eCPM or rCPM — is the honest health metric for any placement, because it punishes both cheap fills and starved delivery.
What fill rate does not measure: whether the filled ads were any good. One hundred percent fill of bottom-feeder demand monetizes worse than 70% fill of competitive bids, and it costs user experience too. Fill is a delivery diagnostic, not a quality signal.
What causes unfilled requests
- Geography and demand mismatch. Advertiser budgets are thin in many markets; emerging-market traffic routinely sees structurally lower fill from premium networks.
- Price floors. Every floor converts some below-floor bids into no-fills. This is sometimes the right trade — but it must be measured as revenue per request, not celebrated as higher eCPM.
- Format and placement. Niche sizes and formats attract fewer bidders than standard interstitials and rewarded slots.
- Latency and timeouts. Bids that arrive late count as no-bids. Slow mediation chains and weak networks manufacture unfilled requests out of real demand.
- Signal loss. Requests without identifiers or consent attract fewer bids — visible as a fill (and price) gap between consented and unconsented traffic.
- Policy and technical filtering. Content flags, app-ads.txt problems, SDK misconfigurations, and frequency caps all silently shrink the eligible pool.
Working with fill rate
- Fix the definition first. Decide which stage you measure (requests → responses → renders) and use the same definition across networks and time. Cross-platform fill comparisons without this are noise.
- Track revenue per thousand requests as the headline. Let eCPM and fill be the explanatory pair underneath it.
- Segment by geography and format. A blended 75% fill can hide 95% in the US and 30% in markets where your demand stack is thin — the fixes are per-segment (often: add demand sources strong in those regions).
- Audit latency before adding demand. If timeouts cause meaningful no-fills, a faster auction recovers revenue that adding a tenth network won't.
- Test floors with request-revenue as the verdict. Floor experiments that report only eCPM movement are structurally self-congratulating.
- Use backfill deliberately. House ads, cross-promotion, or low-floor fallback demand can monetize otherwise-wasted requests — as long as the fallback doesn't cannibalize bids that would have come anyway.
Common mistakes
- Comparing rates with different denominators. Network-reported fill versus mediation-reported fill versus ad-server fill are three different fractions; treating them as one metric produces fake insights.
- Forcing 100% fill with low-quality demand. The last 10% of fill usually comes from the worst bids and the most aggressive ad experiences; the revenue gain is marginal and the UX cost is not.
- Ignoring geography and format. Reading a blended fill drop as "demand weakened" when traffic mix shifted toward low-fill markets misdiagnoses the problem entirely.
- Optimizing fill while eCPM collapses (or vice versa). The two trade against each other through floors and demand choices; only request-level revenue arbitrates.
- Forgetting that unfilled requests still cost. Each request spends latency, battery, and user patience. Placements with chronically low fill should request less often (or smarter), not just chase more demand.
FAQ
What's a good fill rate? For mainstream formats with a mature demand stack in tier-one markets, very high fill (90%+) is achievable. Globally blended numbers run lower, dominated by geography mix. The actionable target isn't a universal percentage — it's eliminating fill loss you control (latency, floors, configuration) and accepting what reflects real demand scarcity.
Is 100% fill the goal? No. Maximal fill means accepting every bid including the worst; revenue per thousand requests usually peaks below 100% fill, with floors filtering bids that aren't worth the impression. The optimum is empirical, found by testing — not an ideology in either direction.
Why is my fill rate dropping? Check in order: traffic mix (more low-demand geography), floor changes, a demand source disconnecting or throttling, latency/timeout regressions after an SDK update, and consent-rate shifts. Segmented reporting localizes the cause quickly; blended numbers never do.
How do fill rate and eCPM interact? Through floors and demand selection, mechanically: raise floors and eCPM rises while fill falls; add aggressive backfill and fill rises while eCPM falls. Revenue per thousand requests is the product that tells you whether either move helped. ARPDAU then confirms the user-level outcome.
Does low fill hurt anything besides revenue? Yes — wasted requests add latency and can leave layout gaps or broken ad slots in the UX. Apps with structurally low-fill segments should adapt request behavior (fewer, better-timed requests; fallback content) rather than hammering the auction. The app monetization path treats fill as one dial in the larger delivery system.
Common beginner mistakes
- Comparing rates with different denominators
- Forcing low-quality demand to reach 100%
- Ignoring geography and format