Key takeaways
- Fill rate = filled ad requests divided by total ad requests, times 100.
- A high fill rate is not the goal on its own. Revenue per user tells you whether a change helped.
- Compare fill rate with your own history by format and country, not with a single industry number.
What is fill rate?
Fill rate is the share of ad requests from your website or app that were answered with an ad. If your app asks for 1,000 ads and 850 come back, your fill rate is 85%. The other 150 requests went unfilled, which means an empty slot or a fallback and no earnings from that opportunity.
Fill rate is a publisher metric. It tells you how much of your available inventory advertisers actually bought, and it is one of the first numbers to check when revenue drops without an obvious change in traffic.
The fill rate formula
Fill rate = (filled ad requests ÷ total ad requests) × 100.
Worked example: a game’s 40,000 rewarded video requests
Suppose a game sends 40,000 rewarded video requests in a day. 34,000 receive an ad. The fill rate is 34,000 ÷ 40,000 × 100 = 85%. If the average revenue per filled request is $0.012, the day earns $408. The 6,000 unfilled requests would have been worth roughly $72 at the same rate, which is the ceiling on what better fill could add. The figures are illustrative, not averages.
Two details decide whether your number means anything. First, count requests at the same point every time, for example at the ad server rather than in your code. Second, decide whether a request that received an ad which was never shown counts as filled. That difference is why ad platforms often split the idea into several metrics.
Fill rate vs match rate vs show rate
| Metric | Formula | What it tells you |
|---|---|---|
| Fill rate | Filled requests ÷ requests | How much of your inventory found a buyer |
| Match rate | Matched requests ÷ requests | How many requests got a response from an ad source |
| Show rate | Impressions ÷ matched requests | How many returned ads were actually displayed |
Google AdMob, for example, reports match rate rather than fill rate and defines it as matched requests divided by requests, times 100. Show rate is commonly calculated as impressions divided by matched requests. A good match rate with a poor show rate usually points to your own app: ads are loaded but never shown because the user left, the placement was never reached, or the ad expired first.
Why fill rate drops
- Country mix. Advertisers compete hardest for users in high-income markets. Traffic from countries with fewer buyers fills less often. See Tier 1, 2 and 3 countries explained.
- Price floors. A floor rejects bids below a set price. Google’s AdMob help lists high eCPM floors as a common reason for a low match rate.
- Blocked categories and advertisers. Every block removes bidders. AdMob’s help notes that blocking any ad lowers match rate because it reduces competition.
- Audience restrictions. Apps directed at children have a smaller pool of suitable advertisers, and AdMob lists this as a reason for lower match rates.
- New apps and ad units. AdMob notes that demand can be reduced for up to a week while traffic quality is evaluated.
- Seasonality. Advertiser budgets rise and fall through the year, so fill can move without any change on your side.
- Technical errors. Timeouts, outdated SDKs, and wrong ad unit IDs count as unfilled requests too.
Fill rate benchmarks: what is a good fill rate?
There is no single benchmark worth copying. Fill rate depends on the ad format, the countries your users are in, your floors, your mediation setup, and even on how your platform counts a request. Two apps can both be healthy with very different numbers, and published averages rarely say how they were measured.
A more useful approach is to build your own baseline:
- Record fill rate by format and by country for four weeks.
- Note the normal weekly range for each combination.
- Investigate when a combination falls clearly below its own range, not when it is below someone else’s average.
- Always check revenue per user in the same period before you act.
Illustrative example: fill drops in one country only
An app’s interstitials usually fill 90 to 94% in the United States and 70 to 76% in India. One week the United States falls to 81% while India is unchanged. That points to something specific to the United States, such as a new floor or a blocked category, rather than a general problem. Your own ranges will look different; the habit of comparing each country with itself is what carries over.
Why a lower fill rate can earn more
This is good news for publishers, because floors are a setting you control. Fill rate and price pull in opposite directions. Lower your floors and more requests fill, but at lower prices. Raise them and fewer requests fill, at higher prices. The right setting is the one that earns the most per user, not the one with the highest fill.
Sample math: a $9 floor that lowers fill and raises revenue
With no floor, 10,000 requests fill at 95% with a $6 eCPM: 9,500 impressions earn $57. With a $9 floor, fill drops to 70% but eCPM rises to $10: 7,000 impressions earn $70. Fill went down, revenue went up. The opposite can happen too, and these numbers are only there to show the trade-off, so test one change at a time on your own traffic.
That is why fill rate should always be read next to eCPM and RPM, and why eCPM and EPC are better guides to what a placement earns.
Fill rate on an offerwall
An offerwall does not answer one request with one ad. It shows a list of offers, so “fill” means something slightly different: whether a user who opens the wall finds offers worth doing. Three things decide it:
- Offer availability by country and device. Advertisers choose where their offers run, so a user in a country with few campaigns, or on a device an offer does not support, sees a shorter list.
- Your currency settings. On Sharklio, offers that would give the user 0 after your conversion rate, split, and rounding are not shown. A rate that is too low hides the smallest offers. How to set your virtual currency exchange rate covers how to avoid that.
- Budgets and caps. Advertisers set daily budgets and caps, so the list changes during the day as some campaigns pause and others start.
On an offerwall, the better health metrics are the share of users who open the wall, the share who start an offer, and earnings per active user. Offerwall placement and Offerwall vs rewarded video explain how to improve those.
How to improve fill rate
Start with the fixes that cost nothing, and check revenue per user after each one.
- Check for errors first. Timeouts and misconfigured ad units look like low demand.
- Review floors country by country. A floor that suits one market can starve another.
- Unblock categories you do not really object to, since every block costs competition.
- Add demand sources. More bidders, or a second monetization format such as an offerwall, gives users something useful when an ad slot would stay empty.
- Request ads when you will show them. Loading too early wastes requests and lowers show rate.
Filling empty slots with a Sharklio offerwall
If some of your users regularly hit an unfilled ad slot, an offerwall gives them another way to earn. The Sharklio offerwall works without an SDK: your server builds one signed link, and users see the offers available for their country and device, with rewards in your own currency. Advertisers run campaigns with per-country bids, so the offer list is set by real demand, not by ad requests. Sharklio is not open for sign-up yet. See how the Sharklio offerwall works, plan an exchange rate that keeps small offers visible, and leave your email below to hear the day publisher applications open.
Frequently asked questions
How do you calculate fill rate?
Divide the number of ad requests that received an ad by the total number of ad requests, then multiply by 100. 900 filled out of 1,000 requests is a 90% fill rate.
What is a good fill rate?
One that is stable against your own history for the same format and country, and that comes with the highest revenue per user you can reach. Averages from other apps are rarely comparable.
What is the difference between fill rate and match rate?
Both compare requests with responses. Match rate, the term AdMob uses, counts requests that got a response from an ad source. Fill rate is the more general industry term, and platforms differ in whether a filled request must also be shown.
Why is my fill rate low?
The most common causes are a country mix with few advertisers, high price floors, blocked categories, audience restrictions such as child-directed apps, new ad units, and technical errors such as timeouts.
Does a higher fill rate always mean more revenue?
No. Lower floors raise fill but can lower prices. Judge every change by revenue per user or RPM, not by fill rate alone.