Lazy loading defers loading images and other resources until they are needed, which improves initial page speed. Implemented correctly it is a straightforward win. Implemented carelessly it hides content from search engines and slows the metric it was meant to improve.
The two mistakes that matter
Lazy-loading the LCP image
The most self-defeating error in performance work. Largest Contentful Paint measures how quickly the largest visible element renders. Deferring that element delays exactly what is being measured.
- Never lazy-load images above the fold.
- Preload the LCP image instead so it is requested early.
- Identify which element is actually the LCP before deciding, since it varies by template and differs between mobile and desktop.
- See LCP optimisation.
Lazy loading that requires scrolling
Crawlers do not scroll. Where content loads only in response to a scroll event, it may never be seen. This affects images, and more seriously it affects text and links loaded the same way.
- Native lazy loading via the
loading="lazy"attribute is handled correctly and is the safe default. - JavaScript implementations relying on scroll events are the risky ones.
- Content that is not merely deferred but genuinely conditional on interaction is the worst case.
What is safe to lazy-load
- Images below the fold, using the native attribute.
- Iframes and embeds, particularly video players, which are heavy.
- Third-party widgets that are not needed immediately.
- Images in long pages where most visitors never scroll far.
What is not
- The LCP image, ever.
- Anything above the fold on mobile, which is a smaller viewport than you are probably testing on.
- Text content, which should be in the initial HTML.
- Links, which must be crawlable anchor tags to be followed.
- Product listings that constitute the page’s main content. See infinite scroll SEO.
Testing it
- Disable JavaScript and load the page. Native lazy loading still works; script-dependent loading does not.
- Compare rendered HTML against source using URL Inspection. See the URL Inspection tool.
- Check on a mobile viewport, where the fold is much higher than on desktop.
- Confirm the LCP element is not deferred.
Frequently asked questions
Does lazy loading hurt SEO?
Native lazy loading does not. Script-based implementations that depend on scroll events can hide content entirely. The attribute is the safe choice.
Will Google index lazy-loaded images?
Native lazy loading, yes. Script-based loading requiring scroll, often not, since crawlers do not scroll.
Should I lazy-load everything?
No. Above-the-fold content and particularly the LCP image should load immediately. Lazy loading everything makes the measured experience worse rather than better.
What about lazy-loading below-the-fold text?
Avoid it. Text should be in the initial HTML. Deferring it risks it not being indexed and gains very little, since text is small relative to images.
Consulting CTA
If your images are not being indexed or your LCP is poor despite optimisation, book an SEO consultation.