---
title: "What is lazy loading in WordPress? | WP Ministry"
url: https://wpministry.co/glossary/lazy-loading/
description: "Lazy loading means the browser fetches an image or embed only when the visitor scrolls near it. WordPress adds it by itself. The main image must not have it."
lang: en-US
---

Skip to content

# Lazy loading

Lazy loading means the browser fetches an image or an embed only when the visitor scrolls near it, not when the page opens. WordPress does it by itself, for images since 5.5 and for iframes since 5.7. It must never apply to the main image at the top of a page.

By

WP Ministry

Published

October 8, 2026

## In short

- WordPress adds loading="lazy" to images since 5.5 and to iframes since 5.7, when the tag has a width and a height. That needs no plugin.
- Since 6.3 it leaves the first three images or iframes in the content alone and marks the likely main image with fetchpriority="high".
- The main image at the top of a page must not be lazy-loaded. If it is, Largest Contentful Paint gets slower.

Lazy loading means the browser holds back an image or an embed until the visitor scrolls near it, and does not fetch everything when the page opens. A visitor who never scrolls never downloads what is further down.

In WordPress it is done with the browser's own `loading="lazy"` attribute on the tag. No plugin and no script is involved. WordPress adds the attribute itself:

- **Images, since 5.5.** Every image tag that has a `width` and a `height`: in post content, excerpts, text widgets and avatars, and images a theme prints through `wp_get_attachment_image()`.
- **Iframes, since 5.7.** On the same condition. Most iframes on a WordPress site come from embeds, and only some services supply both dimensions.
- **Not the first ones.** Since 5.9 WordPress leaves the first image or iframe in the content alone, and since 6.3 the first three, because they are likely to be on screen when the page opens.
- **The main image is given priority, since 6.3.** WordPress adds `fetchpriority="high"` to the image it judges most likely to be the largest in view, and never puts that and `loading="lazy"` on one tag.

It keeps a `loading` attribute that a theme or plugin has already written.

## Where you meet it

- **The page's source.** `loading="lazy"` on an `<img>` or `<iframe>` tag.
- **PageSpeed Insights.** The insight "LCP request discovery" checks three things about the main image. One is that it does not use `loading=lazy`.
- **Older reports and guides.** "Defer offscreen images" was an audit that asked for more lazy loading. Lighthouse 13, released in October 2025, removed it. Its release note says browsers already give offscreen images a low priority, so lazy loading saves bandwidth and is unlikely to change what Lighthouse measures.

## What goes wrong

- **The main image is lazy-loaded.** The browser cannot start fetching it until it has worked out where the image sits, so Largest Contentful Paint (https://wpministry.co/glossary/core-web-vitals/) gets slower. WordPress goes by the order of the tags, not by what the layout puts on screen, and it keeps an attribute a theme or builder wrote. How to fix Largest Contentful Paint (https://wpministry.co/blog/fix-largest-contentful-paint-wordpress/) has the fix.
- **The banner is a CSS background.** The attribute works on a tag, not on a background image, so none of the above applies to it. How to lazy load images and videos (https://wpministry.co/blog/lazy-load-images-videos-wordpress/) covers backgrounds, video and embeds.
- **Two things lazy-load the same images.** If a plugin, a theme or a page builder runs lazy loading of its own, check that it leaves out the first images. The same guide shows how.
- **It is expected to fix heavy images.** Lazy loading decides when an image is fetched, not how big the file is. See how to optimize WordPress images (https://wpministry.co/blog/optimize-wordpress-images-without-losing-quality/).

## How to look at yours

Open a post with several images, view the page's source and search for `loading="lazy"`. On a current WordPress, the first three images in the content should not carry it and the ones after them should. The large image at the top should carry `fetchpriority="high"`.

## Common questions

Do I need a plugin to lazy-load images in WordPress?

No. WordPress has added `loading="lazy"` to images since version 5.5 and to iframes since 5.7. It does not cover an image set as a CSS background, because the attribute works only on a tag.

Does lazy loading improve a PageSpeed score?

Not much by itself. It saves data for images below the first screen, and Lighthouse dropped its audit for it in version 13 because that is unlikely to change the figures it measures. Applied to the main image, it makes Largest Contentful Paint worse.

How do I stop one image from being lazy-loaded?

Set `loading="eager"` on its tag in the theme, and WordPress keeps what it finds. To switch the feature off altogether, a developer can return false from the `wp_lazy_loading_enabled` filter.

## Not sure what is wrong?

Tell us what you see. We reply with the cause and a fixed quote, and the diagnosis is free.

Get a free diagnosis: https://wpministry.co/free-diagnosis/

May we measure how this site is used?

A yes notes the pages of this visit and loads Google Analytics. A no keeps and loads nothing. See the cookies page (https://wpministry.co/legal/cookies/).

If you say yes, we note the pages you look at during this visit and load Google Analytics. If you say no, nothing is kept and nothing is loaded. The site works the same either way. The cookies page (https://wpministry.co/legal/cookies/) has the details.

## Structured data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://wpministry.co/#organization",
      "name": "WP Ministry",
      "url": "https://wpministry.co/",
      "logo": "https://wpministry.co/brand/logo.png",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1309 Coffeen Ave STE 1200",
        "addressLocality": "Sheridan",
        "addressRegion": "WY",
        "postalCode": "82801",
        "addressCountry": "US"
      },
      "sameAs": [
        "https://www.linkedin.com/company/wp-ministry/",
        "https://x.com/wpministryco",
        "https://www.instagram.com/wpministryco/",
        "https://www.facebook.com/wpministryco",
        "https://www.tiktok.com/@wpministryco",
        "https://www.pinterest.com/wpministryco/",
        "https://www.youtube.com/channel/UCOZRuAukk5QSTRPG6BaHl3Q"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://wpministry.co/#website",
      "name": "WP Ministry",
      "url": "https://wpministry.co/",
      "inLanguage": "en-US",
      "publisher": {
        "@id": "https://wpministry.co/#organization"
      }
    },
    {
      "@type": "DefinedTerm",
      "@id": "https://wpministry.co/glossary/lazy-loading/#term",
      "name": "Lazy loading",
      "description": "Lazy loading means the browser fetches an image or embed only when the visitor scrolls near it. WordPress adds it by itself. The main image must not have it.",
      "url": "https://wpministry.co/glossary/lazy-loading/",
      "inDefinedTermSet": "https://wpministry.co/glossary/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://wpministry.co/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Glossary",
          "item": "https://wpministry.co/glossary/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Lazy loading"
        }
      ]
    }
  ]
}
```