Image Load Lab

Guides Performance Lab Tested Oct 18, 2026 20 photos · 8 placeholder types

Blurred Image Placeholders (LQIP and BlurHash): How Small Can They Be?

A 24-pixel WebP placeholder took a median 160 bytes, less than half a JPEG or AVIF of the same size, while a BlurHash string took only 28 characters.

While a large photo loads, many sites show a blurred low-quality preview (often called LQIP) or a BlurHash, a short text code that a script turns into a blurry image. Both are meant to be tiny and are usually embedded in the HTML. How small are these placeholders in practice, and which format makes the smallest one? We generated eight kinds of placeholder for each of our 20 test photos.

The test

For every CC0 photo in our corpus we created tiny versions 16, 24 and 32 pixels wide as JPEG (MozJPEG quality 40), WebP (quality 40), AVIF (quality 40) and palette PNG, and measured both the file and the length of the data URI that would sit in the HTML. We also computed BlurHash strings with 4 × 3 and 6 × 4 components from a 32-pixel version, using the blurhash 2.0.5 library, and the photo’s dominant colour as a CSS value. Everything ran on sharp 0.35.5. See our methodology.

Results

Bar chart: a 24-pixel placeholder took a median of 553 characters as a JPEG data URI, 237 as WebP and 489 as AVIF, while a BlurHash string took 28 or 52 characters
Median length of each kind of placeholder for 20 photos, as it would sit in the HTML. Chart generated from the linked CSV.
Quality 40 for JPEG, WebP and AVIF; BlurHash computed from a 32-pixel version
Placeholder Median characters in the HTML
JPEG 16 px 509
JPEG 24 px 553
JPEG 32 px 617
WebP 24 px 237
AVIF 24 px 489
PNG palette 24 px 764
BlurHash 4×3 28
BlurHash 6×4 52
Dominant colour (CSS) about 20

WebP made the smallest image placeholders. A 24-pixel WebP took a median of 160 bytes, 237 characters as a data URI. The same placeholder as JPEG took 397 bytes (553 characters), and as AVIF 350 bytes (489 characters). At 16 pixels WebP needed only 104 bytes.

JPEG and AVIF carry fixed overhead. Their headers and containers take a few hundred bytes regardless of the picture, which dominates at this size: a JPEG placeholder grew only from 364 to 445 bytes between 16 and 32 pixels. WebP’s container is much lighter. That is the opposite of the ranking for large photos, where AVIF is clearly the smallest, as our format comparison found.

BlurHash was an order of magnitude smaller still. A 4 × 3 BlurHash is 28 characters, and a 6 × 4 one 52. The trade-off is that it needs a script to decode it into an image, and it carries only a few smooth colour blobs, not shapes.

Three photos next to their 24-pixel WebP placeholders enlarged and blurred: the placeholders keep the main colours and layout of each scene
Left: the photo. Right: its 24-pixel WebP placeholder scaled up with a blur, roughly as a page would show it before the real image arrives. Photos: CC0, see image credits.

The preview shows what 24-pixel WebP placeholders look like when scaled up with a blur: the main colours and the layout of each scene survive, which is all a placeholder has to do.

Placeholders and Largest Contentful Paint

A placeholder improves how loading feels, not the Largest Contentful Paint metric. In our test of blurred placeholders and LCP, Chrome never counted a placeholder as the LCP element, because images with very little data per pixel are excluded, and the LCP time stayed that of the full photo.

Choosing a placeholder

  • Without JavaScript: a 16–24 pixel WebP as a data URI, scaled up with CSS blur. About 160–240 characters per image.
  • With a framework that decodes BlurHash: 28 characters per image, ideal for long lists and APIs.
  • Cheapest of all: a dominant background colour, about 20 characters of CSS. It prevents a white flash and costs nothing to decode.
  • Always set width and height on the real image, so the placeholder reserves the right space; a placeholder does not prevent layout shift by itself.

Practical conclusion

For placeholders, WebP was the smallest image format (a median 160 bytes at 24 pixels) and BlurHash the smallest overall (28 characters). Placeholders change how loading looks, not your LCP time, so keep them tiny and do not let them delay the real image.

Limitations

One quality setting per format; lower settings shrink JPEG and AVIF a little but cannot remove their fixed overhead. Data URI lengths are before HTTP compression; as our Base64 test showed, Brotli removes most of Base64’s extra third. We did not measure the decoding cost of BlurHash in the browser.

Data and files

Download lqip-placeholders.csv (20 rows, 2.8 KB) · Method: testing methodology. Photos: image credits.