Skip to content
Menu
Mobile

Why Is My eCPM Low? 12 Causes and Fixes

Twelve reasons AdMob eCPM comes in low, from country and format mix to floors, consent and old SDKs, in the order we would check them.

11 min read · Updated

A low eCPM is usually a mix problem before it is a price problem. Most of the time the cause is where your users live, which ad formats they see, or what time of year it is, and none of those is a fault in your app. The rest of the time it is something you changed or something missing: a lowered floor, a broken consent flow, an unverified app-ads.txt, an old SDK, one network doing all the work.

This guide lists twelve causes in the order we would check them, cheapest first. The first five need nothing more than your AdMob report. Checks 6 and 7 are settings, 8 to 10 are signals that remove buyers, and the last two are technical or structural. Stop when you find something that explains the gap, fix it, and wait a few days before changing anything else.

Dollar figures are our modelled benchmark estimates, not promises, and your own dashboard outranks them. If eCPM itself is fuzzy, eCPM in plain English has the formula.

First, is it actually low?

eCPM is earnings divided by impressions, times 1,000. That makes it an average, and averages hide a lot. A blended figure of $1.50 might be a fine result for an audience that is mostly outside Tier 1, or a poor one for a US puzzle game.

Our AdMob estimates for an Android app, as Tier 1 / Tier 2 / Tier 3:

FormatTier 1Tier 2Tier 3
Rewarded$12.00$5.00$1.40
Interstitial$8.00$3.20$0.90
App open$5.50$2.20$0.60
Native$3.50$1.50$0.40
Banner$0.90$0.40$0.10

Tier 1 is the US, UK, Canada and Australia. Tier 3 covers most of Asia outside the developed markets, Latin America, Africa and Eastern Europe. iOS is modelled at 1.3 times Android. The mobile ad eCPM benchmarks guide has the wider picture,.

Compare like with like. Find a figure for the same format, the same country group and the same platform, then ask whether you are far below it. Being 20% under a benchmark is noise. Being 70% under, in a single country and format, is a lead.

The order to check, at a glance

#CheckWhere to lookSpeed
1Country mixReport split by countryMinutes
2Format mixReport split by format and ad unitMinutes
3Platform and app categoryCompare with the right benchmarkMinutes
4New app or test trafficApp status, Ad InspectorMinutes
5SeasonalitySame month last yearMinutes
6FloorsChange historyMinutes
7Category blockingBlocking controlsMinutes
8ConsentAd Inspector, EEA and UK trafficAn hour
9app-ads.txtApps list, verification statusAn hour
10Invalid trafficEstimated vs finalized earningsA day
11SDK and adaptersBuild filesA day
12Single source of demandMediation setupA week

AdMob's own help page on eCPM fluctuation takes a similar approach. It tells you to look at longer time ranges for seasonality, to compare the dates where match rate or eCPM changed against your account's change history, and to review category blocking and mediation. Our order adds the audience and technical checks around those.

Checks 1 to 3: the mix, not the price

1. Your country mix has shifted

AdMob's help page says eCPM is heavily dependent on market and platform, and gives the example that eCPM can rise in one country while it falls in another in the same period. Split your report by country before you do anything else.

Here is why it matters. Suppose two apps each serve one million interstitial impressions a month. One has 70% Tier 1, 20% Tier 2 and 10% Tier 3 users. The other has 10%, 20% and 70%. Using our AdMob interstitial figures of $8.00, $3.20 and $0.90, the first averages about $6.33 and the second about $2.07. Same app, same code, same ads, a threefold difference. A marketing push or a viral post in a low-paying country can drag the blended number down while every country-level eCPM stays flat.

Look at the country-level numbers. If each is stable and only the blend moved, nothing is wrong with monetization. You have a different audience. Our country pages show how far apart markets sit, and the revenue calculator lets you test a different audience split.

2. Your format mix is mostly banners

Banners pay roughly a tenth of what a rewarded view pays, and they tend to produce a lot of impressions, especially when the banner refreshes. Because eCPM is an average over all impressions, thousands of cheap banner views pull the number down even if each format is priced normally.

Take 1,000,000 impressions in Tier 1 on AdMob, with banners at $0.90 and rewarded at $12.00:

Split (banner / rewarded)EarningsBlended eCPM
100 / 0$900$0.90
95 / 5$1,455$1.46
90 / 10$2,010$2.01
80 / 20$3,120$3.12

Nothing about the ad prices changed down the table, only the mix. This is also why a falling eCPM is not always bad news. Google's page says a lower eCPM can still raise earnings if it comes with more impressions, so watch earnings and impressions next to it. If the mix is the problem, the lever is placement and design, not a setting. The mobile rewarded format page shows the price gap from the top of the ladder.

Banner refresh deserves a mention. AdMob's help page for automatic refresh says the setting lives under Advanced settings on a banner ad unit, that Google recommends its optimized rate, and that a custom rate runs from 30 to 150 seconds. The page offers no advice on how refresh affects eCPM, so we cannot tell you a number. Try it as an experiment. The same goes for ads that load at moments the user barely notices: they add impressions that pay little and drag the average, so load ads when they are needed. The AdMob report guide explains requests, match rate and show rate in order.

3. You are comparing against the wrong baseline

iOS pays more than Android in our model, by 1.3 times. App category shifts the baseline too: our multipliers run from 0.8 for hypercasual to 1.35 for mid-core and strategy and 1.6 for finance. A hypercasual game on Android at Tier 3 should look nothing like a finance utility on iOS in Tier 1. Check the AdMob estimates page for your category before concluding you are underperforming.

Checks 4 and 5: age and calendar

4. The app is new, or you are looking at test traffic

Google's help says all new apps must go through an app readiness review before they can fully serve ads, and while that runs the app may see limited ad serving. The review starts once the app is set up in AdMob and linked to a supported store, and it typically takes about two days, though some take longer. The status is visible in your account.

Past that, early numbers are thin. Google does not publish a learning period for new apps that we could find, so we will not give you one. What we can say is that a few thousand impressions across several countries and formats will produce unstable averages. Wait for volume before you judge.

Also check you are not measuring test ads. Test ad units serve test ads, which do not earn real money. Ad Inspector, Google's in-app overlay for analysing ad requests in real time, works only on devices registered as test devices, and the Ad Inspector guide lists SDK 20.0.0 or later as a requirement. If your release build still contains test unit IDs, that is a very expensive mistake.

5. It is the time of year

Advertiser budgets swing through the year. Our seasonality index, with September as 1.00, looks like this:

NicheJanFebMarAprMayJunJulAugSepOctNovDec
Technology0.800.860.950.930.950.930.900.971.021.081.321.29
Finance & Business1.051.001.021.000.950.920.880.900.971.031.121.16
Health & Wellness1.181.000.970.940.970.930.880.900.981.021.101.13
Food & Recipes0.820.840.900.950.940.900.860.880.971.101.381.46
Travel0.921.001.101.081.121.101.020.950.940.950.920.90
Gaming0.800.820.900.880.900.940.950.961.001.081.351.42
Lifestyle0.800.880.960.950.980.950.900.930.981.061.271.34
News & Entertainment0.900.920.980.970.980.960.940.951.001.061.151.19
Education0.950.961.000.980.920.820.801.081.181.081.101.13
General0.780.850.950.930.970.960.920.951.001.081.251.36

December at 1.36 against January at 0.78 means the same traffic can show an eCPM about 43% lower in January than it did in December. A $5.00 December eCPM, held at the same underlying demand, would read about $2.87 in January. You cannot fix that. You can compare against the same month last year, which is what Google's page recommends.

Two guides go deeper: why ad revenue falls every January and getting your ads ready for the Q4 peak.

Checks 6 and 7: settings you control

6. A floor changed

Floors are the settings with the clearest effect on eCPM, in both directions. AdMob's help says that cancelling or lowering optimized price floors can bring in many low bids, which lowers eCPM. Raising a floor does the opposite on price and costs you fill.

Open the account's change history and compare the dates with the dates your eCPM moved. Google's own advice is to consider reverting a setting that causes unexpected fluctuation. Keep the match rate in view when you do, since a floor trades fill for price. The floor price guide has the arithmetic, and fill rate explained shows why a higher eCPM can still earn less.

7. You blocked too many categories

Every blocked category narrows the auction. One block rarely matters, but Google's page warns that accumulated blocks can have a sizable effect, and larger categories matter more. In the Blocking controls tab you can switch categories back to Allowed. If you want to cut something, Google suggests disabling specific subcategories rather than whole categories.

Blocking is often a reaction to an ad that bothered someone. Before you block a whole category because of one creative, check whether a narrower block would do.

Checks 8 to 10: things that remove buyers

For users in the EEA, the UK and Switzerland, Google requires disclosure and consent for the data it uses to serve ads. Its developer docs on consent say that from January 16, 2024, partners that do not use a Google-certified consent management platform are restricted to limited ads on EEA and UK traffic. A message that never appears, or appears and records consent in a way that does not reach the SDK, can leave that traffic on limited ads, which pay less.

The docs also point to a subtler failure. Consent has a purpose part and a vendor part, and accepting all purposes without vendor consent can result in no ads. If you use mediation, your partners have to be on the ad partners list in the message or they may not serve. Ad Inspector's privacy troubleshooting shows the consent signals attached to each request, which makes this checkable in minutes. Read the consent messages setup guide for the full walkthrough, and look at eCPM for European countries on their own before blaming everything on consent.

On iOS the equivalent problem is tracking permission, which lowers bids when the identifier is missing.

9. app-ads.txt is missing or does not verify

AdMob expects apps listed in Google Play or the Apple App Store to verify with app-ads.txt, while apps only in third-party stores are not currently required to. Buyers that purchase only from authorized sellers cannot count your inventory in if the file is missing or incomplete. Google does not publish a figure for how much this costs, and we will not invent one. It is a quick check, and an unverified app is a free fix.

Open the app in AdMob and look at the app-ads.txt status. Then follow the guide for your store: Google Play or the Apple App Store. If you use mediation partners, their lines belong in the file too.

10. Invalid traffic is being filtered

If a share of your impressions or clicks is judged invalid, AdMob may discard them, deduct them or limit your account. Common triggers are clicking your own ads, aggressive incentives, accidental taps from badly placed ads and bot traffic from sources you bought. The signs are a sharp eCPM or click-through-rate swing, estimated earnings that shrink once finalized, or a notice in the policy centre. Compare estimated with finalized earnings over a month.

The invalid traffic guide lists the causes and how deductions work, and why ad accounts get limited is the one to read if serving collapsed overnight rather than eroding.

Checks 11 and 12: technical and structural

11. The SDK or an adapter is out of date

Google has a deprecation scheme for the Mobile Ads SDK with three states: supported, deprecated and sunset. Sunset versions are at risk of not serving ads, and when serving is disabled, requests return a no fill with an error saying the version is sunset. When we looked in October 2026, Google's Android page listed versions 22.x and earlier as sunset and 23.x as deprecated, with 24.x and 25.x supported. That schedule changes, and other platforms have their own pages, so check the Android deprecation schedule or its equivalent for your platform.

Outdated mediation adapters cause quieter trouble. Some ad sources pass consent signals only from a minimum version, as Google's consent docs note. Update the SDK, then update every adapter.

12. One network is doing all the work

With a single source, only that source's buyers compete for your inventory. AdMob's own page lists mediation as a way to increase bidding pressure, adding third-party networks to compete for requests. How much it adds depends on the app and the audience, and our mediation versus single network guide puts numbers on it.

If you decide to try it, follow the AdMob mediation setup walkthrough and compare candidates before you commit. Add one network at a time and run it as an A/B test so you can see what it did.

Common questions

How low is too low for AdMob?

There is no universal line. Tier 1 interstitials near $8.00 and banners near $0.90 are our modelled midpoints, and your category, platform and format mix move them. Treat being far below the benchmark for your own country and format as the signal, not the blended number.

Why did my eCPM drop overnight?

A sudden drop on one date points to something you or Google changed: a floor, a blocking setting, an SDK update, consent or a policy action. A slow slide over weeks points to seasonality or a change in your audience mix. Check the change history first.

Does a higher eCPM always mean more money?

No. Revenue is impressions times eCPM, divided by 1,000. A floor can lift eCPM while cutting fill, and total earnings can fall. Read eCPM next to impressions, match rate and estimated earnings.

Can I just raise my floors?

You can, and for some apps it works. The cost is fill. Raise gradually and compare revenue per 1,000 requests, not eCPM alone.

What to do this week

Open your AdMob report for the last 90 days and the same period a year ago if you have it. Split by country, then by format. Write down the blended eCPM and each country and format figure. That alone will settle checks 1 to 5.

Then open the change history and mark the dates of any floor, blocking or SDK change against the date your eCPM moved. Check app-ads.txt status and run Ad Inspector on a test device in a consent region. If all of that is clean, the question becomes whether to add demand, and the AdMob revenue calculator will show what a realistic improvement is worth before you spend a weekend on it.