Smart LazyLoad – Lazy Load Images, Videos and Iframes
Smart LazyLoad – Lazy Load Images, Videos and Iframes

Smart LazyLoad – Lazy Load Images, Videos and Iframes

5/5 (4 ratings) 300 active installs Updated Aug 2, 2026
Smart LazyLoad settings menu in the WordPress admin.

Smart LazyLoad settings menu in the WordPress admin.

The best free, simple & lightweight lazy load plugin for WordPress. Lazy loading images, videos, and iframes to improve page speed performance and Core Web Vitals scores.

Most lazy load plugins only optimize images. Smart LazyLoad goes further by deferring images, responsive <picture> sources, background images, native HTML5 videos, and iframes (including YouTube, vimeo) until they are about to enter the viewport.

Built with a lightweight, dependency-free frontend engine, Smart LazyLoad uses modern browser APIs without requiring jQuery or other third-party libraries. It also includes native browser lazy loading support, smooth loading effects, and intelligent defaults, so it works well immediately after activation.

Unlike most lazy load plugins, Smart LazyLoad gives you two levels of control. A global Master Switch lets you enable or disable lazy loading across your entire website, while a per-post override allows individual posts and pages to follow the global setting or force lazy loading on or off when needed.

Everything is managed from a clean, modern settings page where you can choose what to lazy load, fine-tune performance, customize placeholders and animations, and exclude specific elements for maximum compatibility.

Features

What gets lazy loaded

  • Images — inside post/page content, featured images, widget images, and avatars.
  • Responsive <picture> sources — defers every <source> inside a <picture> element (WebP, hi-DPI, art-directed crops) in lock-step with its fallback <img>, so the browser’s format/media negotiation is never affected, only when it happens.
  • Background images — inline style="background-image", a manual data-bg attribute, and retina/responsive backgrounds via CSS image-set() or a manual data-bg-set attribute, picking the best resolution for the visitor’s screen.
  • Iframes — any embedded iframe, including YouTube and Vimeo players.
  • Native <video> — HTML5 <video> tags, their <source> children, and poster images.
  • YouTube click-to-play thumbnails — an optional mode that replaces a YouTube iframe with a lightweight clickable thumbnail until the visitor actually wants to watch it.

Two layers of on/off control

  • A single Master Switch turns the entire plugin on or off for the whole site
  • Turning the Master Switch off automatically dims and locks every other setting on the page so it can’t be edited by mistake — but nothing is ever cleared; your configuration reappears exactly as you left it the moment you switch it back on
  • A Smart LazyLoad panel on the post/page editor sidebar adds a single Lazy Load dropdown — Default, Enable, or Disable — so any individual post or page can override the site-wide behavior without touching a single other post

Performance tuning

  • Automatically skips lazy loading the first image on the page, protecting your Largest Contentful Paint (LCP) score
  • Adjustable distance-from-viewport threshold that controls how early loading starts
  • Choice between the plugin’s own IntersectionObserver-based engine or the browser’s native loading="lazy"
  • Loads its own script in the footer instead of the head, so it never delays first paint
  • Can be switched off entirely for logged-in users, so you always see full-quality content while editing

Appearance while content loads

  • Low-quality image placeholder (LQIP): a tiny, blurred preview generated from an existing thumbnail size, shown instead of a blank box
  • The preview is generated once per image and cached as post meta, so it costs nothing on later page loads
  • A WP-CLI command (wp smart-lazyload generate-lqip) pre-generates placeholders for your whole media library at once, so large sites never pay the one-time generation cost on a live visitor’s request
  • Pick which registered image size is used to generate the preview
  • Configurable fade-in duration for the moment content finishes loading
  • Optional placeholder background color, picked with the native WordPress color picker

Compatibility and control

  • A multi-line custom exclude field — list your own classes or attributes to skip, no code required
  • Built-in recognition of common exclusion conventions: no-lazyload, skip-lazy, data-no-lazy, data-skip-lazy
  • Automatically stays out of the way inside page builder editors (Beaver Builder, Divi, Oxygen) and on feeds, previews, and REST requests
  • Developer filters for replacing placeholders and disabling lazy loading conditionally
  • One-click “Reset to Defaults” whenever you want to start over

Built the right way

  • Zero jQuery or bundled third-party libraries on the frontend
  • noscript fallbacks so content is never lost for visitors or crawlers without JavaScript
  • A modern, fully responsive, card-based settings screen
  • Clean uninstall: removes its own options and post meta, nothing else, when you delete the plugin

Configuration

Site-wide settings: Settings LazyLoad

The settings screen is organized into five cards:

Master Switch — the single toggle that turns Smart LazyLoad on or off for the entire site. When it’s off, every card below it is dimmed and cannot be edited, but nothing about your saved configuration changes.

What to Lazy Load — independently toggle Images, Responsive <picture> Sources, Background Images, Iframes, Native Videos, and YouTube Thumbnail Replacement.

Performance — Skip First Image (for LCP), Threshold Distance, Use Native Browser Lazy Loading, Load Script in Footer, and Disable for Logged-in Users.

Appearance — Low-Quality Image Placeholder plus its source size, an optional Placeholder Background Color, and the Fade-in Duration.

Advanced — a Custom Exclude Selectors textarea for skipping elements by class or attribute without writing code.

A Reset to Defaults button at the bottom restores every option to its original value in one click.

Per-post override

Open any post, page, or public custom post type in the block editor and look for the Smart LazyLoad panel in the sidebar. Its Lazy Load dropdown has three choices:

  • Default (On) or Default (Off) — label reflects the current Master Switch state; this post simply follows the site-wide setting
  • Enable — lazy loading is always on for this post, even if the Master Switch is off
  • Disable — lazy loading is always off for this post, even if the Master Switch is on

The choice is saved as post meta and applies only to that single post — nothing else on the site is affected.

Developer filters

do_smart_lazyload — return `false` to disable lazy loading for the current request.

smart_lazyload_svg_placeholder — replace the default inline SVG placeholder used for images.

smart_lazyload_placeholder — replace the placeholder value used for deferred iframes (default: `about:blank`).

smart_lazyload_excluded_attributes — extend the list of strings that exclude an image tag from lazy loading.

smart_lazyload_iframe_excluded_patterns — extend the list of strings that exclude an iframe tag from lazy loading.

smart_lazyload_excluded_src — extend the list of substrings checked against an image or background-image URL itself (not just its surrounding tag) to exclude it from lazy loading; useful for dynamic image generators or known placeholder assets.