Choosing Floor Prices Without Losing Fill
How floors trade fill against eCPM, how to set them by country tier, and how to test a change without guessing.
5 min read · Updated
A floor price is the lowest eCPM you will accept for an impression. Set it well and you stop cheap bids dragging your average down. Set it badly and you turn away money, because an impression you refuse at $2 earns nothing at all.
Most advice about floors is either "always use them" or "never touch them". The truth sits in the arithmetic: a floor trades fill for price, and the only question is whether the price you gain outweighs the fill you lose. You can work that out before you change anything.
This guide shows how, using figures from our benchmark tables, the same ones behind the revenue calculator. It focuses on apps, with a short section for websites at the end. Every figure is an estimate, so test against your own data.
What a floor actually does
When an ad request goes out, networks and bidders respond with what they will pay. A floor tells the system to ignore anything below a set eCPM. If nothing clears the floor, that request goes unfilled, or passes to the next source in a waterfall.
Two numbers move when you raise a floor:
- eCPM rises, because the cheapest impressions are no longer counted.
- Fill falls, because some requests that would have been filled at a low price now go empty.
What you actually earn depends on both together. The useful measure is revenue per 1,000 requests, which is fill multiplied by eCPM. Our fill rate explainer and eCPM explainer cover each half in detail.
A worked example
Take a Tier 1 Android interstitial on AppLovin MAX. Our tables put its eCPM at about $9.80 with a blended fill of 90%. Out of 1,000 requests, 900 are filled, and 900 impressions at $9.80 earn $8.82. That $8.82 per 1,000 requests is the figure any floor has to beat.
Now suppose a floor removes the cheapest bids and lifts the average eCPM on the remaining impressions to $13.23, which is the top of our range for that slot (1.35 times the central figure). For the floor to break even, fill must stay above $8.82 divided by $13.23, or about 66.7%. If fill drops from 90% to anything lower than that, you lose money despite the higher eCPM.
Run it the other way. If a floor cuts fill by a third, from 90% to 60%, the remaining impressions need an eCPM of $14.70 ($8.82 divided by 0.6) just to stand still. That is above the top of our band, so a floor that aggressive would very likely cost you.
The lesson is that a higher eCPM in your report is not proof a floor is working. Always compare revenue per request.
Floors by country tier
A single global floor is the most common mistake. Prices vary hugely by region, so a floor that suits the US can block almost everything elsewhere. Here are our MAX interstitial figures by tier, with the low and high ends of our range:
| Tier | Low end (0.7x) | Central eCPM | High end (1.35x) |
|---|---|---|---|
| Tier 1 | $6.86 | $9.80 | $13.23 |
| Tier 2 | $2.66 | $3.80 | $5.13 |
| Tier 3 | $0.70 | $1.00 | $1.35 |
A flat $5.00 floor sits above the central Tier 2 figure and five times above Tier 3. It would remove much of your Tier 2 fill and nearly all of Tier 3. If most of your audience is outside Tier 1, that one setting could cut revenue sharply.
The better approach is a floor per tier, or per country for your biggest markets. A cautious starting point is near the low end of the range for each tier, then nudge up while watching revenue per request. On iOS, our tables apply a 1.3x multiplier, so the Tier 1 low end becomes about $8.92. Check where your users are with the region settings in the AppLovin MAX calculator or the AdMob revenue calculator.
Multiple floor tiers in a waterfall
In a traditional waterfall, you set several instances of the same network at descending floors, for example a high, medium and low instance per tier. The request tries the highest first and falls through until something fills.
This lets you capture high bids without abandoning cheap fill. The cost is latency: every rung that fails adds a round trip before the ad shows. Keep the ladder short, remove rungs that rarely fill, and put a low or zero floor at the bottom so you always have a backstop. Our guide to bidding vs waterfall explains how this compares with a bidding setup.
When floors hurt bidding
In a bidding auction, each bidder submits a price for each impression in real time. A floor there acts as a reserve: bids below it are thrown out. A modest reserve can be fine, but a high one shrinks the number of bidders competing, and fewer bidders means less pressure on the winning price.
Bidding networks also adjust their own bids based on the outcomes they see. A floor that keeps rejecting them can reduce how often they bid on your inventory at all. Many mediation platforms recommend leaving bidders unfloored, or using their automated floor options, and placing manual floors only on waterfall instances. AdMob offers an eCPM floor setting on ad units with Google-optimised and manual choices. Confirm the current options and recommendations in the AdMob help centre or the Unity LevelPlay documentation.
A safe test plan
Change floors with a test, not a hunch:
- Pick one ad unit, one format and one tier. Rewarded and interstitial matter most, since banners pay far less (about $1.10 Tier 1 on MAX in our tables).
- Use your mediation platform's A/B testing to split users randomly between the current floor and the new one.
- Run for at least 14 days to cover weekly patterns.
- Track revenue per 1,000 requests, fill, eCPM, show rate and ARPDAU. Our ARPDAU and LTV guide explains the last one.
- Set a guardrail before you start, such as no drop in ARPDAU. A variant that raises eCPM but lowers ARPDAU does not ship.
- Change one thing at a time and write down each result.
Review floors every few months, and around seasonal swings. Floors that suit a strong fourth quarter can be too high in January, as our guide to why ad revenue drops in January explains.
Floors on websites
Most website publishers have less direct control. AdSense does not let you set a minimum price per impression, though you can block some ad categories, as the AdSense help centre explains. Managed networks such as Mediavine, Raptive and Ezoic set floors on your behalf. If you run your own header bidding or Google Ad Manager, pricing rules work on the same logic as above: compare revenue per 1,000 pageviews, not RPM on filled impressions alone. Our guide to header bidding for publishers covers that setup, and the comparison tool shows how networks stack up by tier.