Studies
Original data, from sites we run.
Most advice about ad monetization is opinion. These are measured numbers from our own network, the same first-party data the audit is built on.
Cornerstone
How AdSense actually pays
The whole machine, taken apart with real numbers: what a view and a click are worth, why 93% of revenue is US traffic, the demand sources behind it, the vignette that pays 5x, and the weekend cliff.
Diagnostics
Why your RPM chart is lying to you
On a site we run under a thousand page views a day, daily RPM ranged from $2.93 to $49.26 in one month. One click moves a whole day. The rule we use so the swings stop driving decisions.
Ad networks
When it's worth graduating your ad network
AdSense pays a few dollars per thousand views; a premium managed network can pay ten times that, but gates entry on traffic. The RPM ladder across sites we run, and the honest test for moving up.
Seasonality
The revenue spike that isn't about you
A site we run posted a 6x RPM day with no extra traffic. The whole delta was cost per click, and an unrelated site we run spiked the same two days. The quarter-end budget flush, and when to expect it.
Page speed
The anchor ad that shifts your own layout
AdSense's anchor overrides the height you reserve and shifts the page as it fills. It drove page CLS to 0.303, three times over the limit. The safe-reveal fix took it to 0.013.
Page speed
Lighthouse blames your fonts. It's the ads.
On three of four sites we run, Lighthouse pinned a layout-shift failure on web fonts. The real cause was AdSense Auto ads. Fixing the fonts left CLS at 1.00; gating the ad library fixed it.
RPM drivers
The schema tag that cut our RPM by three quarters
We marked a health site up as news. AdSense rebucketed its inventory and RPM fell from $2.61 to $0.66, with no content change. Why a label moves the money, and the free dashboard that catches it early.
Ad density
We added more ads. Here's what we still don't know.
A sweep raised our ad density 51% on a site we run, on traffic that fell 7%. Whether that earned more is genuinely unknowable at this volume, and pretending otherwise is how publishers over-monetize.
RPM drivers
Not every page view can be sold
Your traffic is three populations and only one pays: human commercial, misdirected foreign navigation, and machines. One portal query drew 6,807 impressions at a 0.0% click rate. Counting the wrong traffic dilutes your RPM.
Growth
More pages didn't mean more ad revenue
We launched a site with 2,340 programmatic pages to build ad inventory fast. Its best week ever was 12 clicks at position 40, and 83% of the pages never earned an impression. Empty slots on pages nobody reaches earn nothing.
Site approval
Does AdSense care about your images?
No minimum image count, no stock-versus-original rule, no image-quality bar for approval. But images matter in four confirmed ways, from thin-text rejections to layout shift. What Google actually says, sourced, and what is folklore.
Geography
Country tiers, and the one geo lever you can pull
The viewer’s country sets the ceiling on what an impression is worth. What Tier 1, 2, and 3 really mean, why a US view is worth about 7x an India view in our own data, why the public country-CPM tables are guesswork, and the one geo lever a small publisher actually controls: the underserved non-English Tier 1 market.
Revenue features
Offerwall and Ad Blocking Recovery
Two AdSense features most publishers never switch on, both raise revenue without adding a single display ad. Offerwall even earns from the consent-declined and ad-block traffic your ads never reach. What they are, what they are worth, and how to turn them on.
Policy
Dishonest declarations
Google has a publisher policy by this exact name, and it is one Google will suspend an account over. It governs the truth of what you tell Google: account details, ad-request URLs, geolocation, ads.txt. What it prohibits, how to resolve a violation, and how to stay clean.
Site approval
Low value content
The most common AdSense rejection, and the most misread. It rarely means your writing is bad; it means Google could not find enough original, substantial content to justify the site. What Google checks, the real causes, and how to fix it before you reapply.
Policy
Scaled content abuse
The Google policy that named mass-produced, low-value pages. It targets producing many pages mainly to rank, by AI, scraping, or templates. How it shows up for publishers, why those pages quietly never get indexed, and how to fix it.
Policy
No content
AdSense will not run ads on a screen with no publisher content. "No content" is a common rejection and a common ad-serving limit, and it is usually placement, not quality: under-construction, behind-login, error, and thank-you screens. How to fix it.
Ad sizes
Do ad sizes matter?
We run responsive units, so AdSense picked the size for every impression. The highest-earning size was no fixed size at all, and the most-viewable size earned almost nothing.
RPM drivers
It wasn't the niche
We expected advertiser demand to explain the RPM gap between two sites we run. The cost per click was nearly identical, $0.16 vs $0.19. The 2.7x gap was viewability and click-through, not the topic.
Ad operations
A higher fill rate did not mean more money
Two sites we run. One fills 83% of its ad requests, the other 41%. The one that fills fewer earns more than double the page RPM. Fill rate is a vanity metric, not a revenue lever.
Ad networks
The 2026 ad network shake-up: Ezoic up, Raptive down
The entry thresholds moved in opposite directions this year. Ezoic raised its bar to 250k monthly users; Raptive dropped to 25k pageviews. The on-ramp for new publishers inverted.
Viewability
Where an ad sits decides whether it gets seen
Active View viewability by placement across our network. A 60-point spread, from a sticky anchor at 88% to a page-bottom unit at 28%.
Page speed
We hold the ads until the reader moves
On some sites we run, we do not request an ad until the reader scrolls or taps. It clears the Core Web Vitals cost of ads from the initial load, at the price of the impressions a bouncing visitor never triggers. A deliberate trade, not a free win.
Ad density
The point where another ad starts costing you money
Past the Coalition for Better Ads 30% mobile line, one more unit does not add revenue. Chrome can pull all your ads for crossing it, and below it, viewability, Core Web Vitals, and reader patience make each extra unit earn less.