CPM ↔ RPM Converter

Convert a CPM assumption into the RPM it actually implies — or check what CPM a target RPM would require.

“Ad requests per page” means average ad requests per pageview — not already-filled impressions; fill rate is applied on top of this number, not baked into it.

RPM: $8 per 1,000 pageviews

Frequently asked questions

What's the difference between CPM and RPM?
CPM is priced per 1,000 AD IMPRESSIONS — an advertiser metric. RPM ("revenue per mille [pageviews]", sometimes called page RPM) is your actual earnings per 1,000 PAGEVIEWS — a publisher metric. They're only equal if every pageview produces exactly one filled ad impression, which is almost never true: most pages show multiple ad units, and not every ad request is filled. RPM = CPM × (ad units per page) × (fill rate).
Why does this mix-up matter?
Multiplying your traffic by a CPM number you saw somewhere (a network's average, a benchmark chart, a number a friend mentioned) instead of by your actual RPM is the single most common way online ad-revenue estimates end up wildly optimistic. A $10 CPM with 2 ad units per page and a 70% fill rate is a $14 RPM, not a $10 RPM — and a $10 CPM with 1 small ad unit and a 45% fill rate is only a $4.50 RPM, less than half of what a naive CPM-times-pageviews calculation would suggest.
How do I find my own real RPM instead of estimating it?
Check your ad network's dashboard, but read the label carefully — they don't all report the same thing. AdSense reports page RPM directly (revenue per 1,000 pageviews), measured from your actual traffic. Ezoic's headline metric is EPMV (earnings per 1,000 visitors/sessions, not pageviews) and Mediavine's dashboard defaults to Session RPM rather than Page RPM (a toggle switches it) — both of those are per-SESSION figures, and dividing by your average pages-per-session first is needed to get a page RPM comparable to this tool's output. Whichever figure you use, your dashboard's real measured number is always more accurate than converting from an assumed CPM. Use this converter to sanity-check an assumption before you have that real data, or to check whether a target RPM you're hoping for implies a realistic required CPM.
What does "ad requests per page" mean here?
The average number of ad requests per pageview — not already-filled impressions. Fill rate is applied to this number separately to get filled impressions, so entering an already-filled count would apply fill rate twice and understate the result. A page's slot count is a starting point, but visitors who never scroll to a lower slot lower the real average, while an auto-refreshing slot (common at 30 seconds or more per pageview dwell time) can push it above the slot count on a long visit.