A website can attract thousands of visitors, contain correctly positioned Google AdSense units and still display large empty spaces where advertisements should appear. For publishers relying on advertising income, those blank slots can represent missed monetisation opportunities. However, an empty placement does not always mean something is broken.
Sometimes Google receives an ad request but cannot find a suitable advertisement. In other cases, the request is blocked by a browser extension, advertising code fails, consent signals restrict eligibility, or Google limits serving because of account or site-level concerns. The important distinction is between an ad that was never requested, a blocked request, and a completed request that returned no eligible advertisement. Each needs a different response.
1. First distinguish an unfilled ad from a broken ad placement
Google defines an unfilled ad space as a placement for which AdSense could not find a suitable ad. A request may reach Google's advertising system and still return no ad. That is different from a page where the AdSense script never loaded or the slot was never initialised.
Look at the page in a normal browser session and review the AdSense reports rather than relying only on visual inspection. If the advertising script is blocked, investigate the browser and implementation. If requests exist but coverage is low, examine demand, consent, policies and account status. If ads appear on some pages but not others, compare page template, content, device and ad-unit configuration.
2. Understand the AdSense coverage metric
Google defines coverage as the percentage of ad requests that returned at least one ad. The formula is: Coverage = (ad requests that returned ads ÷ total ad requests) × 100. For example, if 700 of 1,000 ad requests return ads, coverage is 70%. This is an illustrative calculation, not a benchmark or a prediction of revenue.
The metric is useful because page views, ad requests, coverage and ad impressions measure different things. A site can have steady traffic while the proportion of filled requests falls. Google's earnings troubleshooting guidance recommends reviewing page views, then coverage, then impressions, starting at site level before drilling into ad units and devices.
In AdSense Reports, enable the coverage metric where available and compare comparable date ranges. Segment by device, site, ad format and placement. Very low coverage on one mobile layout suggests a different explanation from a broad account-level decline. An unfilled request is not itself proof of a technical bug or an invalid visitor.
3. Check the browser console and network requests
Google provides an official Chrome DevTools troubleshooting guide for ads not showing. Open a page where ads are blank, open DevTools, then inspect the Console and Network panels. Filter the Network panel for the AdSense script and ad-related requests. Test in a clean browser profile as well as your usual browser to distinguish local extension interference from a site-wide issue.
A console message such as net::ERR_BLOCKED_BY_CLIENT can mean a local extension or other client-side rule blocked the advertising script. An adsbygoogle.push() error can indicate failed script validation or a slot that lacks sufficient space. The absence of errors does not prove a request received an ad; check network activity and AdSense coverage too.
Avoid judging every response with status 200 as a successful filled ad. Google's guide notes that a request may return successfully while the placement remains unfilled. Use the specific error and surrounding evidence to choose the fix rather than changing the code blindly.
4. Responsive layouts can create zero-width ad slots
AdSense responsive display ads adapt to the space available in their parent layout. If a slot is inserted inside a collapsed container, a hidden tab, a display-none component or a region with zero measurable width, it may not initialise correctly. This can be particularly noticeable when mobile breakpoints, carousels or sticky containers change element dimensions.
Measure the actual space in the Elements panel at the moment the ad is initialised. Google's examples include a responsive ad error where availableWidth=0. Ensure the slot has a suitable rendered width and that its parent element has completed layout before initialisation. Do not fix this by creating excessive blank whitespace or moving ads into deceptive positions. Google's responsive ad guidance explains the layout-dependent sizing.
5. Consent settings can affect which ads are eligible
A consent management platform (CMP) gathers and communicates users' privacy choices. If an ad request is made without usable consent signals, the available advertising modes and demand may change. Consent-related restrictions should not be confused with broken JavaScript, and publishers must not bypass users' choices simply to increase coverage.
For personalised ads to users in the European Economic Area and UK, Google has required a Google-certified CMP integrated with the IAB Transparency and Consent Framework since 16 January 2024; Switzerland's corresponding date was 31 July 2024. Google's publisher CMP guidance also explains that traffic with a non-certified CMP may still be eligible for non-personalised or limited ads where supported. Therefore, an invalid or missing consent setup does not automatically explain every blank ad.
Review your consent platform's configuration, geographic targeting, CMP certification, consent signals and tag-loading sequence. Test with legitimate consent choices in relevant regions and compare the resulting AdSense requests. Do not substitute a forced 'accept all' state for real user consent. A CMP can be technically installed yet misconfigured, so verify how the website actually passes signals.
6. Check AdSense serving limits and the Policy centre
Google may restrict advertising delivery while assessing traffic quality or because of invalid-traffic concerns. The ad-serving limits guidance says such limits typically affect publishers for less than 30 days, but can last longer; Google does not guarantee a resolution date.
Open the AdSense Policy centre and check account-level and site-level issues. Read the specific issue description before acting. Policy violations, regulatory issues and advertiser preferences have different implications. Google's Policy centre documentation explains where to find enforcement details and request reviews after fixes. Do not attempt to defeat a restriction through repeated requests, new publisher accounts or manipulated traffic.
7. Confirm site approval, ads.txt and crawler access
From AdSense, open Sites and check whether the property is marked Ready. A site that requires review is not equivalent to an approved property. Check the ads.txt status and compare its authorised publisher ID with the account's own value.
Google documents an Unauthorized ads.txt status in which requests are rejected because the publisher ID was not found in the site's ads.txt file. Its site-status guide explains the statuses. The file should be accessible at the appropriate root URL, correctly formatted and crawlable. Google notes that changes may take days to appear in status reporting, and sometimes longer for low-traffic sites.
Review crawler issues reported in the Policy centre too. Server protections, authentication requirements, restrictive robots rules or intermittent 5xx responses can prevent Google from examining relevant content. Do not disable all security rules globally; address the verified issue with the smallest reasonable change.
8. Advertising demand and blocking controls matter
If a request reaches AdSense but no suitable ad is available, advertiser demand may be insufficient for the particular page, audience, geography or format. A decline in coverage should be analysed by segment, not attributed to a country's visitors without evidence.
Google's coverage troubleshooting guide includes blocking controls, market trends and invalid traffic among possible factors. Review whether restrictive category or advertiser blocks reduce eligible demand. Do not indiscriminately remove brand-safety settings; assess business suitability and any compliance requirements first.
9. Google's option to fill empty in-page ad spaces
In July 2025, Google documented a setting called Fill empty in-page ads, designed to make some unfilled display placements more useful. It can show contextually relevant suggestions and potentially display ads after further user interaction. It is not a promise that every empty slot becomes a paid impression.
Google's ad-serving settings guide describes the option under Brand safety → Content → Blocking controls → Manage Ad serving, where available. Publishers can review the setting, compare reporting and decide whether its presentation suits their site's users. The related official announcement explains the feature's original rollout. Do not present this fallback as a universal fix for consent violations, disabled serving or malformed code.
10. Special considerations for React, Next.js and SPA websites
Single-page applications can change article content without reloading the complete document. A developer may load an ad script on initial entry but fail to manage the slot lifecycle as routes change. Conversely, repeated initialisation of an already processed slot can create errors.
Treat ad placement as an explicit lifecycle concern. Verify that the Google script is loaded according to official guidance; initialise eligible, mounted slots only after layout is measurable; avoid duplicate initialisation during re-renders; and test route changes, browser back navigation and hydration behaviour. These are engineering checks, not permission to invent unsupported ad requests. Avoid timer-driven refreshes intended to inflate impressions.
When diagnosing, compare a direct page load with client-side navigation to the same URL. If one works and the other fails, inspect component mounting, DOM reuse and runtime errors before blaming advertiser demand.
11. Troubleshooting matrix: symptom, likely cause and next check
| Symptom | Likely explanation | First check |
|---|---|---|
| No ad network request | Blocked script, code or consent sequence | Console, Network, extension and CMP state |
| Ad script error about width | Collapsed or hidden container | Rendered parent dimensions |
| Requests exist; coverage low | Unfilled demand, restrictions or eligibility | Coverage by site/device and Policy centre |
| Only some regions are affected | Consent configuration or demand differences | Region-specific CMP signals and reports |
| Ads disappear after route change | SPA slot lifecycle issue | Initial load versus client navigation |
| Site marked Unauthorized | Ads.txt publisher entry missing | AdSense Sites and root ads.txt |
12. A disciplined repair checklist
- Confirm the site is Ready in AdSense and review the Policy centre for serving restrictions.
- Compare page views, ad requests, coverage, impressions and earnings across matching time periods.
- Reproduce one blank slot in a clean browser profile, without relying on self-clicks.
- Inspect the Console for blocked requests, script validation errors and JavaScript exceptions.
- Inspect the Network panel to establish whether a request was sent and whether an ad returned.
- Measure the slot's actual dimensions at the moment the code executes, including mobile breakpoints.
- Verify legitimate CMP signals and ad eligibility in affected geographic regions.
- Check ads.txt authorisation and documented crawler issues.
- Compare direct page loads with client-side navigation on React or Next.js sites.
- Make one evidence-based change and recheck comparable traffic and reporting periods.
Publishers can also use Google's AdSense ads-not-showing troubleshooter to investigate account-level AdSense for Content serving problems. It does not replace testing a specific website's implementation.
13. Do not try to force revenue from empty placements
Automatically refreshing every blank unit, purchasing artificial traffic, clicking your own advertisements or reloading pages solely to trigger extra requests is not a legitimate fix. Google prohibits practices that artificially inflate impressions or advertiser costs; its invalid-traffic policy covers automated and manipulated activity.
For site analytics context, FlyingEze's guide to SEO insights from Google Analytics can help publishers understand traffic trends. GA4 sessions, however, are not the same as AdSense ad impressions or ad coverage.
Frequently asked questions
Why does an AdSense slot stay blank when the script loads successfully?
The request may be unfilled because Google did not find a suitable ad, or the ad may be restricted by policy, consent or other serving conditions. Examine coverage and the Policy centre rather than treating script load alone as proof an ad should appear.
Does low coverage mean my AdSense account is penalised?
No. Low coverage can reflect advertiser demand or eligibility, while a serving limit is a distinct account or site restriction documented in AdSense. Check for an actual enforcement notice.
Can refusing cookies cause some ads not to display?
Consent choices can limit which advertising modes are eligible. Outcomes depend on region, the consent implementation and Google-supported ad modes; refusal does not always imply that all advertising must be blank.
Should I hide every blank slot with CSS?
A stable, well-designed layout should avoid distracting empty gaps, but hiding or collapsing an ad container during initialisation may itself prevent proper loading. Diagnose why the slot is blank and follow supported layout guidance before changing how it displays.
Can I replace blank AdSense ads with another network?
Potentially, depending on the other provider's policies and your exact Google product arrangements, but never use unsupported scripts to trick AdSense into generating impressions or make misleading content appear to be a Google-served advertisement. A separate ad strategy requires its own compliance review.
Conclusion
Blank Google AdSense slots are a symptom, not a diagnosis. The publisher's task is to find out whether an ad was never requested, a request was blocked, or a genuine request remained unfilled. Coverage reports, consent verification, DevTools, ads.txt, the Policy centre and careful implementation testing provide the evidence needed to decide what to fix.
Improving legitimate ad delivery is more sustainable than attempting to manufacture requests. The right result is a website that respects user choices, follows Google's policies and gives real advertising opportunities the best chance to serve.