LazyLoad is a lightweight (2.4 kB) and flexible script that **speeds up your web application** by deferring the loading of your below-the-fold images, animated SVGs, videos and iframes to **when they will enter the viewport**. It's written in plain "vanilla" JavaScript, it leverages the [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) API, it supports [responsive images](https://alistapart.com/article/responsive-images-in-practice), it optimizes your website for slower connections, and can enable native lazy loading. See [all features](#-all-features-compared) for more.
[](https://www.npmjs.com/package/vanilla-lazyload)
[](https://www.npmjs.com/package/vanilla-lazyload)
[](https://www.jsdelivr.com/package/npm/vanilla-lazyload)
➡️ Jump to: [👨💻 Getting started - HTML](#-getting-started---html) - [👩💻 Getting started - Script](#-getting-started---script) - [🥧 Recipes](#-recipes) - [📺 Demos](#-demos) - [😋 Tips & tricks](#-tips--tricks) - [🔌 API](#-api) - [😯 All features compared](#-all-features-compared)
---
**Love this project? 😍 [Buy me a coffee!](https://ko-fi.com/verlok)**
---
## 👨💻 Getting started - HTML
In order to make your content be loaded by LazyLoad, you must use some `data-` attributes instead of the actual attributes. Examples below.
### Lazy image:
```html
```
### Lazy image with low quality placeholder:
```html
```
### Lazy responsive image with `srcset` and `sizes`:
```html
```
To have a low quality placeholder, add the `src` attribute pointing to a very small version of the image. E.g. `src="lazy_10.jpg"`.
### Lazy responsive image with hi-dpi support using the `picture` tag:
```html
```
To have a low quality placeholder, add the `src` attribute pointing to a very small version of the image to the `img` tag. E.g. `src="lazy_10.jpg"`.
### Lazy responsive image with automatic _WebP_ format selection, using the `picture` tag:
```html
```
To have a low quality placeholder, add the `src` attribute pointing to a very small version of the image to the `img` tag. E.g. `src="lazy_10.jpg"`.
### Lazy background image
⚠ **IMPORTANT NOTE**: To display content images on your pages, always use the `img` tag. This would benefit the SEO and the accessibility of your website. To understand if your images are content or background, ask yourself: "would my website user like to see those images when printing out the page?". If the answer is "yes", then your images are content images and you should avoid using background images to display them.
#### Single background image:
```html
```
#### Single background, with HiDPI screen support:
```html
```
#### Multiple backgrounds:
```html
```
#### Multiple backgrounds with `image-set`:
```html
...
```
### Lazy animated SVG
```html
```
### Lazy video
```html
```
Please note that the video poster can be lazily loaded too.
### Lazy iframe
```html
```
---
**Love this project? 😍 [Buy me a coffee!](https://ko-fi.com/verlok)**
---
## 👩💻 Getting started - Script
The latest, recommended version of LazyLoad is **17.8.3**.
Quickly understand how to upgrade from a previous version reading the [practical upgrade guide](UPGRADE.md).
### The simple, easiest way
The easiest way to use LazyLoad is to include the script from a CDN:
```html
```
Then, in your javascript code:
```js
var lazyLoadInstance = new LazyLoad({
// Your custom settings go here
});
```
To be sure that DOM for your lazy content is ready when you instantiate LazyLoad, **place the script tag right before the closing `