What Is Lazy Loading?
Quick Definition
Lazy loading is a technique that delays the loading of non-critical resources, like images below the fold, until they are actually needed, improving initial page load speed.
Lazy loading is a performance optimization strategy that defers the loading of resources until they're needed. Instead of loading every image, video, and script when a page first opens, lazy loading only loads the resources visible in the initial viewport and fetches the rest as the user scrolls down.
The most common application is image lazy loading. A typical web page might have 20-50 images, but only 2-3 are visible when the page first loads. Without lazy loading, the browser downloads all 50 images immediately, wasting bandwidth and slowing down the initial render. With lazy loading, only the visible images load first, and the rest load as the user scrolls to them.
Modern browsers natively support lazy loading with the loading="lazy" attribute on img and iframe elements. Before native support, JavaScript-based solutions using the Intersection Observer API were the standard approach. Many frameworks and CMS platforms now include lazy loading by default.
Lazy loading can also be applied to JavaScript modules (loading code only when a feature is needed), components (loading UI sections on demand), and data (fetching content as the user navigates). These techniques are especially valuable for large single-page applications where loading everything upfront would be wasteful.
Why It Matters
Lazy loading directly improves two critical metrics: initial page load time and bandwidth usage. By loading only what's immediately visible, your pages render faster, use less data (important for mobile users), and feel more responsive.
However, lazy loading must be implemented carefully. Never lazy-load your LCP element (the main hero image or content), as this will hurt your Core Web Vitals scores. Only lazy-load resources that are below the fold or behind user interactions.
Real-World Examples
A photography portfolio with 200 images per page reduced initial load time from 12 seconds to 1.8 seconds by lazy loading all images below the first three rows
An e-commerce category page with 60 product images implemented native lazy loading, reducing initial page weight from 8MB to 800KB
A news site lazy loads embedded YouTube videos, replacing them with lightweight thumbnails until the user clicks to play, saving 1.5MB of JavaScript per video
A long-form article page lazy loads related article widgets and comment sections at the bottom, prioritizing the article content for the fastest possible initial render
Related Terms
LCP (Largest Contentful Paint)
LCP measures the time it takes for the largest visible content element on a page, such as a hero image or heading, to fully render, indicating how fast a page feels to users.
Core Web Vitals
Core Web Vitals are a set of three specific metrics defined by Google that measure real-world user experience on websites: loading performance (LCP), interactivity (INP), and visual stability (CLS).
CLS (Cumulative Layout Shift)
CLS measures the total amount of unexpected layout shifts that occur during the entire lifespan of a page, quantifying how much visible content moves around unexpectedly.
Caching
Caching is the process of storing copies of data or files in a temporary storage location so future requests for that data can be served faster without regenerating or re-fetching it.
Need help with lazy loading?
Our team can help you put this into practice. Get a free consultation to discuss your project.