After approval, the temptation is to paste the ad code into eight slots and watch the money flow. What actually happens: Cumulative Layout Shift jumps, bounce rate climbs, and your RPM drops because the page is so noisy nobody reaches the high-value units. This is the placement workflow we use to add ads that pay while keeping every Core Web Vital in the Good zone.
TL;DR
Start with three reserved manual units on long articles: one in-content after the intro, one mid-article, one at the end. Give every slot a fixed min-height so the late-loading ad cannot push content down. Load the AdSense script async and lazy-load below-the-fold slots. Measure Core Web Vitals before and after in PageSpeed Insights, and keep CLS under 0.1, LCP under 2.5s, and INP under 200ms (the 2026 thresholds, judged at the 75th percentile of real visitors). If a slot pushes any metric out of Good, pull it. Re-test every quarter.
What ads actually cost your page
An AdSense unit is JavaScript that injects an iframe at runtime. Each one adds network latency, a layout shift if the space was not reserved, and a visual interruption. The revenue-vs-experience trade-off is real and measurable: more units lift revenue per visitor up to a point, then density degrades dwell time and search ranking, and your effective revenue falls with them.
Two policy facts shape where the ceiling sits in June 2026:
- Google retired the old “three ads per page” cap. It is replaced by the Valuable Inventory policy: the volume of ads must not exceed the actual content, or Google may limit or disable serving on the page. There is no magic number now, only a content-to-ad ratio you have to respect.
- The Better Ads Standards were updated for desktop and mobile web, with compliance assessed from May 14, 2026. The hard line is mobile ad density: ads must not exceed 30% of the vertical height of the main content. Chrome enforces this directly and can filter ads on offending pages.
So the realistic sweet spot for an indie content site is still three to four well-placed units per long article, not because of a numeric cap, but because that is where you stay under the 30% density line and keep Core Web Vitals green.
Symptoms you are reading the right page
- You just got approved and want to add ads deliberately instead of dumping in Auto Ads.
- You turned on Auto Ads or stacked manual units and your Core Web Vitals report went red.
- Readers say the site is “covered in ads.”
- Your page RPM trails the typical range for your topic and you suspect placement, not demand.
The Core Web Vitals numbers ads have to respect
Google judges these at the 75th percentile of real-user data in the CrUX dataset, so at least 75% of your visitors need a Good score for the URL to pass.
| Metric | What it measures | Good (as of June 2026) | Where ads hurt it |
|---|---|---|---|
| LCP | Largest Contentful Paint (load) | under 2.5s | Ad script competes for bandwidth and main thread before your hero loads |
| INP | Interaction to Next Paint (responsiveness) | under 200ms | Ad JS executing during a tap/scroll delays the next paint |
| CLS | Cumulative Layout Shift (stability) | under 0.1 | Unreserved ad slots push content down as they fill |
INP replaced First Input Delay as a Core Web Vital in March 2024, so ignore any older guide that still tells you to chase FID. INP is the metric most sites fail in 2026, and ad scripts are a common cause because they tie up the main thread exactly when a user is trying to scroll or tap.
Step by step
-
Choose your strategy: manual, Auto Ads, or hybrid. For most indie sites, start manual. You control placement, reserved space, and density. The 2026 best-practice pattern is hybrid: place two to three tested manual units, then enable Auto Ads with “Use existing ad units” on so Auto Ads fills around your anchors instead of fighting them.
-
Create three named manual units in the AdSense dashboard: in-content (responsive display), mid-article, and end-of-article. Name them so the performance report is readable later (for example
art-incontent-top,art-mid,art-end). -
Reserve a fixed-height container for every slot before the ad loads. This single step is what keeps CLS under 0.1. Wrap each unit in a div with a
min-heightmatching the expected ad size:<div class="ad-slot" style="min-height:280px"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-0000000000000000" data-ad-slot="0000000000" data-ad-format="auto" data-full-width-responsive="true"></ins> <script>(adsbygoogle = window.adsbygoogle || []).push(\{\});</script> </div>The reserved height absorbs the ad when it fills, so content never jumps. A medium rectangle wants roughly
min-height:280px; a leaderboard slot, aboutmin-height:110px. -
Place the first unit after the first two or three paragraphs, never above the
h1. An ad above the title kills dwell time and trips Google’s “ads above content” concern. Above-the-fold in-content is fine; an anchor or vignette on top of the headline is not. -
Defer and lazy-load the ad scripts. Load the AdSense library with
async. Addloading="lazy"to below-the-fold manual units, and on Auto Ads usedata-ad-frequency-hint="30s"to slow injection. This protects LCP (the library no longer races your hero image) and INP (less main-thread work during early interactions). -
Measure before and after. Run the page through PageSpeed Insights and check the Search Console Core Web Vitals report after real traffic accrues. If LCP, INP, or CLS drops out of Good, remove the worst-performing slot and re-test. Treat field data (CrUX) as the source of truth; lab scores only flag the obvious regressions.
A documented hybrid test makes the trade-off concrete: a site moving from pure Auto Ads to two manual anchors plus existing-units Auto Ads recovered its PageSpeed score from 81 to 89 while revenue dropped only about 3%. Control beats convenience.
Common pitfalls
- A 300x250 jammed above the
h1to “maximize visibility.” Visitors scroll past it, bounce rate rises, and you flag the ads-above-content issue. Put it after the intro. - No reserved height on the container. The ad loads late, content shifts down, and CLS goes from 0.05 to 0.40 in one render. Always set
min-height. - More than one ad per viewport on mobile. Two stacked units is a UX problem and pushes you toward the 30% mobile density line Chrome now enforces.
- Leaving auto-refresh on. It inflates impressions but can crash RPM and annoy readers. Default it off.
- Set-and-forget. Re-test placement every quarter. The first layout is rarely the best one, and AdSense ad strength and fill rates drift over time.
Who this is for, and when to skip
For: newly approved publishers adding their first units, and existing publishers whose Core Web Vitals tanked after adding ads. Skip if you are still in the application phase (never run live ads before approval), or if your real bottleneck is traffic rather than monetization. Three to four units on a page that gets 50 visitors a day earns nothing meaningful; fix traffic first.
FAQ
- Auto Ads or manual placement? Manual for predictability, or hybrid for the best of both. Place two to three tested manual anchors, then enable Auto Ads with “Use existing ad units” turned on. Pure Auto Ads is convenient but its placement quality is uneven and harder to keep inside Good Core Web Vitals.
- How many ads is too many now that the page cap is gone? Density, not a count, is the rule. Stay under one ad per mobile viewport, keep ads below 30% of the main content’s vertical height (the Better Ads Standards line Chrome enforces), and never let ad volume exceed your actual content (AdSense’s Valuable Inventory policy). Three to four units on a long article is a safe target.
- Do ads hurt SEO directly? Not the ads themselves, but their side effects do: CLS regressions, slower LCP, and worse INP all feed into Google’s page experience signals. Keep all three Core Web Vitals in Good and density reasonable, and the SEO impact is minimal.
- What thresholds do I actually have to hit? LCP under 2.5s, INP under 200ms, CLS under 0.1, each measured at the 75th percentile of real visitors. INP is the one most sites miss in 2026, and ad JavaScript is a frequent cause.
- Why are my mobile and desktop fill rates so different? Usually placement, not demand. The common gap is anchor or vignette formats firing on mobile but not desktop, or sticky desktop units mobile cannot render. See mobile vs desktop fill rate.
- Should I show ads on every page? No. Homepage, About, Contact, and search pages typically should not carry ads, and your Privacy Policy must not. Articles and category pages can. Some publishers also exempt their highest-converting pages entirely.