No lazy loading detected: how to lazy-load images without hurting LCP

No lazy loading means the page has more than five images and none of them uses loading="lazy", so the browser downloads every image up front, including ones far below the fold that the visitor may never scroll to. Adding loading="lazy" to below-the-fold images lets the browser fetch them only as they come near the screen.

This is an optimization. It can make pages with many images noticeably lighter to load, but it is not a ranking fix on its own, and lazy-loading the wrong image, the large one at the top, makes the page slower. WordPress adds the attribute automatically, so if none is present, something is overriding it.

What it looks like in the HTML

Before

html
<img src="/uploads/hero.jpg" width="1200" height="630" alt="Cold brew in a jar">
<img src="/uploads/step-1.jpg" width="800" height="600" alt="Grinding the beans">
<img src="/uploads/step-2.jpg" width="800" height="600" alt="Adding water">
<!-- ...and five more, none lazy -->

After

html
<img src="/uploads/hero.jpg" width="1200" height="630" alt="Cold brew in a jar" fetchpriority="high">
<img src="/uploads/step-1.jpg" width="800" height="600" alt="Grinding the beans" loading="lazy">
<img src="/uploads/step-2.jpg" width="800" height="600" alt="Adding water" loading="lazy">

Why it matters

Without lazy loading, a long post with twenty images downloads all twenty before the page is fully loaded, competing for bandwidth with the content the visitor actually sees first. On mobile connections that makes the page feel slower and uses data for images nobody views.

The catch is the opposite mistake. The largest image in the first screen is often the page's Largest Contentful Paint element. Lazy-loading it delays the moment the page looks ready. Lazy-load images below the fold; load the hero normally, ideally with fetchpriority="high".

Why WordPress pages end up with none

WordPress core adds loading="lazy" to images in post content, featured images and other standard image output that have width and height, and recent versions skip the first images on the page and, since WordPress 6.3, give the likely LCP image fetchpriority="high". So a page with no lazy images usually means:

  • Lazy loading was turned off by a theme or plugin through the wp_lazy_loading_enabled filter.
  • A JavaScript lazy loader replaced it. Some optimization plugins and themes swap native lazy loading for a script that uses data-src attributes and a class. Those images are lazy-loaded, but not with the attribute this check looks for.
  • Images printed outside WordPress's image functions, such as hand-written HTML in a Custom HTML block, some page builder widgets, sliders and galleries.
  • Images without width and height, which WordPress does not mark lazy.

How to fix it in WordPress

  1. Look at what the images have now. View source and check the <img> tags. If you see data-src and a lazyload class, a script is handling lazy loading and the images are not actually loaded eagerly; you can leave it, or switch the plugin to native lazy loading if it offers that option.
  2. Remove whatever disables native lazy loading. Search your theme and snippets for wp_lazy_loading_enabled, and check performance plugin settings for a lazy-load switch.
  3. Add the attribute in hand-written HTML. In Custom HTML blocks and builder HTML widgets, add loading="lazy" and explicit width and height to images below the fold.
  4. Check builder and gallery settings. Many sliders and gallery plugins have their own lazy-load option.
  5. Leave the first image eager. Do not add loading="lazy" to the hero or the first large image in the content.

Hydrogen SEO does not change image loading. Its site health score covers performance in general.

When you can ignore this warning

Ignore it when a JavaScript lazy loader is doing the job, when all the images are small icons, or when every image on the page is visible in the first screen. It is a quick improvement, not a problem that holds a page back.

How to check the fix

View source and confirm below-the-fold images carry loading="lazy" and the top image does not. In the developer tools Network tab, filter to images, reload, and scroll: images further down should load as you approach them. Run Lighthouse to check LCP did not get worse. Rerun the free SEO audit, which reports how many images are lazy-loaded.

Common questions

Does WordPress lazy-load images automatically?

Yes. WordPress adds loading="lazy" to most images it outputs, and recent versions avoid lazy-loading the first images on the page.

Should I lazy-load every image?

No. Lazy-loading the main image in the first screen delays Largest Contentful Paint. Lazy-load images below the fold only.

Does lazy loading help SEO?

Indirectly, by making pages lighter. Google can see lazy-loaded images that use the native attribute. It is a performance improvement, not a ranking factor on its own.