Publisher guide, chapter 5
Ads
Last reviewed November 2026
Ads pay for reporting, and they also cause much of what readers dislike about news sites. The Coalition for Better Ads publishes a list of formats that fall below its standard. This chapter covers that list, how to reserve space for every slot, and where to place ads on each screen.
Formats to avoid
The Better Ads Standards name 6 desktop formats and 10 mobile formats. Separate lists cover short-form video and mobile apps.
| Format | Desktop | Mobile |
|---|---|---|
| Pop-up ads | Listed | Listed |
| Auto-playing video with sound | Listed | Listed |
| Prestitial ads | With a countdown | With or without a countdown |
| Large sticky ads | More than 30% of the screen | More than 30% of the screen |
| Ad density | Higher than 50% | Higher than 30% |
| Density with a sticky video ad | Higher than 30% | Not listed |
| Flashing animated ads | Not listed | Listed |
| Postitial ads with a countdown | Not listed | Listed |
| Full-screen scrollover ads | Not listed | More than 30% of the page |
| Sticky, pop-out video ads | Not listed | Listed |
| Sticky video with a large inline ad (300x600 or larger) | Not listed | Listed |
How density is measured
Density is the sum of the heights of all ads in the main content, divided by the total height of the main content. It is measured against the main content, not the viewport.
- Headers, footers and site navigation are excluded, and that includes related articles.
- Ads below the main content don't count.
- All formats count, including sticky and inline ads.
- Each sticky ad's height counts once.
- On desktop, ads in the side rails count.
- Pre-roll and mid-roll ads in video relevant to the page aren't measured.
As a worked example, take a mobile article whose main content is 5,000 pixels tall. To stay at or below 30%, the ads on it can add up to no more than 1,500 pixels.
To check a real page, paste this in the browser console. Change the selectors to match your templates, and add the height of any sticky or side rail ad that sits outside article.
const main = document.querySelector('article');
const slots = [...main.querySelectorAll('.ad-slot')];
const adHeight = slots.reduce((sum, ad) => sum + ad.getBoundingClientRect().height, 0);
console.log((adHeight / main.getBoundingClientRect().height * 100).toFixed(1) + '%');
Reserve every slot
Web.dev names ads as one of the largest contributors to layout shift. Reserve the space in CSS. Google warns against doing it in JavaScript, because the shift can happen when the script loads.
<div id="ad-slot" style="min-width: 300px; min-height: 250px;"></div>
@media screen and (max-width: 960px) {
#ad-slot {
min-height: 100px;
}
}
Use min-height so a larger creative can still fit. For slots with several sizes, Google's Publisher Tag guide offers three approaches:
| Reserve | Benefit | Cost |
|---|---|---|
| The largest size | No shift | Blank space under small creatives |
| The smallest size | No blank space | A shift when a larger creative serves |
| The size that serves most often | A balance of both | Some shift, some blank space |
Two more rules from the same guide and web.dev:
- Keep
fluidslots below the fold. They resize to the creative, so they always cause a shift. - Don't collapse a slot that gets no ad. Removing reserved space can shift the page as much as inserting content. Show a placeholder instead, and start a slot collapsed only if it is unlikely to fill.
Placement on each screen
On mobile
- Count density on the phone layout, because the mobile limit is the lower one.
- Keep a sticky ad under 30% of the screen. A short anchor at the bottom is the usual form.
- Avoid ads that float over the article, and any full-screen unit that needs a scroll or a tap to pass.
- Keep the first ad below the headline and opening paragraph, so it doesn't push your LCP element down.
On desktop
- Count side rail ads in your density total.
- Keep sticky units under 30% of the screen.
- Start video muted, and let the reader choose sound.
- Size the article column first, so side rail slots can load without moving it.
Speed and accessibility
- Lazy-load ads outside the first viewport, with your ad tag's own setting or
loading="lazy"on iframes you control. - Each iframe has its own main thread, so check which frame a slow interaction came from when you review INP.
- Where consent is required, load ad tags only after the reader agrees. The pop-ups chapter has the detail.
- Label ad regions so a screen reader user can recognise and skip them.
- Under WCAG success criterion 2.2.2, moving content that starts by itself, lasts more than five seconds and runs alongside other content needs a way to pause, stop or hide it. That applies to animated ads.
<aside aria-label="Advertisement">
<div id="ad-slot" style="min-height: 250px;"></div>
</aside>
Check your standing
The Ad Experience Report in Search Console lists ad experiences that violate the Better Ads Standards. If a review gives your site the status "Failing", the report lists what Google found, and it may not capture every problem. Fix what it flags, then request a new review, which covers your entire domain.
Checklist
- Go through the format table with your ad operations team, for desktop and mobile.
- Remove pop-ups, prestitials on mobile and countdown ads.
- Measure density on your longest and shortest article templates, on a phone.
- Check that every sticky unit stays under 30% of the screen.
- Reserve every slot in CSS with
min-height. - Move
fluidslots below the fold. - Replace empty slot collapsing with a placeholder where it shifts the page.
- Lazy-load ads outside the first viewport.
- Add a label to each ad region.
- Check the Ad Experience Report for desktop and mobile.
Sources
- The Initial Better Ads Standards, Coalition for Better Ads
- Mobile ad density higher than 30%, Coalition for Better Ads
- Desktop ad density higher than 50%, Coalition for Better Ads
- Desktop ad density higher than 30% with a sticky video ad, Coalition for Better Ads
- Desktop large sticky ads, Coalition for Better Ads
- Mobile large sticky ads, Coalition for Better Ads
- Mobile full-screen scrollover ads, Coalition for Better Ads
- Mobile sticky video with large inline ad, Coalition for Better Ads
- Minimize layout shift, Google Publisher Tag
- Introduction to the Ad Experience Report, Web Tools Help
- Optimize Cumulative Layout Shift, web.dev
- Optimize Interaction to Next Paint, web.dev
- Web Content Accessibility Guidelines (WCAG) 2.2, W3C