Fill Rate Explained: Requests to Impressions
How requests, matches, fill and show rate fit together, why fill falls and how more demand lifts it.
5 min read · Updated
Fill rate is the share of your ad requests that come back with an ad. If your app or site asks for 100 ads and receives 85, your fill rate is 85%. The other 15 requests earned nothing.
It is one of the easiest numbers to overlook, because dashboards tend to lead with earnings and eCPM. But fill sits upstream of both. A high eCPM on a low fill rate can earn less than a modest eCPM on a high one, and the missing revenue never shows up as a loss. It simply never appears.
This guide defines the terms, explains why fill falls, works through an example using the fill figures in our benchmark tables, and shows how mediation and extra demand raise it. Dollar figures and percentages are estimates from those tables unless they are marked as hypothetical.
Requests, matches, impressions
Four numbers describe the journey of an ad:
- Requests: each time your app or page asks a network for an ad.
- Matched requests: requests that received an ad in response.
- Impressions: matched ads that were actually displayed.
- Unfilled requests: requests that got nothing back.
From these come two ratios:
- Fill rate = matched requests / requests. AdMob calls this match rate.
- Show rate = impressions / matched requests.
Fill measures whether the market wanted your inventory. Show rate measures whether your code used what it received. A preloaded interstitial that the user never reaches is matched but not shown, which lowers show rate without touching fill. Keeping the two apart makes problems much easier to find. Reading the AdMob report shows where each one appears in practice.
Fill rates in our benchmark tables
Our tables give each mobile network a blended fill rate across regions. These are estimates for a typical app, not promises.
| Network | Estimated fill |
|---|---|
| AppLovin MAX | 90% |
| Google AdMob | 88% |
| ironSource / LevelPlay | 86% |
| Unity Ads | 84% |
| Meta Audience Network | 80% |
| Vungle / Liftoff | 80% |
| InMobi | 78% |
| Chartboost | 78% |
The spread is narrower than the spread in eCPM, but it still matters. A ten-point gap in fill is a ten-point gap in paid impressions on the same traffic. You can compare networks side by side on the comparison page.
Why fill falls
Fill drops when fewer buyers want a particular request, or when something stops buyers from seeing it.
Geography
Advertisers concentrate budgets on markets where they expect a return. Requests from Tier 1 countries such as the United States and United Kingdom tend to fill readily. Requests from smaller or lower-spending markets can see less competition and more unfilled slots.
Floor prices
A floor tells the network not to return an ad below a set price. Raise it and you exclude every bid under the line. Floors can lift eCPM, but they do it partly by cutting fill. Our guide to choosing floor prices explains how to find the balance.
Consent and privacy
Where consent is required, users who decline personalised ads, or never see a working consent message, attract fewer bidders. On iOS, limited tracking has a similar effect for some buyers. See consent messages setup and ATT and iOS ad earnings.
Policy and account status
If a network limits serving on your account or flags an app for review, fill can drop sharply overnight. That pattern is very different from a slow seasonal change. Read why ad accounts get limited if you see a sudden cliff.
New apps and missing seller files
A brand-new app has no history, so some buyers wait before bidding. A missing or incomplete app-ads.txt or ads.txt file also removes buyers who only purchase from authorised sellers. The app-ads.txt guide for Google Play covers the setup.
Requests you should not be making
Requesting ads too often, for screens the user never sees, or before the SDK has initialised can inflate requests and drag the ratio down. Sometimes low fill is a reporting artefact of your own code.
A worked example
Take 500,000 interstitial requests a month from a Tier 1 Android audience. Our tables put the AdMob interstitial eCPM at about $8.00 and AdMob fill at 88%. For simplicity, assume every matched ad is shown.
- AdMob alone: 500,000 x 0.88 = 440,000 impressions. At $8.00, that earns 440,000 / 1,000 x 8.00 = $3,520.
- The same traffic at InMobi's 78% fill and the same $8.00 price: 390,000 impressions, or $3,120.
That $400 gap comes entirely from fill, with no change in price or audience.
Now add a second network behind AdMob. The 60,000 requests AdMob did not fill are passed on. If InMobi fills 78% of those at its Tier 1 interstitial benchmark of about $6.00:
- Extra impressions: 60,000 x 0.78 = 46,800.
- Extra earnings: 46,800 / 1,000 x 6.00 = $280.80.
- Combined: 486,800 impressions and $3,800.80.
- Combined fill: 486,800 / 500,000, about 97%.
This is simplified. Real networks overlap, and the leftover requests are often the harder ones to fill, so the second network may do worse than its average. The principle holds, though: each extra source of demand gets a chance at what the others left behind.
How mediation and more demand raise fill
Mediation lets several networks compete for each request. In a waterfall, networks are called in order and unfilled requests fall through to the next one, as in the example above. In bidding, networks bid at the same time and the highest wins. Both approaches give unfilled requests more chances. Our guides to mediation versus a single network and bidding versus waterfall compare the set-ups.
Other ways to raise fill:
- Keep your app-ads.txt or ads.txt complete and current.
- Make sure consent messages work in every region that needs them.
- Review floors regularly, especially after the busy end of the year.
- Load ads close to when they are needed, which keeps request counts honest.
- Keep SDKs and adapters up to date so newer demand can reach you.
Reading fill alongside everything else
Never judge fill alone. A fill rate of 100% at a very low price can earn less than 85% at a strong one, and a rising eCPM can hide a falling fill rate. Look at requests, fill, show rate, impressions and eCPM together, and compare like with like by country and format. Our eCPM explainer covers the price side of the equation.
To model the effect of fill on your own numbers, try the AdMob revenue calculator or the AppLovin MAX revenue calculator. The AdMob help centre defines match rate and show rate as Google reports them, and the AdMob developer guides explain how to load ads at the right moment.