Open any ad dashboard and you will see a wall of numbers: impressions, requests, clicks, CTR, viewability, revenue. They all matter a little, but three of them tell you almost everything about the health of your ad revenue: eCPM, RPM and fill rate.
This guide explains each one, shows the formulas with simple examples, and, most importantly, explains how to read them together, because each one on its own can mislead you.
eCPM: what an impression is worth
eCPM means effective cost per mille, where "mille" is Latin for a thousand. It tells you how much you earned for every 1,000 ad impressions that were actually shown.
eCPM = (ad revenue ÷ impressions) × 1,000
Example: an ad unit showed 48,000 impressions yesterday and earned $96.
eCPM = ($96 ÷ 48,000) × 1,000 = $2.00
eCPM is the best measure of price: how much buyers are paying for your inventory. It goes up when more advertisers compete for your impressions, when your readers are in high-value countries, and when your ads are placed where people actually see them.
CPM vs eCPM
CPM is a price an advertiser agrees to pay per 1,000 impressions. eCPM is the result: what you really earned per 1,000 impressions after mixing many advertisers, many prices and sometimes other pricing models such as cost per click. On your side of the market, eCPM is the number that matters.
Fill rate: how often a buyer showed up
Every time an ad slot on your page asks for an ad, that is an ad request. Not every request gets an ad. Fill rate is the share of requests that did.
Fill rate = (filled impressions ÷ ad requests) × 100%
Example: 60,000 requests, 48,000 of them filled.
Fill rate = (48,000 ÷ 60,000) × 100% = 80%
The other 12,000 requests were unfilled: the space was there, a reader was there, and it earned nothing. Fill rate is the best measure of demand coverage. It drops when too few buyers want your traffic, when floor prices are set too high, or when something technical, such as a missing ads.txt line, keeps buyers away.
RPM: what a page view is worth
RPM means revenue per mille: how much you earned for every 1,000 page views, from all the ads on those pages together.
RPM = (ad revenue ÷ page views) × 1,000
Example: the site had 20,000 page views and earned $96 in total.
RPM = ($96 ÷ 20,000) × 1,000 = $4.80
RPM is the number closest to your business result, because it answers the real question: how much is my traffic worth? It combines price (eCPM), coverage (fill rate) and how many ads each page shows into a single figure. If you want one number to track week after week, track RPM.
eCPM vs RPM: why they are different
The two are easy to confuse because both are "per thousand". The difference is per thousand what:
| eCPM | RPM | |
|---|---|---|
| Per 1,000… | ad impressions | page views |
| Measures | price of your inventory | value of your traffic |
| Goes up when | buyers pay more per ad | buyers pay more, more requests fill, or pages show more viewable ads |
| Can mislead when | you remove ads (eCPM may rise while revenue falls) | traffic quality changes suddenly |
Because a page usually shows more than one ad, RPM is often higher than eCPM. In the example above, 20,000 page views produced 48,000 impressions, about 2.4 ads per page, so an eCPM of $2.00 became an RPM of $4.80.
How the three numbers work together
The relationship is simple once you see it:
RPM ≈ eCPM × fill rate × ad requests per page view
That formula explains most of the surprises publishers run into:
- eCPM up, revenue down. You raised floor prices. Buyers who pay more still win, so eCPM rises, but many cheaper bids are now rejected, fill rate falls and total revenue drops.
- Fill rate up, eCPM down. You accepted more low bids. More impressions sell, but the average price falls. Whether this is good depends on what happened to RPM.
- Everything flat, revenue down. Page views fell. Check traffic before you blame the ad setup.
- RPM up, nothing else changed. Readers are seeing more pages or more ads per page, or your traffic mix moved toward more valuable countries.
Judge every change by RPM. eCPM and fill rate explain why RPM moved.
A quick diagnosis table
| What you see | Most likely cause | What to try |
|---|---|---|
| Low fill rate | Few buyers, floors too high, ads.txt incomplete | Add demand through mediation, lower floors, fix ads.txt |
| Low eCPM | Weak competition, low-value countries, poorly seen placements | More competing buyers, better placement, improve viewability |
| Good eCPM, low RPM | Few ads per page or ads below the fold that rarely load | Add an in-content unit, move ads up the page |
| Sudden drop in all three | Technical problem or invalid traffic flagged | Check the tag is on the page, check traffic quality |
Other numbers worth a glance
- Viewability: the share of impressions that were actually on screen long enough to count as seen. Higher viewability attracts higher bids. See viewability and ad refresh.
- CTR: clicks divided by impressions. Useful for spotting problems (a sudden, unusually high CTR can signal invalid clicks), but on CPM-based demand it does not directly drive your earnings.
- Unfilled requests: the raw count behind a low fill rate. Watching it per ad unit shows you exactly which slot is losing money.
Common mistakes when reading these metrics
- Comparing a single day. Ad prices move by weekday and season. Compare the same weekdays or full weeks, and expect prices to rise toward the end of the year (see why ad rates rise in Q4).
- Comparing with other people's numbers. An eCPM figure from another site means little without knowing its countries, niche and formats.
- Chasing eCPM alone. The highest eCPM is often achieved by showing very few ads. That is rarely the highest revenue.
- Mixing gross and net. Make sure you know whether a figure is the network's gross revenue or your own share after revenue share.
Where to find these numbers in Advorex Media
Your Advorex Media dashboard shows your earnings, gross revenue, eCPM, impressions and estimated RPM for any date range, from today back to a custom period. Fill rate is monitored on our side on every account, so a unit that stops filling is noticed and followed up. The Earnings tab shows your own share next to the gross figure, the Revenue tab breaks results down per site and per ad unit, and Statistics groups them by site, ad slot, country or date, so you can see exactly which part of your inventory is moving the numbers.
Key takeaways
- eCPM = revenue per 1,000 impressions: the price of your inventory.
- Fill rate = share of ad requests that showed an ad: your demand coverage.
- RPM = revenue per 1,000 page views: the value of your traffic, and the best single number to track.
- Read them together: RPM tells you what happened, eCPM and fill rate tell you why.
Frequently asked questions
What is a good eCPM?
There is no universal number. eCPM depends heavily on your readers' countries, device mix, niche, ad formats and the time of year. Compare your own eCPM week over week and between your own ad units rather than against numbers quoted online.
Why is my RPM lower than my eCPM?
It usually is not. RPM is per 1,000 page views and a page can show several ads, so RPM is often higher than eCPM. If your RPM is lower, many page views are showing no filled ad at all, which points to low fill rate or ads placed where they never load.
Should I aim for 100% fill rate?
Not at any price. A very high fill rate achieved by accepting very cheap bids can lower your average eCPM. The goal is the best revenue per page view, which comes from a sensible balance of price and fill.
What is the difference between CPM and eCPM?
CPM is the price an advertiser agrees to pay per 1,000 impressions. eCPM, or effective CPM, is what you actually earned per 1,000 impressions after everything is counted, across all advertisers and pricing models.
Turn these tips into revenue
Advorex Media puts several ad networks in competition for every impression on your site, with one lightweight tag and a dashboard that shows the real numbers.
Create your free account →