Skip to content

How to Lazy Load Images in Plain HTML

Most websites contain images that contribute to high data usage and slow page loads. It is impossible to do away with photos on websites; therefore, page load speeds must be improved.

Image lazy loading is a method of identifying resources (images) as non-critical until they’re needed. For example, a page wouldn’t load an image if it is not in the user’s viewport. The image will get loaded only when a user scrolls to it. Lazy loading does not reduce the image quality but improves the page load time by rendering resources only when needed.

Demo and source code

We completed this project in CodeSandbox. Fork and run it to quickly get started.

The source code is available on GitHub.

NB: No extra skills or technical requirements are needed!

HTML provides a native way of lazy loading images using the <img> tag. Here is what a simple <img> tag would look like:

<img src="https://res.cloudinary.com/chris101/image/upload/v1647634705/kq.jpg" class="img-fluid" alt="an image with a title" />

To enable lazyload, we will introduce the loading attribute. Assigning “lazy” to the loading attribute instructs the browser not to load images that are not on the viewport until a user scrolls near them:

loading="lazy"


<img
  src="https://res.cloudinary.com/chris101/image/upload/v1647634707/delta.jpg"
  loading="lazy"
/>
Code language: HTML, XML (xml)

To test whether the lazyload works as intended, we will use the developer tools provided by popular browsers. We will be using Google Chrome for the demo. We will use the demo code below:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>images lazyload</title>
    <!-- CSS only -->
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"
      crossorigin="anonymous"
    />
  </head>
  <body>
    <main class="container m-3 align-items-center justify-content-center">
      <h1 class="text-center">Lazy Load HTML</h1>

      <img
        src="https://res.cloudinary.com/chris101/image/upload/v1647634705/kq.jpg"
        class="img-fluid"
        alt=""
      />

      <p class="text-center text-mute">
        Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor
        recusandae quibusdam accusamus culpa. Odit sit vero modi temporibus
        velit perspiciatis ullam tempora quo rerum praesentium, facilis, minus
        eaque enim illo necessitatibus eligendi ex tenetur, unde porro est eius?
        Soluta cupiditate possimus hic exercitationem expedita animi repellat
        debitis, molestiae quo eligendi blanditiis at minima quaerat?
        Accusantium dolorum necessitatibus, doloremque itaque quos id tempore
        sed fuga sit aliquam nulla? Officiis iusto consequuntur maxime ab
        accusamus omnis possimus quo aperiam sapiente quasi impedit accusantium
        harum necessitatibus deleniti tempore tempora hic molestiae ex
        consectetur nisi, exercitationem placeat amet eum! Reiciendis
        perspiciatis commodi qui. Dignissimos autem sint quis alias non, soluta,
        nam quasi cupiditate nulla hic similique eius culpa tempora, ex qui nemo
        vero vel atque minus dolores voluptate labore totam quidem! Repellat
        harum quos amet, nisi ducimus deleniti illum, quas quaerat ipsum
        incidunt consequuntur earum. Suscipit earum error quo corporis
        aspernatur, dolores neque libero, maxime totam reiciendis iusto
        quibusdam maiores. Earum sapiente aut, adipisci quae, eaque quis iure
        tempora consequatur doloremque facilis esse totam. Consectetur autem
        incidunt accusantium rerum asperiores quos ipsum iste iure, deserunt
        magni assumenda minima modi id ipsam tempore, voluptatibus quisquam.
        Molestiae, quam minus repudiandae quae suscipit iusto praesentium
        obcaecati sint eligendi ducimus! Animi, suscipit. Pariatur molestiae
        maiores quia, dolore voluptates obcaecati blanditiis voluptas aliquam
        quos rerum voluptatem eaque hic architecto soluta totam nisi
        necessitatibus! Accusantium veniam officiis inventore eaque eligendi
        molestias ad dolorum alias quisquam iste. Cumque nostrum quidem
        exercitationem quod nisi repellat laborum sit at recusandae modi
        accusantium iure dolorem provident, aut facilis hic odit? Suscipit et
        atque nesciunt. Eaque autem explicabo maiores animi quidem quae,
        aspernatur exercitationem eius sint ullam reprehenderit ratione officia
        quos aut atque quia. At, in cum! Unde totam quibusdam sequi dolore eum
        ipsa ex minima adipisci culpa tempora rem autem voluptatem, provident
        ducimus error reiciendis atque maxime dolorem quae aliquam dolores ad
        odit numquam esse? Cumque necessitatibus optio illo asperiores inventore
        rerum blanditiis voluptatum quasi provident cupiditate eaque eligendi
        distinctio nemo reprehenderit doloremque totam explicabo, incidunt ullam
        perferendis facere aperiam a porro voluptates repellendus! Veniam vel
        quis autem delectus libero ab, assumenda placeat esse nisi non? Esse,
        corrupti incidunt similique impedit sapiente blanditiis, iure
        consequuntur voluptate quod, quas dicta laboriosam rem at? Atque
        necessitatibus veritatis, commodi a reprehenderit tenetur alias nostrum
        odit quis rerum iusto esse eius nulla tempore voluptatibus nesciunt eos
        illo! Error a necessitatibus voluptatibus aperiam, sapiente minus fugit
        voluptas tempora corrupti debitis dolores eum labore quasi. Neque, nam
        aspernatur aliquam facere asperiores ducimus exercitationem. Cupiditate
        tempore natus quo neque, aspernatur dignissimos nemo in vero omnis
        fugiat repellendus non. Tempore, eveniet iste ab beatae recusandae dolor
        ducimus! Eveniet ex dolore voluptatibus possimus numquam, suscipit
        assumenda! Earum, error nulla? Minus autem doloremque sunt explicabo
        quam. Repellendus veritatis molestias iusto magni nesciunt atque animi
        repudiandae ex sapiente. Adipisci praesentium error dolorem placeat
        architecto deserunt! Reprehenderit error atque facilis sequi fugit eius
        maxime quisquam doloremque, sint dignissimos itaque eaque explicabo
        possimus nisi corporis aut ullam perferendis temporibus velit, enim
        cumque incidunt dicta nostrum. At incidunt nihil exercitationem sed sint
        iste debitis architecto ducimus vitae. Culpa non blanditiis officia sint
        provident facilis vitae nisi perspiciatis perferendis? In veniam
        expedita, blanditiis amet laudantium, nisi eveniet dolor voluptates et
        reiciendis, necessitatibus assumenda impedit accusamus iusto dolores?
        Natus iste, necessitatibus molestiae quas quo sint debitis facilis
        dolorum inventore iusto similique adipisci ea voluptatum recusandae,
        assumenda aperiam nostrum est? Fugiat ipsa ad porro quod consequuntur
        nobis a repellendus dolorem dolorum recusandae molestiae earum
        exercitationem necessitatibus quidem voluptate magni expedita odit, sed
        vero dicta. Nesciunt, laudantium et eos unde obcaecati inventore rerum
        quaerat ullam corporis eaque minima id temporibus quidem, dolor
        reiciendis. Ducimus recusandae aliquam, assumenda illum natus eaque
        dolor voluptatem quas placeat. Earum, neque eum quasi, adipisci ea qui
        deleniti magni distinctio, dicta voluptate odio aut corrupti commodi
        possimus autem. Velit sapiente, beatae recusandae provident esse eveniet
        sed eos, iste ipsam atque optio id consequuntur quos ullam tempore
        aliquam ratione obcaecati quidem praesentium debitis, fugit et. Possimus
        laudantium provident ab praesentium illum doloremque est cumque eius
        temporibus sint vero nemo reprehenderit tenetur deserunt dolor,
        exercitationem in! Ut impedit deserunt illum distinctio illo tenetur
        laborum, deleniti fugit voluptas maiores, soluta architecto nulla optio
        cumque, magnam eveniet temporibus! Quaerat rerum aliquid repellendus
        labore natus facilis? Ad non impedit ullam beatae molestiae officia,
        iste dicta iure dolorem vero placeat culpa. Tempora adipisci cumque,
        nisi voluptas eligendi reiciendis et praesentium totam dolore soluta
        corporis, quos ad deleniti iste ullam aut unde harum minus laboriosam at
        eaque aliquid aperiam? Porro distinctio labore aperiam adipisci earum
        dolorem quisquam est facere soluta, vitae commodi voluptate ipsum
        corrupti, natus sunt maxime necessitatibus tempora tenetur! Esse
        consequuntur, laudantium nihil asperiores ut modi facilis omnis odio
        illo accusantium, ab excepturi non. Ea ipsum porro corporis velit sint
        itaque fugiat enim, tempore consequatur sit similique deleniti quas
        saepe numquam fuga incidunt eaque maxime dignissimos nisi voluptates
        quod tempora. Hic iure quidem ipsa a dicta recusandae id, dignissimos
        excepturi eum. Enim dolore inventore quo repellendus aut, distinctio
        doloremque eum dignissimos suscipit, a ratione minus vitae dolorem?
        Inventore dolorum est recusandae vel natus. Dolor suscipit excepturi,
        optio cum consectetur voluptatem cumque aliquam cupiditate. Dolorem eum
        error eveniet, esse atque quas odit reprehenderit necessitatibus, enim
        ex optio est, praesentium numquam laudantium minus perspiciatis natus.
        Quam esse perferendis id? Illum error aut qui alias, rerum voluptatem,
        suscipit ipsam cupiditate in debitis totam veritatis necessitatibus
        sapiente accusantium? Doloribus tempore quam, culpa aut, quas accusamus
        ut labore blanditiis cum temporibus possimus hic maiores nostrum nulla,
        eum fugiat magni nemo ratione ullam doloremque. Minima quos numquam
        placeat. Deleniti architecto fugit, expedita sit animi esse nihil
        accusamus dolorum itaque perferendis culpa ullam numquam iure harum
        voluptatum non quisquam impedit ipsam sapiente officia quidem aliquam
        quasi voluptate? Quasi non, dolor ratione nulla rem dolores numquam
        quidem assumenda tempora ipsam voluptatum dolorum molestias tenetur
        minima id perspiciatis maiores iste nemo ducimus earum provident
        praesentium cupiditate libero vitae? Quos, quas. Praesentium quaerat
        officia hic, adipisci eveniet perferendis explicabo odio totam unde aut
        maxime tempora earum possimus! Eaque, vitae quis! Praesentium, assumenda
        mollitia.
      </p>
      <div class="container">
        <img
          src="https://res.cloudinary.com/chris101/image/upload/v1647634707/delta.jpg"
          alt=""
          class="img-fluid"
          loading="lazy"
        />
      </div>
    </main>
  </body>
</html>
Code language: HTML, XML (xml)

Click the link below to access the live version of the code:

https://o53mq0.csb.app/

We will load the URL on our browser and open up developer inspection tools: (shift+ctrl+I on Google Chrome). In the developer tools, go to the Network tab and select Img under it.

Once we are there, we hard refresh the page and notice that only the top image is loaded first:

Once we start scrolling down, the second image begins loading:

A short video demonstrating the test done:

https://youtu.be/S3rCexKbfvY

This article covers implementing lazy loading images in plain HTML and testing how it works in practice.

  1. Lazy Loading
  2. Image Attributes
  3. Tips for Authoring fast loading HTML pages
Back to top

Featured Post