WordPress Lazy Load Plugins: Do You Still Need One?

4.9/5 - (36 votes)

Most sites do not need a WordPress lazy load plugin, because WordPress core has added loading="lazy" to images since version 5.5 and to iframes since 5.7, and since 6.3 it leaves the first three images alone and marks the likely hero image fetchpriority="high". Install something only for the four things core does not touch: click-to-load video embeds, CSS background images, a theme or builder that strips the attribute, and fine control over which images are exempt. For those cases the free picks are WP YouTube Lyte for YouTube embeds (4.8 out of 5 from 206 reviews) and Smush for background images, and the paid pick is Perfmatters at $29.95 a year. If you already run LiteSpeed Cache or WP Rocket, the lazy loader you need is already installed.

Jump to: do you still need one · is it already working · which one fits you · the comparison · the plugins · the verdict · questions

Do you still need a WordPress lazy load plugin?

For ordinary images and iframes, no. WordPress 5.5, released in August 2020, started adding the browser-native loading="lazy" attribute to images in post content, excerpts, text widgets, avatars and anything output through wp_get_attachment_image(), provided the image has width and height attributes. WordPress 5.7 extended the same attribute to iframes with dimensions. Both changes are documented on Make WordPress Core, and both work without JavaScript: the browser decides when to fetch.

Core also avoids the mistake most plugins make. Lazy-loading the image at the top of the page delays your Largest Contentful Paint, which is the Core Web Vitals metric Google measures. WordPress 5.9 stopped lazy-loading the first content image. WordPress 6.3, released in August 2023, raised that exemption to the first three images through the wp_omit_loading_attr_threshold filter, whose default moved from 1 to 3, and began adding fetchpriority="high" to the image most likely to be the LCP element. The wp_get_loading_optimization_attributes() function that does this has been in core since 6.3 and handles img and iframe tags only.

That last clause is where the plugin case lives. Core does nothing for:

  • Embedded videos. A YouTube iframe with loading="lazy" still loads the full player once it scrolls into view. A facade, a thumbnail that only fetches the player when clicked, is a different technique and no part of core.
  • CSS background images. Hero sections, sliders and builder columns that set an image in a stylesheet are not img tags, so they get no attribute.
  • Themes and builders that strip or override the attribute. Any code that filters wp_lazy_loading_enabled to false, or outputs images without width and height, switches core off for those images.
  • Control. Core has no settings screen: no threshold, no per-image exclusion beyond adding your own loading="eager", no placeholder.

Two vendors have said this in as many words. Jetpack retired its own Lazy Images feature on 3 November 2023, stating that WordPress had included native lazy loading since 5.5 and that WordPress 6.4 conflicted with its approach. The author of the Speed Up – Lazy Load plugin now writes in its own listing that the plugin “is no longer needed” and that it “prevents the browser from discovering your largest image early, which harms LCP”.

How to check whether lazy loading is already working

Do this before installing anything; it takes two minutes and settles the question for your own theme.

  1. View the page source. Open a post with several images, press Ctrl+U (Cmd+Option+U on a Mac) and search for loading="lazy". Core’s version shows the attribute on every image after the first three, and fetchpriority="high" on one of the early ones. If no image carries it, your theme or a plugin is stripping it, or your images have no width and height.
  2. Look for a JavaScript lazy loader. If images show data-src or data-lazyloaded instead of a plain src, a plugin is already handling this with a script. LiteSpeed Cache, Smush, Optimole and WP Rocket all work this way. Two such plugins on one page is the usual cause of images that never appear.
  3. Watch the Network panel. Open DevTools (F12), choose Network, filter by Img, reload, then scroll. Images that only appear in the list as you scroll are lazy-loaded. Images that all arrive on reload are not. Switch the filter to Doc or Media and scroll past an embedded video to see whether the player loads before anyone clicks it.
  4. Run Lighthouse. In the same DevTools, the “Defer offscreen images” audit lists the images still loading eagerly, and the LCP element line shows whether your hero image is being lazy-loaded when it should not be.

Which lazy load plugin fits your site?

Answer three questions. The pick changes with what is slow and with which cache plugin you already run, because two of the popular cache plugins include a lazy loader of their own.

Three questions




No plugin: WordPress corebuilt in

Images lazy-loaded since WordPress 5.5, iframes since 5.7, first three images exempt since 6.3 · nothing to install or update

Core already lazy-loads your images and leaves the first three alone, which is more than most plugins manage. Check the page source for loading="lazy" as described above. If it is there, slow images are a weight problem, not a timing problem: compress them and serve WebP with a free optimiser such as Smush. If it is not there, your theme is stripping the attribute, and a3 Lazy Load (free, 90,000+ installs) is the general-purpose fix; give it the skip-lazy class on your hero image.

Install counts, ratings and prices read from each plugin’s WordPress.org page and vendor pricing page on 10 September 2026. Which elements each plugin lazy-loads is read from its own documentation.

Which WordPress lazy load plugins are still worth installing?

The table lists what each option actually defers, and the column that matters most: whether it automatically exempts the images at the top of the page. Core skips three. A plugin that skips none can make your LCP worse than doing nothing.

Option Price Images · iframes Video facade CSS backgrounds Above-the-fold exemption Installs · rating Tested to
WordPress core Built in Yes · yes No No First 3 images, plus fetchpriority on the LCP candidate Every site n/a
LiteSpeed Cache Free Yes · yes No Not documented Viewport Images (VPI) detects them 7 million+ · 4.8 (2,770) 7.1
Smush Free; CDN is Pro Yes · yes YouTube and Vimeo preview images Yes, since 3.16.0 Manual, by class or ID 1 million+ · 4.8 (6,051) 7.1
Optimole Free to 2,000 visits a month Yes · not documented No Yes, by selector First 2 images by default, adjustable 200,000+ · 4.7 (638) 7.1
a3 Lazy Load Free Yes · yes No, defers the embed Not documented Manual, skip-lazy class; pixel threshold 90,000+ · 4.3 (148) 7.0.4
WP YouTube Lyte Free No · no YouTube only No n/a 20,000+ · 4.8 (206) 7.1
Lazy Load for Videos Free No · no YouTube and Vimeo No n/a 9,000+ · 4.4 (105) 6.9.7
Perfmatters (paid) $29.95 a year, 1 site Yes · yes YouTube preview thumbnails Yes, by selector Exclude Leading Images, any count Not on WordPress.org n/a
WP Rocket (paid) $59.95 a year, 1 site Yes · yes YouTube preview image Yes, automated Automatic, Optimize Critical Images Not on WordPress.org n/a
LazyLoad by WP Rocket (free) Free Yes · yes YouTube preview image Inline styles only None; filters only 100,000+ · 4.2 (139) 6.8.8, flagged untested

Figures read from each plugin’s WordPress.org page and each vendor’s pricing page on 10 September 2026. Capabilities read from each plugin’s own documentation; core behaviour from the WordPress developer reference and Make WordPress Core.

Of the eight plugins in the table, only three exempt above-the-fold images without you naming them: WP Rocket automatically, LiteSpeed Cache through Viewport Images, and Optimole with its default of two. Smush, a3 Lazy Load and the free LazyLoad by WP Rocket rely on you adding a class, an ID or a filter, and each takes over from core’s own attribute. Install one of those, forget the exclusion, and you have traded a three-image exemption for none.

The plugins, verified

LiteSpeed Cache

For any site already running it, and for sites on LiteSpeed hosting. Version 7.9.1, updated in September 2026, 7 million+ active installs, 4.8 out of 5 from 2,770 reviews, tested up to WordPress 7.1, requires PHP 7.4.

WPNeon runs LiteSpeed Cache. In the plugin, the lazy load switches live under Page Optimization in the Media Settings tab: Lazy Load Images, Basic Image Placeholder, Responsive Placeholder, an LQIP Cloud Generator for blurred placeholders, Lazy Load Iframes and Add Missing Sizes, which writes width and height into images that lack them. A separate Media Excludes tab takes image URLs, class names and parent class names. Viewport Images (VPI) works out which images are visible on load and exempts them. The plugin’s documentation states that these page optimisation features work on any web server; only the caching itself needs LiteSpeed or QUIC.cloud.

The limitation is scope: the documentation does not cover CSS background images, and a lazy-loaded iframe still loads the full YouTube player when scrolled to. Its documentation also notes that switching Lazy Load Images on disables core’s native lazy loading, so you are replacing core’s three-image exemption with VPI, not adding to it.

LiteSpeed Cache on WordPress.org

Smush

For the free all-in-one: compression plus a lazy loader that reaches background images. Version 4.3.2, updated in August 2026, 1 million+ active installs, 4.8 out of 5 from 6,051 reviews, tested up to WordPress 7.1, requires PHP 7.4.

The Lazy Load screen lists media types (JPEG, PNG, WebP, GIF, SVG and iframe), with an optional YouTube and Vimeo preview-image switch when iframes are included, an Areas to Lazy Load choice of content, widgets, post thumbnails and gravatars, exclusions by post type, URL and class or ID, a Native lazy loading toggle and a noscript fallback. Lazy loading of background images arrived in 3.16.0 on 6 March 2024. The free version compresses images up to 5 MB and, since 4.0, the whole library in one run.

The limitation is that there is no leading-image count, so protecting your hero image is your job, and the CDN that resizes images per device is Pro only.

Smush on WordPress.org

Optimole

For sites happy to serve images from a CDN, with lazy loading as part of the deal. Version 4.2.12, updated in September 2026, 200,000+ active installs, 4.7 out of 5 from 638 reviews, tested up to WordPress 7.1, requires PHP 7.4.

Its Lazyload panel under Settings has three things no free plugin above offers together: a Skip lazy loading for first images setting with a default of 2, a CSS Background Lazy Load switch that takes selectors in an Extend CSS Background Images box, and a Loading Method dropdown where Native Browser Loading hands the job back to loading="lazy" if you only want the CDN. The free plan covers 2,000 visits a month with unlimited optimisations; paid plans start at 48,000 visits.

The limitation is the architecture. Every image URL is rewritten to Optimole’s cloud, so you have added a third-party dependency and a visit-metered bill to fix a problem that is, for most sites, core’s job already.

Optimole on WordPress.org

a3 Lazy Load

For a theme that strips core’s attribute and a site that wants one plugin doing only this. Version 2.7.9, updated in July 2026, 90,000+ active installs, 4.3 out of 5 from 148 reviews, tested up to WordPress 7.0.4, requires WordPress 6.0.

It lazy-loads images, videos embedded by URL and iframes such as WordPress embeds, Facebook boxes and Google Maps, across content, widgets, thumbnails and gravatars. Exclusions take a skip-lazy class or data-skip-lazy attribute, URI patterns and page types, and there is an Image Load Threshold in pixels. It has an explicit option to disable WordPress core lazy load, which tells you what it replaces.

The limitation is that its listing does not mention background images and it exempts nothing automatically. Its 4.3 is the lowest rating among the maintained plugins here.

a3 Lazy Load on WordPress.org

WP YouTube Lyte

For any site with YouTube embeds. Version 1.7.32, updated in August 2026, 20,000+ active installs, 4.8 out of 5 from 206 reviews, tested up to WordPress 7.1.

It replaces each embed with a responsive Lite YouTube Embed, a preview image with a play button, and fetches the real player only on click. It works from httpv:// links, a [lyte] shortcode or a widget, and can cache thumbnails locally so the visitor’s browser never contacts YouTube until they choose to. This is the one lazy-loading gain core cannot give you, and it is the highest-rated plugin on the page.

The limitation is in the name: YouTube only. Vimeo, Wistia and self-hosted video are untouched.

WP YouTube Lyte on WordPress.org

Lazy Load for Videos

For sites with Vimeo as well as YouTube. Version 2.18.11, updated in May 2026, 9,000+ active installs, 4.4 out of 5 from 105 reviews, tested up to WordPress 6.9.7, requires PHP 7.2.

It swaps embedded YouTube and Vimeo videos for a clickable preview image; video scripts load only on click. That covers the two platforms most sites use with one plugin.

The limitation is maintenance depth: 13 of its 105 reviews are one star, a review on the listing reports an unsupported notice on the forums, and the tested-up-to lags WP YouTube Lyte by two releases. Choose it for Vimeo, not otherwise.

Lazy Load for Videos on WordPress.org

Perfmatters (paid)

For the site that wants every lazy-load control in one paid plugin without buying a cache. $29.95 a year for one site, $59.95 for three, $124.95 unlimited, no free version, a 30-day refund and 15 percent off renewals.

Its lazy-load documentation lists Images (including inline background styles), iFrames and Videos covering YouTube, Vimeo, SoundCloud, Google Maps and video tags, YouTube Preview Thumbnails, CSS Background Images by container ID or class, Exclude Leading Images with a count you set, a viewport Threshold in pixels or percent, DOM Monitoring for content injected by scripts, Fade In and exclusions by UI field, parent selector, a no-lazy class or a filter. That is the fullest lazy-load option set on this page.

The limitation is that it is a paid plugin for a feature core provides for free in the common case; buy it for the backgrounds, the facade and the exclusion count, or not at all.

Perfmatters

WP Rocket (paid)

For a site that wants caching and lazy loading from one vendor. $59.95 a year for one site, $119.95 for three, $299.95 for fifty, no free version, 14-day refund.

LazyLoad covers images, inline background images on div, span, section, li, figure and a elements, iframes and videos with a YouTube preview-image switch, and a separate automated LazyLoad for CSS background images that defers backgrounds set in stylesheets. Optimize Critical Images runs on activation with no setting: it preloads the LCP image, adds fetchpriority="high" and excludes above-the-fold images from LazyLoad.

The limitation is documented by the vendor: the CSS background feature can raise time to first byte on uncached pages with a lot of CSS, is not compatible with another plugin lazy-loading backgrounds, and does not apply to pages cached by the User Cache add-on.

WP Rocket

LazyLoad by WP Rocket (free)

Listed because people search for it by name. Version 2.4.0, updated on 17 October 2025, 100,000+ active installs, 4.2 out of 5 from 139 reviews, tested up to WordPress 6.8.8, requires PHP 7.3. Its listing carries the directory’s warning that it “hasn’t been tested with the latest 3 major releases of WordPress”.

On paper it does a lot: images, iframes, videos, YouTube preview thumbnails and inline background images on div, section, span, li, figure and a elements. What it does not do is exempt anything automatically; exclusions are a data-no-lazy attribute or three PHP filters. Combined with a maintenance gap of nearly a year at the date above, that makes it a plugin to leave alone. The vendor’s paid plugin has moved on; this one has not.

LazyLoad by WP Rocket on WordPress.org

Skip these. Native Lazyload, Google’s plugin, is still listed but was last updated in 2019, is tested only to WordPress 5.3.21 and its GitHub repository was archived on 15 May 2023; core made it redundant in 5.5. Jetpack Boost (200,000+ installs, 4.7 from 607 reviews) is a good performance plugin, but its listing does not offer lazy loading at all, since Jetpack retired that feature on 3 November 2023 in favour of core. Speed Up – Lazy Load is deprecated by its own author in the listing. BJ Lazy Load was closed on WordPress.org on 4 May 2026 for a security issue, and Crazy Lazy was closed on 23 June 2026 at its author’s request; neither can be downloaded.

Which WordPress lazy load plugin should you choose?

For most people, none. Check the page source for loading="lazy"; if it is there, core is already doing this with a three-image exemption that most plugins do not match, and the money and time go into compressing images instead.

If you embed YouTube videos, WP YouTube Lyte. A facade is the one lazy-loading gain core cannot give you, and it is free and the highest rated plugin here. For Vimeo as well, Lazy Load for Videos.

If you need background images deferred, Smush for free or Perfmatters for $29.95 a year. If you already run LiteSpeed Cache or WP Rocket, switch on the lazy loader you already have and add nothing but a video facade.

Skip LazyLoad by WP Rocket, Native Lazyload and anything that switches core off without exempting the hero image.

Once you have chosen

Frequently asked questions

Does WordPress lazy load images by default?

Yes. Since WordPress 5.5, released in August 2020, core adds loading=”lazy” to images that have width and height attributes, and since 5.7 it does the same for iframes. Since WordPress 6.3 it leaves the first three images alone and adds fetchpriority=”high” to the image most likely to be the Largest Contentful Paint element, so the hero image is not delayed.

Do I still need a lazy load plugin for WordPress?

Not for ordinary images. You need one for a YouTube facade that stops the player loading until a click, for CSS background images in hero sections and sliders, for a theme that strips the attribute, or for control over exclusions. WP YouTube Lyte, Smush and Perfmatters cover those cases; LiteSpeed Cache and WP Rocket include a lazy loader already.

Is lazy loading bad for SEO?

Lazy loading itself is not; the native loading attribute is a web standard and WordPress core applies it to every site. The damage comes from lazy-loading the image at the top of the page, which delays Largest Contentful Paint, a Core Web Vitals metric. WordPress core exempts the first three images for that reason, and any plugin you add should exempt your hero image too.

Can a lazy load plugin make my site slower?

Yes. A plugin that lazy-loads every image, including the hero, makes LCP worse while appearing to reduce page weight, and most plugins switch core’s native attribute off when they take over. Two lazy loaders on one page, such as a cache plugin’s and a dedicated plugin’s, commonly leave images blank. Run one, and exclude the first image.

How do I turn off lazy loading in WordPress?

Add one line to your theme’s functions file or a small custom plugin: add_filter( ‘wp_lazy_loading_enabled’, ‘__return_false’ ); which disables the attribute for images and iframes site-wide. To exempt a single image instead, give it loading=”eager” in the block’s HTML. Measure LCP before and after; the default is usually the better setting.

Is Lazy Load by WP Rocket still maintained?

Its free WordPress.org plugin, LazyLoad by WP Rocket, had its most recent release on 17 October 2025, is tested only to WordPress 6.8.8 and carries the directory’s warning that it has not been tested with the latest three major releases. The lazy-loading in WP Rocket’s paid caching plugin is maintained and includes automatic above-the-fold exclusion; the free spin-off does not.