AdSense Ads Not Showing: What to Check First
AdSense ads not showing after approval? Blank-Then-Trace: Policy center, code, ads.txt, blockers—before you panic. Official help links; no fake RPMs.

AdSense ads not showing after approval usually means a blank slot, a collapsed unit, or reports that look dead—not a second application. The job is diagnosis, not another “how to get approved” essay.
This page is Blank-Then-Trace. It is not the AdSense approval checklist (before you apply). It is not rejected: what to fix, not review time / pending, not Auto ads vs manual units, and not a deep invalid traffic playbook. Those posts own different intents.
Disclosure: Educational only. We do not promise fill rates, RPM, or earnings. Follow Google’s live AdSense Help when labels change. CashPilot may earn from some links at no extra cost to you.
Table of contents
- Blank-Then-Trace
- Confirm the blank is real
- Trace A — Account and Policy center
- Trace B — Code on the page
- Trace C — ads.txt and site identity
- Trace D — Local and demand filters
- When blank is “limited,” not broken
- What not to do
- FAQ
- Run one page through the trace
Blank-Then-Trace
Original framework for this post. Stop guessing themes and plugins until you know where the blank starts.
BLANK-THEN-TRACE
┌──────────────────────────────────────────────────────────┐
│ 0 Confirm blank (incognito + another device) │
├──────────────────────────────────────────────────────────┤
│ A Policy center / serving status / official troubleshooter │
├──────────────────────────────────────────────────────────┤
│ B Ad code present, correct site, theme not stripping JS │
├──────────────────────────────────────────────────────────┤
│ C ads.txt Authorized + site listed as expected │
├──────────────────────────────────────────────────────────┤
│ D Blockers, consent, blocking controls, low demand │
└──────────────────────────────────────────────────────────┘
Work top-down. Jumping to Trace D while Trace A shows a serving disable wastes a weekend.
Official starting points (re-check live Help):
- AdSense ads not showing troubleshooter
- Troubleshoot ad coverage issues
- Ad serving was disabled on your page or site
- Fix policy issues that affect ad serving
Confirm the blank is real
Before you rewrite your theme:
- Open the page in a private window with extensions off.
- Try a second device or network (some office networks block ad domains).
- Note whether all pages are blank or only one template (home vs single post vs archive).
- In AdSense, check the same date range for coverage / impressions—not only the live eye test.
If ads appear for other visitors in reports but never in your browser, local blockers are the story. If reports also look empty, keep tracing.
Trace A — Account and Policy center
Open Policy center first. Look for policy issues, regulatory issues, advertiser preferences, crawler errors, and ad serving statuses. Google documents how serving can be restricted or disabled when policies are not met.
Ask:
- Is serving disabled on a page, a site, or the account?
- Is there a limited ad serving status (fewer ads while traffic is assessed)?
- Do you need to fix something and request a review, or is the status automatic?
If the Policy center names a URL, fix that pattern site-wide—example pages are often samples, not the only offenders. For warning workflow detail, use AdSense Policy Center warnings. For traffic-quality limits without rewriting this page into an IVT guide, skim invalid traffic for small blogs after Trace A is clear.
Run Google’s ads not showing troubleshooter while signed into the affected account. It is built for AdSense for Content coverage problems—not a substitute for reading the Policy center, but a useful parallel check.
Trace B — Code on the page
If Policy center is quiet and the troubleshooter points at implementation:
- Confirm the site in AdSense matches the live hostname (www vs non-www, correct domain).
- View source or inspect: is the AdSense script present? Did a page builder or optimization plugin strip or defer it incorrectly?
- On WordPress, broken header/footer injection is common—use WordPress AdSense code placement without breaking the theme for placement hygiene, not for approval drama.
- Auto ads vs manual units is a strategy choice once code loads; empty slots are not fixed by debating formats alone. Keep that debate on Auto ads vs manual units.
One practical test: temporarily place a single known-good unit on a simple post template. If that unit fills and the fancy sidebar never does, the theme layout—not your “niche RPM”—is the suspect.
Trace C — ads.txt and site identity
Coverage help calls out ads.txt problems as a demand and revenue factor. Wrong paths, stale seller lines, or Unauthorized status can leave inventory looking “approved but underfed.”
Check:
- File reachable at
https://yoursite.com/ads.txt(root of the site Google expects). - Status inside AdSense for that property.
- No accidental duplicate or conflicting lines after a host move.
Deep walkthrough of Authorized / Not found / Unauthorized: ads.txt for AdSense.
Also confirm the site you are staring at is the one connected in AdSense. Migrating hosts while leaving an old property active is a classic blank-site trap.
Trace D — Local and demand filters
Only after A–C:
- Ad blockers and privacy extensions on your machine.
- Consent / CMP requirements in regions where personalized ads need a certified setup—wrong consent can change what can serve (related “limited ads” privacy mode is different from blank-everything; see AdSense limited ads when the dashboard language says limited, not merely empty).
- Blocking controls that remove too many categories or buyers—Help notes that heavy blocking can cut matched requests.
- Fixed-size units with thin demand vs responsive inventory (coverage article covers setup factors).
- New or low-traffic pages with little advertiser competition—blank can be temporary fill, not a broken account.
Do not invent a “secret niche blacklist.” Demand varies by content, geography, season, and page type. Track metrics calmly with CPM vs RPM for small blogs once ads actually serve.
When blank is “limited,” not broken
Google may limit how many ads an account can show while assessing traffic quality, or when invalid-traffic concerns appear. That can look like “ads not showing” on some impressions even though the account is approved.
Your move: read the exact status in Policy center, follow official ad-serving-limit guidance, keep publishing useful content, and avoid self-clicks or click-begging. Do not buy “AdSense unlock” freelancers. Pair with the limited-ads explainer above when the UI uses that wording.
What not to do
- Click your own ads “to wake the account.”
- Spam review requests without fixing what Policy center lists.
- Rip out every plugin on day one before confirming Trace A.
- Apply again for a second AdSense account to “fix blank ads” (multi-account policy risk—confirm live Program policies).
- Treat one blank homepage visit as proof the whole site is dead while reports show impressions elsewhere.
FAQ
See frontmatter FAQs for the structured answers rendered on the post page.
Run one page through the trace
Pick your highest-traffic post URL. In one sitting:
- Incognito check + second device.
- Screenshot or note any Policy center item for that site.
- Run the official ads-not-showing troubleshooter.
- Confirm ad code in source on that URL.
- Confirm ads.txt status.
- Only then change theme code or Auto ads settings.
If Trace A shows a policy disable, stop DIY layout experiments and complete Fix-Then-Review. If Trace A is clean and Trace B fails, fix placement. If both are clean and Trace C fails, repair ads.txt. Everything else is Trace D noise until those three are honest.
Approval got you in the door. Blank-Then-Trace keeps you from painting the wrong wall.
Keep learning
More guides in the same topic lane.
PDF to Text or PDF to Word: Which Job?
Need copy-paste plain text from a PDF or an editable Word file? Choose PDF to Text vs PDF to Word before upload—format, cleanup, and live tool links.
JPG to PDF or Protect PDF: Which Job First?
Photos still need a PDF packet, or the PDF only needs a password? Route JPG stacks vs Protect PDF before you lock the wrong file or skip the build step.
GSC Page Indexing or Sitemaps Report: Which First?
Page indexing explains why URLs are in or out of Google search. Sitemaps checks whether Google read your XML file—use this guide to pick the right GSC report.