All Guides
General 5 min read· Updated Apr 2026

Lazy Loading Images — The Complete Implementation Guide

Master lazy loading with native browser support, Intersection Observer, and framework-specific implementations. Reduce initial load by 40-60% while keeping images snappy.

What is Lazy Loading?

Lazy loading defers loading of off-screen images until the user scrolls near them. This dramatically reduces initial page weight and speeds up LCP by prioritizing above-the-fold content.

Native Browser Lazy Loading

The simplest approach — add loading="lazy" to any below-the-fold image:



html
<!-- Above the fold: load immediately -->
<img src="/hero.webp" alt="Hero" width="1200" height="630" fetchpriority="high" />

<!-- Below the fold: lazy load -->
<img src="/feature.webp" alt="Feature" width="600" height="400" loading="lazy" />


Important: Never lazy-load your LCP image! The hero image should load eagerly with fetchpriority="high".

Next.js Image Optimization

Next.js handles lazy loading automatically:



jsx
import Image from 'next/image'

// Hero image: eagerly loaded
<Image src="/hero.webp" alt="Hero" priority />

// Below fold: automatically lazy-loaded
<Image src="/feature.webp" alt="Feature" width={600} height={400} />


next/image also auto-converts to WebP, generates multiple sizes, and sets proper cache headers.

Test these fixes on your site

Run a free audit to see your current General score and get prioritized fix recommendations.

Run Free Audit

Related Guides

LCP8 min

How to Fix LCP (Largest Contentful Paint) — Complete Guide

CLS7 min

How to Fix CLS (Cumulative Layout Shift) — Stop Layout Jank