Lazy Loading Images: The Right Way

A tablet mid-scroll with photos loaded at the top and placeholders below

Images are the largest assets on most web pages. On an average WordPress site, images make up most of the page weight. Lazy loading is the technique that prevents those images from being downloaded until the visitor actually scrolls to them — saving bandwidth, reducing load time, and improving Core Web Vitals scores.

How Lazy Loading Works

Without lazy loading, the browser downloads every image on the page as soon as it loads — including images that are far below the fold and may never be seen. With lazy loading, images are only downloaded when they are about to enter the viewport. The browser loads a lightweight placeholder (or nothing at all) for off-screen images, and fetches the real image just in time.

Since WordPress 5.5, native lazy loading has been built into the platform using the loading="lazy" attribute on <img> tags. This is supported by all modern browsers and requires no JavaScript. If your theme outputs standard WordPress image functions, you may already have basic lazy loading.

Beyond Native Lazy Loading

Native lazy loading is a good start, but a dedicated performance plugin can do more. Caching Out extends lazy loading to iframes — embedded video players, maps and other third-party embeds that themes do not always mark up for the native attribute — and adds missing width and height attributes so nothing shifts as images arrive.

Common Lazy Loading Mistakes

  • Lazy loading the LCP image. The Largest Contentful Paint element — usually the hero image — should never be lazy loaded. Doing so delays the LCP and hurts your Core Web Vitals score. Caching Out automatically excludes the first image on the page from lazy loading.
  • No placeholder dimensions. If an image does not have width and height attributes, the browser does not know how much space to reserve. When the image loads, the page layout shifts — hurting your CLS score. Always include dimensions, or use a plugin that adds them automatically.
  • Lazy loading above-the-fold content. Images that are visible without scrolling should load immediately. Lazy loading them adds unnecessary delay.

Further reading: The Case for WebP Images — combining lazy loading with next-gen formats for maximum image performance.

More from the blog

Ready when you are

One plugin, every optimisation, from $59 a year.

Install it, turn on what you need, and measure the difference on your own site. If it does not do what this site says, the 14-day guarantee means you get your money back.

  • No code required
  • Setup in under 3 minutes
  • 14-day money-back guarantee
  • 14-day money-back guarantee
  • Works on standard shared and managed hosting
  • Cancel anytime

Free edition · WordPress.org

Get Caching Out for free

Good call. Page caching is the biggest single speed win, and it is on the moment you activate. Two ways to install the free edition:

Option 2

Upload the zip

Download the plugin zip, then go to Plugins → Add New Plugin → Upload Plugin and choose the file.

Download free plugin (.zip)

After you activate, caching is already running. Open Caching Out → Setup Wizard to see what is on and why.

Want every feature from day one? Pro from $59/yr