Session RPM Explained: Benchmarks, Formula, and What "Good" Actually Looks Like
Session RPM (revenue per 1,000 sessions) measures how much a site earns per visitor journey, not per page. Formula: (Total Revenue / Sessions) x 1,000. A $4 to $8 session RPM is typical for general-interest web publishers in the US. Finance and insurance verticals run $15 to $30. Gaming runs $2 to $6.
The rest of this article covers the formula in detail, honest benchmarks by vertical and geography, why your number might be below the benchmark, the AdSense metric retirement that took effect in September 2025, and how mobile app session RPM differs from web.
The formula and what the numbers mean
Session RPM = (Total Revenue / Sessions) x 1,000.
Worked example: 500,000 sessions in a month, $3,000 in net ad revenue. Session RPM = (3000 / 500000) x 1000 = $6.00.
The denominator is sessions, not pageviews. A session is one visitor's continuous activity on your site (default 30-minute timeout in most analytics platforms). One visitor reading three articles in one visit is one session. The same visitor returning two days later is a second session.
A few measurement traps to know about up front:
- AdSense "ad sessions measurable" caveat. In AdSense, session RPM only covers a percentage of your AdSense for content traffic. Check the "Ad sessions measurable" metric to see what portion of your traffic is actually counted. If that number is below 90 percent, your session RPM reflects a biased sample. Higher-engagement sessions tend to be measurable more often, which can make your number look better than it is.
- AdSense session metric retirement. Google retired session-related metrics in AdSense from September 2025. Publishers running AdSense directly lost access to session RPM in their dashboard at that point. Publishers on managed platforms (Ezoic, Mediavine, Raptive) still see a version of it through the platform UI, calculated against their own session definition. This article uses session RPM as a publisher-side metric you can still calculate yourself from revenue and analytics-platform sessions.
- GA4 sessions vs AdSense ad sessions are not the same denominator. Mixing GA4 session counts with AdSense revenue produces a number that is internally inconsistent. If you are computing session RPM yourself, pick a single source of session counts and stick with it.
Session RPM vs page RPM: which one matters
Both are revenue per 1,000 events. The difference is which event.
- Page RPM = (Revenue / Pageviews) x 1,000. Measures revenue per page rendered.
- Session RPM = (Revenue / Sessions) x 1,000. Measures revenue per visitor journey.
- Impression RPM = (Revenue / Ad Impressions) x 1,000. Measures revenue per ad rendered. (This is sometimes called eCPM.)
Why the distinction matters: if you increase pageviews per session (more internal links, better related-content widgets, longer reads), pageview RPM falls because the same revenue is divided by more pageviews. But session RPM rises because the same number of sessions is now generating more revenue. Same publisher, same ad stack, two metrics moving in opposite directions.
A worked example. Last month: 100,000 sessions, 250,000 pageviews, $2,500 revenue. Page RPM = $10.00. Session RPM = $25.00. This month, same publisher: 100,000 sessions, 320,000 pageviews (you launched a related-articles widget), $3,000 revenue. Page RPM = $9.38 (down 6 percent). Session RPM = $30.00 (up 20 percent). Page RPM looks like regression. Session RPM tells the truth.
Session RPM is the better metric for evaluating whether your business is healthier this month than last month, because it controls for editorial and UX choices that change pageviews per session. Page RPM is the better metric for comparing two specific page templates against each other.
Both are downstream of impression RPM, which measures how well your ad stack is monetizing each ad call. A high-impression-RPM site with low session RPM is under-monetized (too few ads per session). A low-impression-RPM site with high session RPM is over-monetized (lots of ads, low CPMs).
Honest session RPM benchmarks by vertical (US, 2026)
This is the section the rest of the SERP does not have. Vendors who manage publisher revenue cannot publish honest benchmarks without implicating their own platform performance. Forum threads answer with "it depends" and refuse to commit to numbers. So here are the ranges I use as starting points, based on what I see across a wide range of publisher setups and on the Beamflow data layer that touches a large set of publisher domains.
These are ranges, not point estimates. Actual numbers depend on traffic composition, viewability, ad density, and stack quality.
- Personal finance and insurance: $15 to $30 session RPM. High-CPC advertisers, strong audience intent, premium demand stacks.
- B2B and SaaS content: $12 to $22. High advertiser CPM, lower fill on niche inventory, smaller addressable audience.
- Health and wellness: $8 to $18. Sensitive category, some advertiser restrictions on health-claim content.
- Food and lifestyle: $5 to $12. High pageviews per session helps. Recipe sites trend toward the higher end.
- General news and current events: $3 to $8. High volume, lower CPM, ad density limits driven by user experience.
- Gaming (web, not app): $2 to $6. Younger audiences, ad blocker rates higher (15 to 35 percent), some demand limits.
- Entertainment and celebrity: $3 to $7. High volume, lower advertiser demand per impression, brand safety pressure.
These ranges assume a US-majority audience, standard display and in-content ad formats, and no significant ad-quality issues. If your site is at the bottom of the relevant range, the issue is usually stack configuration, not traffic quality. If your site is above the high end, that often points to either a strong direct-deal book or, occasionally, a traffic-quality problem worth checking before AdSense or GAM takes a policy action against you.
Session RPM benchmarks by geography tier
The other half of the calibration question. If your audience is mostly US, your session RPM will land in the vertical range above. If your audience is mostly Tier 3, the absolute number will be much lower regardless of your stack. The benchmark question becomes: are you pricing the inventory you have correctly?
Typical session RPM ranges by geography tier:
- Tier 1: $4 to $20+ session RPM. US, UK, Canada, Australia. Wide range because vertical mix matters more than tier here.
- Tier 2: $1 to $5. Western Europe outside the UK, Japan, South Korea, Israel. Generally lower CPMs than Tier 1, but still meaningful demand.
- Tier 3: $0.30 to $1.50. Southeast Asia, Latin America, South Asia. Most demand here is performance-based, lower CPMs, lower fill.
- Tier 4: $0.10 to $0.50. Sub-Saharan Africa, parts of MENA, smaller emerging markets. Limited programmatic demand.
The blended session RPM you see in your dashboard is a weighted average across whatever geography mix your audience has. If 70 percent of your sessions are US and 30 percent are Tier 3, your blended number is mostly the US number. If the mix flips, the blended number drops significantly even if your stack is unchanged.
A common Reddit pattern is a publisher reporting "$5.80 session RPM, 70 percent US, 58,000 sessions per month" and asking if that is good. With 70 percent US weighting, $5.80 lands at the low end of general-interest web (the $3 to $8 range). That is not a traffic problem. It is a stack problem worth investigating: viewability, ad density, header-bidding setup, floor pricing.
Why your session RPM might be lower than the benchmark
Diagnostic checklist, in roughly the order of frequency I see them:
- Ad density is too low. Too few ad placements per session means you are leaving inventory unfilled. Most general-interest sites should be running 4 to 8 ad placements per long-form article. Below that, you are not capturing the demand that is available.
- Viewability is below 50 percent. Advertisers bid less on non-viewable inventory. GAM and AdSense both penalize it in pricing. If your viewability is 35 percent, your CPMs are structurally suppressed regardless of stack quality.
- High bounce rate. Single-page sessions earn one page worth of ads. Session RPM rises naturally when visitors see two or three pages per session.
- Wrong ad formats for the vertical. Sticky footer units and in-content units outperform standard leaderboards for most publisher types in 2026. If you are still relying mostly on a top leaderboard and a sidebar 300x250, you are leaving session RPM on the floor.
- Floor price set too high. Floors that block bids reduce fill, and a low fill rate tanks session RPM even when CPM looks great. Lower floors increase competition. Most publishers I audit have floors that are higher than they should be.
- Ad blocker prevalence in your audience. Gaming and tech audiences run 15 to 35 percent ad blocker rates. Session RPM reflects only the unblocked portion. There is no clean fix, but knowing the rate explains a chunk of the gap.
- Measurement error. If your AdSense "Ad sessions measurable" is below 90 percent, the session RPM you see is calculated on a biased sample. Often the higher-value sessions are measurable more reliably, which makes your dashboard number look better than your true revenue per visitor.
If you walk through this list and find two or three issues, that is your roadmap. Fix them in order of effort and impact: ad density and floor prices are usually the fastest wins.
Mobile app session RPM is a different number
Many readers of this article are app developers using AdMob, AppLovin MAX, Unity LevelPlay, or ironSource. App session RPM is not computed the same way as web session RPM, and the benchmark ranges are different.
App session is defined by app open and close events, not by web pageview navigation. The session boundary in iOS and Android is platform-defined. Mediation platforms compute session RPM as (revenue / app sessions) x 1,000.
Benchmark ranges for app session RPM (US, casual game apps, 2026):
- Banner only: $0.10 to $0.40. Minimal monetization. Most casual apps that rely on banners alone are leaving the bulk of their revenue on the table.
- Banner + interstitial: $0.30 to $0.80. Standard app monetization without rewarded video. Interstitial frequency caps and placement (no first-session interstitials, no pre-first-action) drive most of the variance.
- Banner + interstitial + rewarded video: $2 to $8+. Rewarded video is the single biggest unlock for casual game session RPM. The high end of this range is achievable with a well-tuned MAX or LevelPlay setup, healthy ad placement design, and a solid in-app reward integration.
If you are running a web-to-app funnel where web content links to your app, track web session RPM and app session RPM separately. The two have completely different dynamics and benchmark ranges. Mixing them in one dashboard makes both metrics misleading.
Common measurement mistakes that distort session RPM
Four traps I see often.
Mistake 1: mixing AdSense session data with GA4 session counts. AdSense ad sessions and GA4 sessions are different denominators. Using GA4 sessions with AdSense revenue produces a number that is internally inconsistent. Pick one source.
Mistake 2: calculating monthly session RPM without filtering for content pages. If your site includes checkout flows, login pages, or account pages with no ads, including those sessions in the denominator deflates your session RPM against benchmarks that measure content-only.
Mistake 3: comparing session RPM across different traffic channels without segmenting. Direct traffic, organic search, and social referral generate different pageviews-per-session patterns. Social traffic from short-form video usually has high bounce, lower session RPM. Organic search has higher pages-per-session, higher session RPM. Channel mix changes the headline number.
Mistake 4: assuming a rising session RPM means the stack is improving. If you added more ad units this month, session RPM rises. That is not always optimization. Sometimes it is ad density that has crept past the point of user tolerance. Watch session RPM alongside time-on-site and bounce rate. If session RPM is up and engagement is down, you are trading short-term revenue for long-term user retention.
What to do this week
If you want to use session RPM as a real management metric:
- Pick one source of session counts (your analytics platform), document it, and stop comparing to AdSense session counts.
- Compare your current session RPM to the vertical and geography benchmarks above. Identify your gap.
- Walk the diagnostic checklist. Find the two or three issues that explain most of the gap.
- Fix the highest-impact, lowest-effort items first (usually ad density and floor pricing).
- Re-measure in 30 days against the same baseline.
If your session RPM is significantly below the benchmark for your vertical and geography mix, and you have walked the checklist without finding an obvious cause, that is usually a stack-level issue that benefits from a second set of eyes. Book a 30-minute call. I will look at your numbers, your stack, and your placement design and tell you where the gap is.
Frequently asked questions
What is a good session RPM?
For a general-interest web publisher with mostly US traffic, $4 to $8 session RPM is typical. Finance and insurance verticals run $15 to $30. Gaming web sites run $2 to $6. These ranges assume standard display formats, viewability above 50 percent, and no significant ad-quality issues. The number changes substantially with geography mix: a Tier 3 majority audience will show much lower absolute session RPM regardless of vertical or stack quality.
What is the session RPM formula?
Session RPM = (Total Revenue / Number of Sessions) x 1,000. If you earned $3,000 from 500,000 sessions, your session RPM is $6.00. The denominator is sessions, not pageviews. A session is one visitor's continuous activity on the site, with most analytics platforms defaulting to a 30-minute inactivity timeout.
What is the difference between session RPM and page RPM?
Page RPM measures revenue per 1,000 pageviews. Session RPM measures revenue per 1,000 visitor sessions, regardless of how many pages are viewed. Session RPM is more stable and harder to game, because adding more pages per session raises revenue without necessarily raising per-page RPM. Session RPM is the better metric for tracking whether your business is healthier month-over-month. Page RPM is better for comparing two specific page templates.
Is AdSense removing session RPM?
Google retired session-related metrics in AdSense from September 2025. Publishers running AdSense directly no longer see session RPM in their AdSense dashboard. Publishers on managed platforms like Ezoic, Mediavine, or Raptive still see session RPM through those platforms, calculated against the platform's own session definition. You can still compute session RPM yourself from total revenue and your analytics-platform session count.
Why is my session RPM lower than benchmarks?
The most common causes are: low viewability (below 50 percent), high bounce rate (single-page sessions earn one page of ad revenue), floor prices set too high (reducing fill), and ad density that is too low for the number of sessions you receive. Check your "Ad sessions measurable" percentage in AdSense. If it is below 90 percent, your session RPM is calculated on a biased sample. Walk the diagnostic checklist before assuming the issue is traffic quality.
Is session RPM the same for mobile apps?
No. App session RPM is tracked differently in AdMob, AppLovin MAX, ironSource, and other mediation platforms. App sessions are defined by app open and close events, not page navigation. Benchmark ranges are also different. US casual game apps typically see $0.20 to $0.80 session RPM via banner and interstitial formats, and $2 to $8+ when rewarded video is in the mix. Track web session RPM and app session RPM separately if you have both surfaces.
Category
Monetization BasicsLast updated