eCPM, or effective cost per mille, is the metric that tells you how much you earn for every thousand ad impressions. For indie Android developers who rely on ad revenue, even small improvements in eCPM translate directly into more income from the same number of users. A jump from $2.00 to $3.00 eCPM means a 50 percent increase in revenue without acquiring a single new user.

The challenge is that eCPM is influenced by dozens of factors, many of which are outside your control: advertiser budgets, seasonal spending patterns, user geography, and market competition. But several factors are within your control, and optimizing them can make a meaningful difference. Here are five strategies that work for real-world indie apps.

1. Place Ads Where Users Actually See Them

Ad placement is the single biggest factor you can control. An ad that users never see generates impressions but not engagement, which tells the ad network that your inventory is low quality. Over time, this pushes your eCPM down as advertisers bid less for placements with poor visibility.

Banner ads placed at the very bottom of a scrollable screen are the most common example of wasted placement. Users scroll past them without registering their presence. Moving a banner to a natural break point in your content, such as between list items, after a completed action, or at the transition between two sections of the interface, significantly increases viewability.

For interstitial ads, timing matters more than frequency. Showing an interstitial when a user opens the app creates a negative first impression and increases uninstall rates. Showing one after a user completes a natural task, like finishing a level, saving a file, or viewing results, feels less intrusive and results in higher engagement rates. Advertisers pay more for engaged impressions.

Native ads that blend with your app's design consistently outperform standard display ads. They require more implementation effort, but the eCPM premium often justifies the work. A native ad styled to match your content feed can earn two to three times the eCPM of a generic banner in the same position.

2. Choose the Right Ad Formats

Not all ad formats are created equal in terms of revenue. The general hierarchy, from highest to lowest eCPM, is rewarded video, interstitial, native, and banner. However, not every format is appropriate for every app.

Rewarded video ads command the highest eCPM because they offer genuine value exchange. The user watches a video in return for an in-app reward: extra lives in a game, premium features temporarily unlocked, or virtual currency. Because the user actively chooses to watch, engagement rates are high and advertisers pay a premium. If your app has any concept of rewards or premium content, implementing rewarded video should be a priority.

Interstitial ads earn well but need careful frequency management. Showing an interstitial every 30 seconds will annoy users and increase churn. A reasonable frequency is one interstitial every three to five minutes of active use, or after a natural task completion. Some developers implement a session-based approach: no interstitials for the first few minutes of use, then gradually increasing frequency for longer sessions.

Banner ads have the lowest eCPM but generate revenue passively without interrupting the user experience. They work best as a baseline revenue source in apps where interstitials or rewarded video would feel disruptive, such as utility apps, calculators, or reference tools.

3. Implement Mediation

AdMob mediation allows multiple ad networks to compete for your ad inventory. Instead of relying solely on Google's advertiser pool, mediation opens your ad slots to networks like Meta Audience Network, Unity Ads, AppLovin, and others. When more advertisers compete for the same impression, the winning bid is higher, which increases your eCPM.

Setting up mediation through the AdMob dashboard is straightforward. You create mediation groups, add adapter SDKs for each participating network, and configure the waterfall or bidding settings. Bidding-based mediation is generally preferred over waterfall because it lets all networks bid simultaneously rather than being called in a fixed priority order.

The improvement from mediation varies by geography and app category, but most developers see a 20 to 40 percent increase in eCPM after adding two or three additional networks. The trade-off is increased app size (each SDK adds a few megabytes) and slightly more complexity in managing multiple network accounts.

Monitor your mediation performance regularly. Networks that consistently lose the bidding competition or have low fill rates can be removed to reduce overhead. The goal is a lean set of high-performing networks rather than every available adapter installed.

4. Optimize User Experience Around Ads

This seems counterintuitive: making the ad experience better for users actually increases your revenue. The reason is that user retention is the foundation of ad revenue. An app with aggressive ad placement might earn more per session but lose users faster, resulting in less total revenue over time.

Consider implementing a frequency cap that limits how many ads a single user sees per session or per day. Users who feel overwhelmed by ads either uninstall the app or develop banner blindness, both of which reduce long-term revenue. A cap of four to six interstitials per day is a common starting point for utility apps.

Loading ads in advance is another optimization that improves both user experience and revenue. Preloading the next interstitial or rewarded video while the user is engaged with content means the ad displays instantly when triggered, with no loading spinner or delay. Faster ad display leads to higher completion rates and better eCPM.

Give users a way to access premium features without ads, either through a one-time purchase or subscription. Users who are willing to pay are often worth more as paying customers than as ad viewers. And users who choose to stay on the free tier have self-selected into a group that tolerates ads, which improves engagement metrics for your remaining ad inventory.

5. Test, Measure, and Iterate

Every app is different, and the optimal ad configuration for your app can only be found through testing. What works for a casual game will not work for a productivity tool. What works in the United States market may underperform in Southeast Asia.

A/B testing ad placements is the most reliable way to improve eCPM. Change one variable at a time: move a banner to a different position, adjust interstitial frequency, or try a different ad format in a specific slot. Run the test for at least a week to account for day-of-week variations in advertiser spending, then compare the results.

Use AdMob's built-in reporting to segment your data by country, ad format, and ad unit. Aggregate eCPM numbers hide important details. You might discover that your eCPM in Germany is three times higher than in India, which could inform decisions about localization investment or ad format selection for different markets.

Track your eCPM trends over time rather than reacting to daily fluctuations. Ad revenue is inherently volatile due to advertiser budget cycles, seasonal patterns, and auction dynamics. A single bad day does not indicate a problem. A consistent downward trend over two or three weeks does, and warrants investigation.

Pay attention to your ad request versus impression ratio. If you are making significantly more ad requests than impressions served, you have a fill rate problem. This can be caused by requesting ads too early in the app lifecycle, requesting ads for users in low-demand geographies, or having ad units that are not properly configured. Improving fill rate is often a quicker win than trying to push eCPM higher on already-filled impressions. To know whether any of these optimizations are actually moving the needle, you need granular tracking — AdMoola gives you a real-time AdMob and AdSense dashboard on your Android device with breakdowns by app, ad unit, country, and date range so you can measure the impact of every change as it happens.