What is Lazy Loading?
Lazy Loading is a feature that enables ads to serve only when users are likely to actually view them as they scroll down a web page. Ads that are above-the-fold and immediately visible to users are rendered straight away because users will view these straight away. Ads that are below-the-fold will not render until they come into the user’s viewport.
Usually, when the browser makes a call to the webserver, the entire page, including all ads, is loaded at once. This happens regardless of whether the user is likely to view the ads at the bottom of the page or not. Lazy Loading ads means stopping those that are initially out of view from loading when the page loads. Instead, they are only loaded as the user scrolls to a point where they are needed.
What are the benefits of Lazy Loading ads?
Improved user experience
Ads can be resource-heavy, and publishers are all too aware of the impact on speed and performance of running too many ads on the page. Lazy loading can help with this in two ways: Firstly, because ads are only loaded if they are likely to be viewed, the number of ad requests can be reduced. Processing time and bandwidth that would have been used on an unseen impression is saved.
As well as reducing total load, lazy loading can also help with the perception of speed. Because those ads that are “delayed” are not called for on the initial page load, this frees up resources to load and render the main content. This helps the page load faster, with the ads then being called after the content is safely on-page.
Better Viewability
With Lazy Loading, ads that are not likely to be seen are not loaded, resulting in fewer unviewed impressions being served. This can drastically improve your viewability scores. Advertisers hate paying for impressions that users do not see, so the higher your viewability score, the more valuable your inventory is to those booking high-paying campaigns.
Viewable impressions are often used as a campaign KPI for advertisers, indicating more accurately that a user has actually seen an ad – this can also translate into higher click-through rates. Advertisers will often avoid low viewability inventory entirely and some SSPs will only pay for impressions that were viewed.
Improved revenue
The implementation of Lazy Loading ads will generally lead to improved revenue over time for publishers. This is because higher viewability increases the value of inventory, which leads to more competitive auctions and better rates.
Are there any limitations to Lazy Loading ads?
Lazy Loading sounds like an easy way to improve both the user experience and increase revenue in one hit. Unfortunately, it is not that simple. Available inventory may be negatively affected since Lazy Loading only renders ads when necessary, decreasing the number of ad requests made to the ad server and reducing the total number of impressions served.
If publishers are paid on a CPM basis, this can initially have an adverse effect on revenue. Even though it will most likely be the lowest CPM impressions that are not served, Lazy Loading does still reduce the number of impressions. As the effects of higher value inventory are not instant this means that most publishers will see a short term drop in revenue when they implement lazy loading.
Another disadvantage of Lazy Loading ads is that it is difficult to split test. This is because ad viewability improves over time and until it does improve, advertisers will not bid higher. Therefore, it is not particularly valuable to carry out such tests as you are unlikely to see any quick improvements in revenue.
Finally, whilst most advertisers do take ad viewability into account when building a campaign, if it is not a KPI then it is unlikely that they will pay only for viewable impressions. In which case, you would be letting your revenue take a hit for impressions that buyers were not dissatisfied with.
Should I implement Google Ad Manager’s Lazy Loading function?
Ad Manager publishers have the option to use Google’s solution to Lazy Loading. GAM’s Lazy Loading leverages Single Request Architecture (SRA) to trigger all ads to render as soon as the first ad is visible to the user. If ads are placed above-the-fold, Lazy Loading will be less beneficial because the ads below will be triggered to load anyway regardless of how far down the user has scrolled.
Because of this, GAM’s Lazy Loading is less advantageous than solutions that load ads on a unit-by-unit basis. Publishers and experts, like OKO, have their own custom solutions that trigger each unit individually when it is in-view or close to in-view. We recommend implementing a solution and measuring improvements on a unit-by-unit basis.
Can you implement Lazy Loading in AdSense?
Currently, there is no native support for Lazy Loading ads in AdSense, but there are ways to do it. It is important to ensure policy compliance and safety around this behaviour.
Final Thoughts
To summarise, Lazy Loading delays the process of rendering until users are likely to see ads. Usually, this is achieved by triggering ad requests only when a user scrolls to a certain point on a page close to the ad itself.
Publishers that sell inventory via PMPs and direct deals are likely to see the most benefit as buyers tend to cherry-pick high viewability ad units. This allows publishers to package their inventory and sell it for greater prices which mitigates the losses due to reduced impressions.
Thanks for the post! However, I’ve found plenty forums where publishers complain about lazy-load not working properly when SRA is active. Can you please let me know if you’ve had any issues with lazy-loaded ad units, which used SRA? If so, how did you deal with such issues???
Carla Riechman
Using SRA is rather counter to the logic of lazy loading. SRA can be summarised as “Load everything at once to save on requests”. Lazy Loading is more “Load only what we are likely to need, and only load it when it is likely to be needed”. The problem is more conceptual than technical. GAM’s inbuild lazy loading will load everything when the first ad unit is needed, but we don’t find that as effective a loading each ad unit as it is about to come into view.
Thanks for the post! However, I’ve found plenty forums where publishers complain about lazy-load not working properly when SRA is active. Can you please let me know if you’ve had any issues with lazy-loaded ad units, which used SRA? If so, how did you deal with such issues?
Is it possible to implement several ad units in SRA (for road-blocking means) and have some BTF ad units in multi-request mode in order to leverage lazy-load?
Thank you!
The aim of Single Request Architecture is to bundle all the ad requests of a page into a single server request. The aim of lazy loading is to request each ad unit only when it is required. These two aims are at odds, so it does present more of a challenge. Ad Manager native lazy loading does not work with SRA for this reason. However GAM lazy loading is not the only game in town.
As there are two server interactions to server an ad through GAM you can break it down. You could still make all the ad requests as a single requests, but them display them one at a time as the page loads. The potential pitfall here is charging advertisers for ads that are not shown to users, which can be problematic and potentially seen as invalid activity if you are selling those ads programmatically.
It’s great question though. I’m going to make a note for us to update this article and add more about SRA.
Thanks for the post, Really appreciated your work Sister! keep it up!