This page focuses on the troubleshooting symptoms when Auto Ads and manual placements collide. If you haven’t chosen yet and want a strategic comparison (revenue, Core Web Vitals, control), see Auto Ads vs manual placements — which to use.
The common pattern: you started with Auto Ads to “set it and forget it,” later added manual <ins> slots in your article template for better revenue, and now your pages look like a slot machine — ads stacked on top of each other, layout shifting on every scroll, and the AdSense console flagging “ad density.” Below are the five real failure modes and how to untangle them.
Symptom 1: Two ads stacked back-to-back in the article body
How to spot it: Scroll through an article on mobile. You see an Auto Ads in-article slot land at paragraph 3, and your manual <ins> slot fires at paragraph 4. Same screen, two ad blocks, almost no content between them.
Why it happens: Auto Ads’ in-article inserter is unaware of your manual <ins> placements. It treats the page as if you had no ads at all and inserts wherever its algorithm finds “natural breaks.”
Fix: In AdSense console → Ads → By site → your site → Edit. Under “Ad formats,” turn off In-article and In-feed if you’re running manual in-article slots. Keep Auto Ads on only for Anchor and Vignette, which don’t conflict with body slots.
Symptom 2: Layout shift (CLS) spiking in Core Web Vitals
How to spot it: PageSpeed Insights or CrUX report shows CLS > 0.1 on mobile, and the affected element is an ad container. Lab tests in Lighthouse show the same.
Why it happens: Auto Ads inserts a <div> at runtime with no reserved height. The browser already laid out the page; the ad arrives 800ms later and shoves everything down.
Fix:
- For manual slots, always reserve height with CSS:
.ad-slot \{ min-height: 280px; /* match your responsive ad average */ display: block; \} - For Auto Ads, in AdSense console disable Anchor ads and Vignette ads on mobile if they’re causing the worst shifts (the dashboard shows per-format CLS).
- Confirm with
web-vitalslibrary logging CLS in real users for 1–2 weeks before declaring it fixed.
Symptom 3: Sidebar and Auto Ads sidebar both firing
How to spot it: On desktop, your manual sidebar <ins> shows an ad, and below or beside it Auto Ads has injected a second sidebar block.
Why it happens: Auto Ads’ “side rail” placement option is enabled, and your template doesn’t communicate “sidebar is already monetized.”
Fix: In AdSense → your site → Edit → turn off Side rail explicitly. There’s no way for Auto Ads to detect your existing manual sidebar; you have to tell it.
Symptom 4: Anchor ad covers your sticky footer / CTA
How to spot it: On mobile, your “Subscribe” or “Buy” sticky bar is hidden under an AdSense anchor ad. Users can’t tap your CTA.
Why it happens: AdSense anchor ads pin to bottom: 0 with high z-index. Your sticky element is also at the bottom but with a lower z-index.
Fix — one of:
- Turn off Anchor ads entirely in AdSense settings (cleanest).
- Move your sticky CTA to
bottom: 60pxso the anchor ad doesn’t cover it. - Detect the anchor ad DOM (
#google_ads_iframe_*near the bottom of<body>) and hide your sticky CTA when present.
The first option is usually right for content sites: an anchor ad earns less than a clear conversion path.
Symptom 5: “Ad density too high” warning in AdSense console
How to spot it: AdSense console → Policy center shows a “valuable inventory: ad-to-content ratio” warning on a specific URL.
Why it happens: Auto Ads thinks the page has 0 manual ads; your template thinks the page has 0 Auto Ads. Both insert independently and the total goes over.
Fix: See ad density violating policy. The short version: pick one. Either keep Auto Ads at full strength and remove most manual slots, OR cap Auto Ads to “Anchor + Vignette only” and rely on manual for in-body.
Shortest fix path
In hit-rate order:
- Pick one strategy per slot type: manual in-body OR Auto in-body, never both. Fixes ~60% of conflicts.
- Disable Auto Ads “Side rail” if you have a manual sidebar slot: fixes ~20%.
- Disable Auto Ads “Anchor” if you have a sticky CTA/footer: fixes ~15%.
- Reserve CSS height on every manual
<ins>: fixes CLS regardless of strategy.
Prevention
- Document your ad strategy in
README.mdof the project: “Auto Ads is on for X, Y. Manual handles A, B.” Future-you and any collaborator needs this. - Whenever you add a manual slot, immediately go to AdSense settings and disable the corresponding Auto Ads format.
- Run Lighthouse mobile + desktop after every Auto Ads setting change. Don’t trust the AdSense dashboard’s CLS numbers alone.
- Keep a screenshot of a typical article on mobile and desktop, updated quarterly. Visual diff against last quarter catches creeping density.
FAQ
Q: Will disabling Auto Ads in-article hurt my revenue? A: Usually no, if you have 2–3 well-placed manual slots covering the same positions. Auto Ads tends to inflate impression count but at lower CPMs.
Q: Can I A/B test Auto vs manual on the same site?
A: Not natively — AdSense doesn’t offer per-URL Auto Ads toggles. Workarounds (running Auto Ads only on /blog/* and manual on /articles/*) exist via the URL-pattern targeting in console, but they’re fragile.
Q: I disabled Auto Ads in-article but the ads are still appearing — why? A: Cache. AdSense settings take up to 30 minutes to propagate, and the CDN cache on your site may hold the page with the old slot for longer. Hard refresh in incognito to verify.
Q: Does using only manual placements fail AdSense review? A: No — manual is fully supported. Some publishers prefer it for exactly the control reasons above.
Q: Auto Ads injected an ad inside my code block — how do I stop it?
A: Add data-no-ads or wrap the code in a container with class adsense-disabled. Then in AdSense settings → Page exclusions, exclude that selector. Or move that part of the page outside the article body container that Auto Ads targets.