Lazy Loading for WordPress: Images, Videos, More

Lazy loading speeds up your WordPress site by delaying the loading of images, videos, and other media until they’re about to appear on the screen. This improves page load times, reduces server strain, and enhances user experience. Here’s what you need to know:

  • What Supports Lazy Loading: Images (fully supported), videos (plugin-based), iFrames (partial), audio (limited), and custom blocks.
  • Built-in WordPress Lazy Loading: WordPress (since version 5.5) uses the loading="lazy" attribute for images and iFrames.
  • Plugins for Advanced Features:
  • Custom Code Options: Use JavaScript or modify your theme’s functions.php for more control.

Quick Comparison of Lazy Loading Methods

Method Pros Cons
Built-in WordPress Easy to use, no setup needed Limited to images and iFrames
Plugins Advanced features and customization Requires installation and setup
Custom Code Full control over behavior Requires coding knowledge

To get started, audit your media, choose a method (built-in, plugin, or custom), and test your site’s performance using tools like Google PageSpeed Insights.

WordPress Built-in Lazy Loading

WordPress

Default System Overview

Starting with WordPress 5.5, lazy loading is built into the core using the HTML loading attribute. This feature automatically adds loading="lazy" to images and iframes, signaling browsers to delay loading these elements until they’re near the viewport.

Here’s how it works:

  • Adds the loading attribute to all <img> tags.
  • Handles responsive images with srcset attributes.
  • Manages iframe content, such as embedded videos or maps.
  • Relies on browser-native lazy loading instead of JavaScript-based methods.

Managing Default Settings

You can adjust the default lazy loading behavior through theme filters in the functions.php file. Below are some examples:

Disabling lazy loading for specific images:

add_filter('wp_lazy_loading_enabled', function($default, $tag_name) {
    if (is_front_page() && $tag_name === 'img') {
        return false;
    }
    return $default;
}, 10, 2);

Controlling lazy loading for custom image types:

add_filter('wp_get_attachment_image_attributes', function($attr) {
    if (isset($attr['class']) && strpos($attr['class'], 'hero-image') !== false) {
        $attr['loading'] = 'eager';
    }
    return $attr;
});

Built-in System Constraints

While the native lazy loading feature in WordPress is helpful, it does come with a few limitations:

Limitation Impact Workaround
No threshold control Images load based on browser decisions Use JavaScript for custom thresholds
Limited media support Only works for images and iframes Install plugins for other media types
No animation options Basic loading behavior only Add custom CSS for loading effects
Fixed behavior Can’t adjust loading sequence Use third-party lazy loading solutions

For more advanced control, consider using plugins or writing custom code to extend functionality beyond what the default system offers.

How To Add Lazy Loading To WordPress

Plugin-based Lazy Loading

For those looking for more control than WordPress’s default lazy loading, plugins offer a range of options to fine-tune performance.

Top Lazy Loading Plugins

WordPress’s built-in lazy loading is a good start, but plugins can provide additional features and flexibility. Here are some popular options:

Plugin Name Key Features Ideal For
WP Rocket – Advanced threshold adjustments
– Optimizes videos and iframes
– Mobile-specific settings
High-traffic websites
a3 Lazy Load – Custom loading animations
– Rules for selective loading
– Settings for specific browsers
Image-heavy blogs
Lazy Load by WP Speed Matters – Lightweight and efficient
– Easy-to-use interface
– Built-in WebP support
Small business websites

Plugin Installation Guide

1. Preparation

Before installing, back up your site and measure your current page speed using tools like GTmetrix or PageSpeed Insights. This will help you track improvements.

2. Installation Process

Go to the WordPress dashboard, navigate to Plugins > Add New, and search for the plugin you want. Click "Install Now", then "Activate." For premium plugins like WP Rocket, upload the ZIP file using the plugin uploader.

3. Initial Configuration

Ensure the plugin is compatible with your theme, test your site on different devices and browsers, and check for conflicts with other optimization tools. Once everything looks good, tweak the plugin settings to match your site’s needs.

Plugin Settings Guide

Adjusting the Loading Threshold

For example, WP Rocket allows you to set a threshold to load images before they come into view. This can be configured like this:

define('WP_ROCKET_LAZYLOAD_THRESHOLD', '200px');

Configuring Media Types

Here’s a quick guide to setting up lazy loading for different media:

Media Type Suggested Setting Notes
Images Enable for all images Exclude above-the-fold images for better user experience
Videos Enable with a 3-second delay Reduces layout shifts during loading
iFrames Enable selectively Adjust based on user interaction needs

Performance Tips

  • Set thresholds between 150-300px to balance performance and user experience.
  • Enable native lazy loading as a fallback option.
  • Use separate settings for mobile and desktop devices.
  • Convert images to WebP format for faster loading speeds.

These adjustments can help you optimize your site’s performance while maintaining a smooth user experience.

sbb-itb-608da6a

Custom Lazy Loading Code

Using custom lazy loading code gives you full control over how media is loaded on your WordPress site. Unlike plugins that come with predefined settings, custom code allows you to fine-tune lazy loading to match your specific requirements. It works well alongside plugins, offering more detailed control.

HTML Loading Attributes

With custom code, you can directly add attributes to your media elements. For example, you can use the loading attribute like this:

<img src="image.jpg" loading="lazy" alt="Description" width="800" height="600">
<iframe src="video-url" loading="lazy" width="560" height="315"></iframe>

If you’re working with WordPress template files, you can modify media elements using PHP:

<?php
$image_attributes = array(
    'loading' => 'lazy',
    'src' => get_the_post_thumbnail_url(),
    'alt' => get_the_title()
);
echo wp_get_attachment_image($attachment_id, 'full', false, $image_attributes);
?>

JavaScript Implementation

You can also implement lazy loading using JavaScript to monitor the user’s scroll position:

document.addEventListener('DOMContentLoaded', function() {
    const images = document.querySelectorAll('img[data-src]');

    const imageObserver = new IntersectionObserver((entries, observer) => {
        entries.forEach(entry => {
            if (entry.isIntersecting) {
                const img = entry.target;
                img.src = img.dataset.src;
                img.removeAttribute('data-src');
                observer.unobserve(img);
            }
        });
    });

    images.forEach(img => imageObserver.observe(img));
});

To include this script in your WordPress theme, use the enqueue system:

function enqueue_lazy_load_script() {
    wp_enqueue_script('lazy-load', get_template_directory_uri() . '/js/lazy-load.js', array(), '1.0', true);
}
add_action('wp_enqueue_scripts', 'enqueue_lazy_load_script');

Browser Support Solutions

It’s important to account for browser compatibility. Here’s an example of a fallback solution:

if ('loading' in HTMLImageElement.prototype) {
    // Native lazy loading supported
    const images = document.querySelectorAll('img[loading="lazy"]');
} else {
    // Fallback to Intersection Observer
    const script = document.createElement('script');
    script.src = '/path/to/intersection-observer-polyfill.js';
    document.head.appendChild(script);
}
Browser Version Support Type Required Solution
Chrome 76+ Native HTML loading attribute
Firefox 75+ Native HTML loading attribute
Safari 15.4+ Native HTML loading attribute
IE11 & older No support JavaScript polyfill
Edge (Chromium) Native HTML loading attribute

Testing Your Implementation

To ensure your lazy loading setup works as expected:

  • Use Chrome DevTools to simulate slower network speeds.
  • Test your site on different browsers to confirm compatibility.
  • Check performance on a variety of devices to spot any potential issues.

These examples are ready to be added to your theme files. Always test your changes in a staging environment before applying them to a live site.

SEO and Speed Optimization

Search Engine Guidelines

Google advises loading above-the-fold content right away to ensure that both crawlers and users can access critical information. To do this effectively, set the lazy loading threshold to preload content 500px–1,000px before it appears in the viewport.

Here are some key SEO practices to follow:

  • Use Proper Markup: Add descriptive alt text and metadata to your images.
  • Keep Alt Text Intact: Ensure all lazy-loaded images retain their descriptive alt text.

These steps help establish a solid base for improving Core Web Vitals.

Web Vitals Optimization

Lazy loading doesn’t just assist with SEO; it also improves critical performance metrics tied to user experience.

Lazy loading impacts Core Web Vitals like Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and First Input Delay (FID). Here’s how to optimize these:

Web Vital Target Score How to Optimize
LCP Under 2.5s Load key images (like hero images) immediately
CLS Under 0.1 Define image dimensions within the HTML to prevent layout shifts
FID Under 100ms Defer non-essential media loading to reduce delays

To improve these metrics:

  • Focus on Critical Content: Load essential images first while deferring non-essential ones.
  • Ensure Visual Stability: Avoid layout shifts by explicitly setting image dimensions and preloading crucial images.
  • Track Your Progress: Use tools like Google Search Console to monitor your Web Vitals.

Performance Testing

To evaluate how well lazy loading performs, rely on these tools:

Tool Purpose Key Metrics
PageSpeed Insights Overall performance analysis Core Web Vitals
WebPageTest In-depth performance review Visual progress and loading behavior
Chrome DevTools Local testing Network waterfall and resource usage

When running tests:

  • Test across different devices and network speeds to get a complete picture.
  • Compare page load times before and after implementing lazy loading.
  • Monitor server resource usage under varying traffic levels to ensure scalability.

For WordPress users, pay special attention to metrics like page load time, interactivity, memory usage, server response, and image loading performance. These insights will help you fine-tune your site’s speed and user experience.

Next Steps

Ready to implement lazy loading? Here’s how to get started with these actionable steps.

Implementation Checklist

  • Audit your media: Review the types and sizes of images, videos, and other media on your site to determine what should be lazy-loaded.
  • Pick your method: Decide whether to use WordPress’s built-in lazy loading, third-party plugins, or custom code based on your website’s needs.
  • Test across devices: Ensure lazy loading functions correctly on different browsers and devices.
  • Track performance: Use tools like Google PageSpeed Insights and WebPageTest to monitor Core Web Vitals and overall site speed.
Testing Phase Key Actions Tools to Use
Pre-Launch Run a baseline speed test PageSpeed Insights
Implementation Conduct cross-browser tests Chrome DevTools
Post-Launch Monitor ongoing performance WebPageTest

OneNine Services

OneNine

If you’re looking for expert help, OneNine offers comprehensive services to enhance your website’s performance. Here’s what their clients have to say:

"After OneNine took over one of my client’s website portfolios, we’ve seen each site’s speed increase by over 700%. Load times are now around a second. They are very affordable, with exceptional communication, and it always feels like we’re getting MORE than what we’re paying for."

"OneNine is extremely helpful in providing on-going implementation and tech support. We’ve had multiple projects completed by them, and they always meet our timeline, as well as keep things within budget."

What OneNine offers:

  • Regular speed tests and immediate tweaks by developers
  • Screenshot checks every 3 hours to catch visual issues
  • Core Web Vitals-focused optimization
  • Continuous technical maintenance and support

Their management plans cover everything from lazy loading to full-scale speed optimization and ongoing support to keep your site running smoothly.

Related Blog Posts

Design. Development. Management.


When you want the best, you need specialists.

Book Consult
To top