Introduction

Lcp Image Lazy Loading Explained

View contents

LCP Image Lazy Loading: The Critical Performance Mistake

Introduction

Lazy loading images is widely considered a best practice for web performance. It defers loading off-screen images until users scroll to them, saving bandwidth and speeding up initial page load. However, there’s one critical exception: never lazy load your LCP image.

The UXR SEO Analyzer flags this as a critical error because adding loading="lazy" to your Largest Contentful Paint image directly harms your Core Web Vitals score and can negatively impact SEO rankings.

What Is the LCP Image?

The Largest Contentful Paint (LCP) is a Core Web Vital that measures how long it takes for the largest visible element to render on screen. In most cases, this is an image—typically a hero image, featured product photo, or banner.

Common LCP elements:

  • Hero images at the top of the page
  • Featured product images on e-commerce pages
  • Banner images
  • Large headshots or profile photos
  • Background images (when visible as foreground content)

Google considers LCP “good” when it occurs within 2.5 seconds of page load.

The Problem: Lazy Loading Delays LCP

When you add loading="lazy" to an image, you’re telling the browser:

“Don’t prioritize this image. Wait until the user might need it.”

For LCP images, this creates a devastating sequence:

Without lazy loading (CORRECT):
┌──────────────────────────────────────────────────────────────┐
│ 0.0s: Browser starts loading HTML                            │
│ 0.1s: Browser discovers hero image, starts downloading       │
│ 0.8s: Hero image loads → LCP complete ✓                      │
└──────────────────────────────────────────────────────────────┘

With lazy loading (WRONG):
┌──────────────────────────────────────────────────────────────┐
│ 0.0s: Browser starts loading HTML                            │
│ 0.1s: Browser sees loading="lazy", SKIPS hero image          │
│ 0.5s: JavaScript/CSS loads                                   │
│ 0.7s: Intersection Observer triggers (image in viewport)     │
│ 0.8s: Browser FINALLY starts downloading hero image          │
│ 1.5s: Hero image loads → LCP complete ✗ (almost 2x slower!)  │
└──────────────────────────────────────────────────────────────┘

Why This Happens

Native lazy loading (loading="lazy") uses the browser’s Intersection Observer API to detect when an image enters or approaches the viewport. The problem is:

  1. LCP images are already in the viewport on initial load
  2. The browser still has to wait for JavaScript to determine this
  3. This creates an artificial delay in loading your most important image

Even though the image is immediately visible, the browser doesn’t know that until it runs the lazy loading logic—by which time, it’s already behind.

How to Identify Your LCP Image

Using Chrome DevTools

  1. Open DevTools (F12)
  2. Go to Performance tab
  3. Record a page load
  4. Look for the LCP marker in the timeline
  5. Click it to see which element triggered LCP

Using Lighthouse

  1. Run a Lighthouse audit
  2. Check the Largest Contentful Paint element in the Performance section
  3. It shows exactly which element is your LCP

Using PageSpeed Insights

  1. Enter your URL at PageSpeed Insights
  2. Scroll to Diagnostics
  3. Look for “Largest Contentful Paint element”

The Fix: Remove loading=“lazy” from LCP Images

The solution is simple:

<!-- WRONG: Lazy loading on LCP image -->
<img
  src="hero-image.jpg"
  alt="Hero banner"
  loading="lazy"
>

<!-- CORRECT: No lazy loading on LCP image -->
<img
  src="hero-image.jpg"
  alt="Hero banner"
>

<!-- EVEN BETTER: Add fetchpriority for fastest loading -->
<img
  src="hero-image.jpg"
  alt="Hero banner"
  fetchpriority="high"
>

The fetchpriority="high" Bonus

For maximum LCP performance, add fetchpriority="high" to your LCP image. This tells the browser:

“This image is critical. Load it before other resources.”

This can improve LCP by 100-200ms or more.

When to Use Lazy Loading

Lazy loading is still excellent for images that are:

  • Below the fold: Users must scroll to see them
  • Off-screen initially: Images in carousels, tabs, or hidden sections
  • Non-critical: Decorative images, thumbnails, avatars
  • Further down the page: Blog post images, gallery items

Rule of thumb: If users see the image without scrolling on most devices, don’t lazy load it.

How UXR SEO Analyzer Checks This

The analyzer evaluates your LCP image by:

  • Identifying the LCP element on the page
  • Checking if it has loading="lazy" attribute
  • Flagging as critical error if lazy loading is present on LCP
  • Recommending fetchpriority="high" for optimal performance

This is marked as a critical issue because it directly impacts Core Web Vitals, which are Google ranking factors.

Common Mistakes

1. Blanket Lazy Loading

<!-- Don't automatically add lazy to ALL images -->
<img src="hero.jpg" loading="lazy">  <!-- This is the LCP! -->
<img src="product.jpg" loading="lazy">
<img src="footer-logo.jpg" loading="lazy">

2. CMS Default Settings

Many CMS platforms and themes add loading="lazy" to all images by default. Check your theme settings and disable it for hero/featured images.

3. JavaScript Libraries

Some lazy loading libraries apply to all images. Configure them to exclude above-the-fold images.

Quick Checklist

  • [ ] Identify your LCP image using DevTools or Lighthouse
  • [ ] Remove loading="lazy" from the LCP image
  • [ ] Add fetchpriority="high" to the LCP image
  • [ ] Keep loading="lazy" on below-the-fold images
  • [ ] Test LCP improvement with PageSpeed Insights
  • [ ] Check all major page templates (home, product, blog)

Impact on Core Web Vitals

Fixing lazy loading on LCP images typically improves scores dramatically:

Metric Before Fix After Fix Improvement
LCP 3.8s 2.1s 45% faster
Lighthouse Performance 62 85 +23 points
Core Web Vitals Failing Passing Critical fix

Next Steps

For comprehensive lazy loading implementation including JavaScript libraries, placeholder strategies, and advanced techniques, read our detailed Lazy Loading Best Practices Guide.



References

  1. web.dev - Lazy loading images
  2. Chrome Developers - Optimize Largest Contentful Paint
  3. web.dev - Largest Contentful Paint (LCP)
  4. Google Search Central - Page experience

Related articles

Related version

Detailed guide

Lazy Loading Best Practices Guide

Lazy loading is one of the most effective techniques for improving page performance—when used correctly

Category hub

Hub

Images Seo Hub

Images are critical to user engagement—but they can also be your website's biggest performance bottleneck

In the same category

Introduction

Responsive Images Explained

When you serve a 2000px wide image to a mobile phone with a 400px viewport, you're wasting bandwidth and slowing down page load

Detailed guide

Image Optimization Explained

Images are often the largest resources on a webpage, accounting for 40-60% of total page weight on most websites

Other topics

Detailed guide

Lcp Optimization Guide

Largest Contentful Paint (LCP) measures when the largest content element becomes visible to users