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.
Lazy loading images in HTML
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:
1<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"
1<img2 src="https://res.cloudinary.com/chris101/image/upload/v1647634707/delta.jpg"3 loading="lazy"4/>
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:
1<!DOCTYPE html>2<html lang="en">3 <head>4 <meta charset="UTF-8" />5 <meta http-equiv="X-UA-Compatible" content="IE=edge" />6 <meta name="viewport" content="width=device-width, initial-scale=1.0" />7 <title>images lazyload</title>8 <!-- CSS only -->9 <link10 href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css"11 rel="stylesheet"12 integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"13 crossorigin="anonymous"14 />15 </head>16 <body>17 <main class="container m-3 align-items-center justify-content-center">18 <h1 class="text-center">Lazy Load HTML</h1>1920 <img21 src="https://res.cloudinary.com/chris101/image/upload/v1647634705/kq.jpg"22 class="img-fluid"23 alt=""24 />2526 <p class="text-center text-mute">27 Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor28 recusandae quibusdam accusamus culpa. Odit sit vero modi temporibus29 velit perspiciatis ullam tempora quo rerum praesentium, facilis, minus30 eaque enim illo necessitatibus eligendi ex tenetur, unde porro est eius?31 Soluta cupiditate possimus hic exercitationem expedita animi repellat32 debitis, molestiae quo eligendi blanditiis at minima quaerat?33 Accusantium dolorum necessitatibus, doloremque itaque quos id tempore34 sed fuga sit aliquam nulla? Officiis iusto consequuntur maxime ab35 accusamus omnis possimus quo aperiam sapiente quasi impedit accusantium36 harum necessitatibus deleniti tempore tempora hic molestiae ex37 consectetur nisi, exercitationem placeat amet eum! Reiciendis38 perspiciatis commodi qui. Dignissimos autem sint quis alias non, soluta,39 nam quasi cupiditate nulla hic similique eius culpa tempora, ex qui nemo40 vero vel atque minus dolores voluptate labore totam quidem! Repellat41 harum quos amet, nisi ducimus deleniti illum, quas quaerat ipsum42 incidunt consequuntur earum. Suscipit earum error quo corporis43 aspernatur, dolores neque libero, maxime totam reiciendis iusto44 quibusdam maiores. Earum sapiente aut, adipisci quae, eaque quis iure45 tempora consequatur doloremque facilis esse totam. Consectetur autem46 incidunt accusantium rerum asperiores quos ipsum iste iure, deserunt47 magni assumenda minima modi id ipsam tempore, voluptatibus quisquam.48 Molestiae, quam minus repudiandae quae suscipit iusto praesentium49 obcaecati sint eligendi ducimus! Animi, suscipit. Pariatur molestiae50 maiores quia, dolore voluptates obcaecati blanditiis voluptas aliquam51 quos rerum voluptatem eaque hic architecto soluta totam nisi52 necessitatibus! Accusantium veniam officiis inventore eaque eligendi53 molestias ad dolorum alias quisquam iste. Cumque nostrum quidem54 exercitationem quod nisi repellat laborum sit at recusandae modi55 accusantium iure dolorem provident, aut facilis hic odit? Suscipit et56 atque nesciunt. Eaque autem explicabo maiores animi quidem quae,57 aspernatur exercitationem eius sint ullam reprehenderit ratione officia58 quos aut atque quia. At, in cum! Unde totam quibusdam sequi dolore eum59 ipsa ex minima adipisci culpa tempora rem autem voluptatem, provident60 ducimus error reiciendis atque maxime dolorem quae aliquam dolores ad61 odit numquam esse? Cumque necessitatibus optio illo asperiores inventore62 rerum blanditiis voluptatum quasi provident cupiditate eaque eligendi63 distinctio nemo reprehenderit doloremque totam explicabo, incidunt ullam64 perferendis facere aperiam a porro voluptates repellendus! Veniam vel65 quis autem delectus libero ab, assumenda placeat esse nisi non? Esse,66 corrupti incidunt similique impedit sapiente blanditiis, iure67 consequuntur voluptate quod, quas dicta laboriosam rem at? Atque68 necessitatibus veritatis, commodi a reprehenderit tenetur alias nostrum69 odit quis rerum iusto esse eius nulla tempore voluptatibus nesciunt eos70 illo! Error a necessitatibus voluptatibus aperiam, sapiente minus fugit71 voluptas tempora corrupti debitis dolores eum labore quasi. Neque, nam72 aspernatur aliquam facere asperiores ducimus exercitationem. Cupiditate73 tempore natus quo neque, aspernatur dignissimos nemo in vero omnis74 fugiat repellendus non. Tempore, eveniet iste ab beatae recusandae dolor75 ducimus! Eveniet ex dolore voluptatibus possimus numquam, suscipit76 assumenda! Earum, error nulla? Minus autem doloremque sunt explicabo77 quam. Repellendus veritatis molestias iusto magni nesciunt atque animi78 repudiandae ex sapiente. Adipisci praesentium error dolorem placeat79 architecto deserunt! Reprehenderit error atque facilis sequi fugit eius80 maxime quisquam doloremque, sint dignissimos itaque eaque explicabo81 possimus nisi corporis aut ullam perferendis temporibus velit, enim82 cumque incidunt dicta nostrum. At incidunt nihil exercitationem sed sint83 iste debitis architecto ducimus vitae. Culpa non blanditiis officia sint84 provident facilis vitae nisi perspiciatis perferendis? In veniam85 expedita, blanditiis amet laudantium, nisi eveniet dolor voluptates et86 reiciendis, necessitatibus assumenda impedit accusamus iusto dolores?87 Natus iste, necessitatibus molestiae quas quo sint debitis facilis88 dolorum inventore iusto similique adipisci ea voluptatum recusandae,89 assumenda aperiam nostrum est? Fugiat ipsa ad porro quod consequuntur90 nobis a repellendus dolorem dolorum recusandae molestiae earum91 exercitationem necessitatibus quidem voluptate magni expedita odit, sed92 vero dicta. Nesciunt, laudantium et eos unde obcaecati inventore rerum93 quaerat ullam corporis eaque minima id temporibus quidem, dolor94 reiciendis. Ducimus recusandae aliquam, assumenda illum natus eaque95 dolor voluptatem quas placeat. Earum, neque eum quasi, adipisci ea qui96 deleniti magni distinctio, dicta voluptate odio aut corrupti commodi97 possimus autem. Velit sapiente, beatae recusandae provident esse eveniet98 sed eos, iste ipsam atque optio id consequuntur quos ullam tempore99 aliquam ratione obcaecati quidem praesentium debitis, fugit et. Possimus100 laudantium provident ab praesentium illum doloremque est cumque eius101 temporibus sint vero nemo reprehenderit tenetur deserunt dolor,102 exercitationem in! Ut impedit deserunt illum distinctio illo tenetur103 laborum, deleniti fugit voluptas maiores, soluta architecto nulla optio104 cumque, magnam eveniet temporibus! Quaerat rerum aliquid repellendus105 labore natus facilis? Ad non impedit ullam beatae molestiae officia,106 iste dicta iure dolorem vero placeat culpa. Tempora adipisci cumque,107 nisi voluptas eligendi reiciendis et praesentium totam dolore soluta108 corporis, quos ad deleniti iste ullam aut unde harum minus laboriosam at109 eaque aliquid aperiam? Porro distinctio labore aperiam adipisci earum110 dolorem quisquam est facere soluta, vitae commodi voluptate ipsum111 corrupti, natus sunt maxime necessitatibus tempora tenetur! Esse112 consequuntur, laudantium nihil asperiores ut modi facilis omnis odio113 illo accusantium, ab excepturi non. Ea ipsum porro corporis velit sint114 itaque fugiat enim, tempore consequatur sit similique deleniti quas115 saepe numquam fuga incidunt eaque maxime dignissimos nisi voluptates116 quod tempora. Hic iure quidem ipsa a dicta recusandae id, dignissimos117 excepturi eum. Enim dolore inventore quo repellendus aut, distinctio118 doloremque eum dignissimos suscipit, a ratione minus vitae dolorem?119 Inventore dolorum est recusandae vel natus. Dolor suscipit excepturi,120 optio cum consectetur voluptatem cumque aliquam cupiditate. Dolorem eum121 error eveniet, esse atque quas odit reprehenderit necessitatibus, enim122 ex optio est, praesentium numquam laudantium minus perspiciatis natus.123 Quam esse perferendis id? Illum error aut qui alias, rerum voluptatem,124 suscipit ipsam cupiditate in debitis totam veritatis necessitatibus125 sapiente accusantium? Doloribus tempore quam, culpa aut, quas accusamus126 ut labore blanditiis cum temporibus possimus hic maiores nostrum nulla,127 eum fugiat magni nemo ratione ullam doloremque. Minima quos numquam128 placeat. Deleniti architecto fugit, expedita sit animi esse nihil129 accusamus dolorum itaque perferendis culpa ullam numquam iure harum130 voluptatum non quisquam impedit ipsam sapiente officia quidem aliquam131 quasi voluptate? Quasi non, dolor ratione nulla rem dolores numquam132 quidem assumenda tempora ipsam voluptatum dolorum molestias tenetur133 minima id perspiciatis maiores iste nemo ducimus earum provident134 praesentium cupiditate libero vitae? Quos, quas. Praesentium quaerat135 officia hic, adipisci eveniet perferendis explicabo odio totam unde aut136 maxime tempora earum possimus! Eaque, vitae quis! Praesentium, assumenda137 mollitia.138 </p>139 <div class="container">140 <img141 src="https://res.cloudinary.com/chris101/image/upload/v1647634707/delta.jpg"142 alt=""143 class="img-fluid"144 loading="lazy"145 />146 </div>147 </main>148 </body>149</html>
Click the link below to access the live version of the code:
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:
Conclusion
This article covers implementing lazy loading images in plain HTML and testing how it works in practice.