How Ad Revenue Is Calculated
Know what your inputs mean
- Match rate is matched requests divided by requests. Show rate is impressions divided by matched requests. The form accepts both as percentages from 0 to 100.
- Returned ads are not always displayed. Preloading an ad does not guarantee an impression, and requests must not be used as if they were impressions.
- DAU, MAU, downloads, and sessions are not impressions. A user-based forecast requires explicit assumptions about sessions and ad requests or actual impressions per user.
- Do not combine app-level requests with summed ad-source requests, or mix reporting scopes. Mediation and partner-bidding reports may define matched requests differently.
- Calculate each format or country separately when its rate differs, then add revenue. A combined eCPM must be impression-weighted, not a simple average of the rates.
- AdMob estimated earnings can change when verified. They are not necessarily a finalized payment, and manual custom-event eCPM inputs can themselves be estimates.
From Your Report to a Reproducible Revenue Scenario
Choose a revenue scope before copying numbers. Match dates, currency, countries, devices, ad formats and content or app inventory within each historical sample. The historical sample can cover a different period from the monthly scenario, but its earnings and denominator must cover the same dates. Report labels can vary; the table maps definitions, not a guaranteed dashboard click path.
Ad impressions + AdMob eCPM: Report Fields to Calculator Inputs
Revenue scope: AdMob estimated ad earnings and delivered impressions for the same app and reporting scope.
| Report field or calculation | Calculator input | Unit and scope rule |
|---|---|---|
| Delivered ad impressions | Monthly ad impressions | Use the monthly impression total from the same revenue scope. Requests are not delivered impressions. |
| Your separately supported rate assumption or measured historical sample | Low scenario rate | Use per 1,000 ad impressions. This is an input scenario, not a reported confidence bound. The historical-rate helper sets all three rates to one measured rate. |
| AdMob UI eCPM; API IMPRESSION_RPM ÷ 1,000,000; or earnings ÷ impressions × 1,000 | Base scenario rate | Use per 1,000 ad impressions. Keep the revenue scope below; do not deduct a platform share twice. |
| Your separately supported rate assumption or measured historical sample | High scenario rate | Use per 1,000 ad impressions. This is an input scenario, not a reported confidence bound. The historical-rate helper sets all three rates to one measured rate. |
Using an AdMob API export? Convert ESTIMATED_EARNINGS and IMPRESSION_RPM from currency micros by dividing by 1,000,000 before entering earnings or eCPM. Convert MATCH_RATE and SHOW_RATE ratios into percentages by multiplying by 100. For example, 6,500,000 micros is 6.5 currency units, and a ratio of 0.8 is 80%. Use the export header’s currency; this tool does not convert currencies.
Definition sources: Google AdMob API: requests, impressions, match rate, and show rate; Google AdMob: glossary and mediation reporting scope.
Recalculate an Example: Synthetic Data, Not Market Rates
The invented historical sample has 120 USD of earnings in the scope above and 30000 matching ad impressions. Historical rate = 120 ÷ 30000 × 1,000 = 4 USD per 1,000 ad impressions. No platform share is deducted a second time.
For a separate monthly scenario, enter monthly ad impressions: 50000. Set low, base and high rates to 4 to represent this one historical sample.
Scenario check: 50000 ad impressions × 4 ÷ 1,000 = 200 USD for the month. The three scenario amounts are equal because their rates are equal. These numbers demonstrate the formula; they do not estimate a market payout.
Requests → matched requests → impressions: Report Fields to Calculator Inputs
Revenue scope: AdMob requests, matched requests, impressions and estimated earnings with compatible reporting scopes.
| Report field or calculation | Calculator input | Unit and scope rule |
|---|---|---|
| Ad requests; API AD_REQUESTS | Monthly ad requests | Use monthly requests from a compatible app-level scope. Do not add ad-source request totals to app-level requests. |
| UI match rate; API MATCH_RATE × 100; or matched requests ÷ requests × 100 | Match rate | Enter a percentage from 0 to 100. API ratios need percentage conversion. Matched requests count ads returned, not necessarily shown. |
| UI show rate; API SHOW_RATE × 100; or impressions ÷ matched requests × 100 | Show rate | Enter a percentage from 0 to 100. API ratios need percentage conversion. The request funnel is requests × match rate × show rate. |
| Your separately supported rate assumption or measured historical sample | Low scenario rate | Use per 1,000 ad impressions. This is an input scenario, not a reported confidence bound. The historical-rate helper sets all three rates to one measured rate. |
| AdMob UI eCPM; API IMPRESSION_RPM ÷ 1,000,000; or earnings ÷ impressions × 1,000 | Base scenario rate | Use per 1,000 ad impressions. Keep the revenue scope below; do not deduct a platform share twice. |
| Your separately supported rate assumption or measured historical sample | High scenario rate | Use per 1,000 ad impressions. This is an input scenario, not a reported confidence bound. The historical-rate helper sets all three rates to one measured rate. |
Using an AdMob API export? Convert ESTIMATED_EARNINGS and IMPRESSION_RPM from currency micros by dividing by 1,000,000 before entering earnings or eCPM. Convert MATCH_RATE and SHOW_RATE ratios into percentages by multiplying by 100. For example, 6,500,000 micros is 6.5 currency units, and a ratio of 0.8 is 80%. Use the export header’s currency; this tool does not convert currencies.
Definition sources: Google AdMob API: requests, impressions, match rate, and show rate; Google AdMob: glossary and mediation reporting scope.
Recalculate an Example: Synthetic Data, Not Market Rates
The invented historical sample has 120 USD of earnings in the scope above and 30000 matching ad impressions. Historical rate = 120 ÷ 30000 × 1,000 = 4 USD per 1,000 ad impressions. No platform share is deducted a second time.
For a separate monthly scenario, enter monthly ad requests: 100000; match rate: 80%; show rate: 75%. Set low, base and high rates to 4 to represent this one historical sample.
Funnel check: 100000 requests × 80% × 75% = 60000 delivered impressions in the scenario.
Scenario check: 60000 ad impressions × 4 ÷ 1,000 = 240 USD for the month. The three scenario amounts are equal because their rates are equal. These numbers demonstrate the formula; they do not estimate a market payout.
Derive and Apply Your Historical Rate
Use earnings and the matching denominator from one report sample. Enter the earnings in the main calculator’s selected currency; changing its currency does not convert money. Exclude advertiser spending and referral commissions. For estimated earnings, keep that estimated scope consistent rather than mixing it with a finalized payment.
Current mode: Ad impressions + AdMob eCPM. Scope: AdMob estimated ad earnings and delivered impressions for the same app and reporting scope. Currency: USD. Changing mode or currency clears historical inputs.
Keep a Comparable Test Worksheet
Download the Revenue Test Worksheet (CSV). Add one row for each comparable report segment. Record the dates, currency, geography, device, format, revenue scope and denominator definition with the totals. Keep app-level and ad-source scopes separate, and compare rates only after reconciling their definitions.
AdMob Revenue by App Type
Game and utility apps can create different advertising opportunities, but the category name does not set an eCPM. A game with an optional rewarded placement needs a model of how often users choose it and how often a matched ad is shown. A utility app with short visits needs a model of the placements those visits actually display. Downloads and monthly active users do not supply either count.
| App scenario | Build the volume from | Compare before changing the rate |
|---|---|---|
| Game with optional rewarded placements | Delivered rewarded impressions, or requests with matching and showing accounted for | Placement participation, country, platform and ad-source scope |
| Utility app with brief sessions | Delivered impressions from the actual supported placements | Session behavior, placement visibility and format mix |
| App with several formats | Separate impression totals for each format | Each format’s corresponding eCPM, then the combined revenue |
Build separate calculations for rewarded, interstitial and banner inventory when their rates differ. Add their revenues afterward. A combined eCPM is total earnings divided by total impressions, multiplied by 1,000; a simple average of format eCPMs can misrepresent a small, high-rate placement.
Compare Mediation Setups on the Same Inventory
A mediation comparison starts with reporting scope. Match app, operating system, ad unit, country, consent conditions and dates before comparing an existing setup with another one. App-level requests and ad-source requests describe different reporting scopes; adding them can count parts of the same delivery process more than once. The AdMob glossary explains the reporting definitions to check.
For a setup using several ad sources, reconcile which earnings and impressions each source report includes. For manually entered or custom-event eCPM, establish whether the figure is an estimate or reconciled revenue. If one setup reports higher eCPM but delivers fewer impressions, calculate total revenue before calling it an improvement.
Compare match rate and show rate separately. Match rate addresses whether requests return ads; show rate addresses whether returned ads become impressions. Improving one step does not guarantee the other. Also assess loading behavior and the app task the placement interrupts. This calculator supplies the revenue arithmetic, while a mediation decision needs a comparable app test and reconciled reports.
Official definitions and sources
- Google AdMob: eCPM definition and fluctuations
- Google AdMob API: requests, impressions, match rate, and show rate
- Google AdMob: glossary and mediation reporting scope
Frequently Asked Questions
What is the formula for AdMob revenue?
Estimated revenue equals ad impressions multiplied by eCPM, divided by 1,000. In the funnel mode, impressions are first estimated from requests multiplied by match rate and show rate.
Why are requests higher than impressions?
Some requests do not return an ad, and some returned ads are not shown. Match rate measures the first step; show rate measures the second.
Can 10,000 monthly active users determine AdMob earnings?
No. You also need an explicit model of sessions and ad requests or delivered impressions per user, together with the corresponding rates. MAU does not equal monthly ad impressions.
Should rewarded ads and banners use the same rate?
Use rates from matching report segments. Calculate each format separately when its impression volume or eCPM differs, then add the earnings.
Does the calculator include in-app purchases?
No. It models advertising earnings only. In-app purchases, subscriptions, and other app revenue should be tracked separately.
Is AdMob match rate the same as the share of requests that became impressions?
No. Match rate measures matched requests divided by requests. A matched ad may still never be displayed. Multiply match rate by show rate to model the share that becomes impressions, using rates and counts from a compatible reporting scope.
How should I compare a game app with a utility app?
Separate each app by ad format, country and platform, then compare delivered impressions and corresponding eCPM. Also compare requests per session and whether matched ads are shown. The app category alone does not determine a revenue rate or the number of impressions each user creates.
Can I combine rewarded, interstitial and banner earnings?
Yes. Calculate each format using its own delivered impressions and eCPM, then add the revenue. If you need one combined eCPM, divide that total revenue by the total impressions and multiply by 1,000. Do not average the format rates without weighting by impressions.
How can I compare AdMob with another mediation setup?
Use the same app inventory, formats, countries and reporting period. Reconcile which ad sources, requests and earnings each report includes. Compare delivered revenue alongside match rate, show rate and app behavior; a higher reported eCPM alone cannot establish a better total result.
Can I add ad-source request counts to app-level requests?
Do not add them unless the report definitions establish that the counts are distinct. App-level and ad-source reports can represent different stages or scopes of mediation. Use a consistent scope throughout the requests, match rate, show rate and earnings calculation.
Why can a higher AdMob eCPM still produce lower revenue?
Revenue depends on both the rate and delivered impressions. A higher eCPM applied to fewer impressions can produce less revenue. Review changes in requests, matching, showing, format mix and audience before attributing the outcome to the rate alone.
Can I forecast next year from one month of AdMob earnings?
The annual output repeats the monthly scenario 12 times. It does not predict app growth, retention, demand changes or reporting adjustments. Build separate scenarios for those changes and replace the example inputs with assumptions supported by your own app data.