AVIF vs WebP: what Polish websites actually serve

Two in five .pl homepages with images serve WebP, almost none AVIF, and over a quarter lazy-load the first image. What it costs in LCP, plus a checklist.

Reading time: 11 min readPublished:

AVIF vs WebP is mostly a question nobody on the Polish web has had to answer yet. Of the popular .pl homepages with images we read, 41% serve WebP somewhere and only 2.4% serve AVIF; JPEG and PNG are still most of the images. The bigger problem is order, not format: on 28% of homepages the first content image is lazy-loaded, and only 15% mark it with fetchpriority="high". Chrome's real-user data shows where that costs time: on sites whose largest element is usually an image, phones start fetching it a median 231ms after the first byte when the first image is prioritised, and 346ms when it is lazy-loaded.

We read the HTML of every .pl homepage in the Tranco list of popular sites (opens in a new tab) that answered on 30 October 2026, the same sample as our study of WordPress and other CMSs on Polish sites, and looked each site up in the Chrome UX Report (opens in a new tab), Google's record of how real Chrome users experience a site. The HTML says which formats and loading hints a page asks for; CrUX says how fast its largest image appears on phones.

.pl homepages read
7,415
serve WebP
41%
serve AVIF
2.4%
lazy-load the first image
28%

AVIF vs WebP: what do Polish homepages serve?

We read every <img> on each homepage, with its srcset, the lazy-loading attributes scripts use (data-src and the like) and the <source> elements of its <picture>, and took the format from the file extension, from a format parameter in the URL (format=webp, fm=avif) or from the type of a <picture> source. 6,802 of the 7,415 homepages show at least one raster image (not SVG, not a tracking pixel); every share below is of those.

WebP is the modern format the Polish web adopted: 41% of homepages serve at least one WebP image. AVIF is a rounding error next to it. A small group of sites leaves the choice to an image service whose URL says so (Next.js's /_next/image, Cloudinary's f_auto, Cloudflare's format=auto), which then sends AVIF or WebP to browsers that accept them.

Two in five .pl homepages serve WebP; AVIF barely registers

Share of .pl homepages with a raster image that serve each format at least once, in an img element, a picture source or an image preload · 95% intervals

WebP41%
AVIF2.4%
Format chosen by an image service2.2%
Picture element with an AVIF or WebP source9.6%
Source: Outofplace census, 30 Oct 2026; Tranco list Y8YYGDownload CSVDownload PNG
Show the data
ItemValue95% intervaln
WebP41%40%–42%6,802
AVIF2.4%2.1%–2.8%6,802
Format chosen by an image service2.2%1.8%–2.5%6,802
Picture element with an AVIF or WebP source9.6%8.9%–10%6,802
Two in five .pl homepages serve WebP; AVIF barely registers. Share of .pl homepages with a raster image that serve each format at least once, in an img element, a picture source or an image preload · 95% intervals

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

"Serves WebP somewhere" is a low bar: one WebP banner among thirty JPEGs counts. Counted image by image, JPEG and PNG are still most of what Polish homepages send, and the first content image of a page is no more modern than the rest.

JPEG and PNG are still most of the images on Polish homepages

Raster images by the most modern format each offers: every img element on every homepage pooled, and the first content image of each homepage · image-service formats, GIF and unknown folded into the last segment

  • AVIF
  • WebP
  • JPEG
  • PNG
  • GIF, image service, other
All raster imagesn = 384,25423%42%25%
First content imagen = 6,47522%36%32%
Source: Outofplace census, 30 Oct 2026Download CSVDownload PNG
Show the data
ItemAVIFWebPJPEGPNGGIF, image service, othern
All raster images1.2%23%42%25%8.2%384,254
First content image1.2%22%36%32%8.2%6,475
JPEG and PNG are still most of the images on Polish homepages. Raster images by the most modern format each offers: every img element on every homepage pooled, and the first content image of each homepage · image-service formats, GIF and unknown folded into the last segment

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Which platforms serve WebP most often?

Modern formats go with the platform. Homepages on Shoper and IdoSell, the two Polish hosted shop platforms, serve one far more often than the average, though about a quarter of them still serve no AVIF, WebP or image-service format. Sites built on a JavaScript framework with no CMS we could see are level with them. WordPress and PrestaShop sit below the average, and so do homepages with no CMS we could recognise.

Shoper, IdoSell and framework sites serve modern formats most often

Share of .pl homepages with a raster image that serve any AVIF, WebP or image-service format, by the CMS or platform we recognised · 95% intervals

Shoper74%
IdoSell73%
JS framework, no CMS seen68%
Other CMSs and platforms53%
WordPress39%
No CMS detected38%
PrestaShop36%
Joomla30%

All homepages: 43%

Source: Outofplace census, 30 Oct 2026; CMS groups from our WordPress studyDownload CSVDownload PNG
Show the data
ItemValue95% intervaln
Shoper74%68%–79%221
IdoSell73%66%–78%215
JS framework, no CMS seen68%64%–73%409
Other CMSs and platforms53%50%–57%695
WordPress39%37%–42%1,640
No CMS detected38%36%–39%3,004
PrestaShop36%32%–40%500
Joomla30%22%–38%118
Shoper, IdoSell and framework sites serve modern formats most often. Share of .pl homepages with a raster image that serve any AVIF, WebP or image-service format, by the CMS or platform we recognised · 95% intervals

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Rank makes no difference we can see: the 100 most popular .pl homepages serve a modern format about as often as the rest.

Is AVIF better than WebP?

On file size, usually. The Next.js image documentation (opens in a new tab) puts AVIF at about 20% smaller than WebP and about 50% slower to encode, and still recommends WebP for most cases; that is why Next.js serves WebP unless a site turns AVIF on. Decoding works everywhere that matters now: MDN lists AVIF support (opens in a new tab) from Chrome 85, Firefox 93, Safari 16.1 and Edge 121 (read on 7 November 2026), and WebP in every current version of those browsers.

Our data can't say which format makes a page faster: the few AVIF sites differ from the rest in too many other ways. What it does show is where the gain is for a Polish site. Most homepages haven't made the first step, from JPEG and PNG to either modern format, and for them the AVIF vs WebP choice matters less than making it at all. Google Search indexes both: its image guidelines (opens in a new tab) list WebP and AVIF among the supported formats, next to JPEG and PNG.

Does lazy loading images hurt SEO?

Not when the browser does it. Google's guide to lazy loading (opens in a new tab) names browser built-in lazy loading as a way to load images that Google can still see, and warns only against content that waits for a scroll or a click, since Googlebot doesn't interact with the page. That is the native attribute, loading="lazy", which 51% of Polish homepages with images use.

The older way is a script: the real address sits in data-src, a placeholder in src, and JavaScript swaps them in when the image scrolls into view. 23% of homepages with images still lazy-load at least one image like that. It works for Google when the script reacts to the viewport rather than to scrolling, but it also hides the image from the browser's preload scanner (opens in a new tab), so even a hero image waits for the script.

Half of .pl homepages lazy-load images natively; a third use fetchpriority

Share of .pl homepages with a raster image that use each loading hint at least once · 95% intervals

loading="lazy"51%
Lazy loading by a script23%
srcset31%
fetchpriority="high"31%
Image preload16%
Width and height on every image17%
Source: Outofplace census, 30 Oct 2026Download CSVDownload PNG
Show the data
ItemValue95% intervaln
loading="lazy"51%50%–52%6,802
Lazy loading by a script23%22%–24%6,802
srcset31%30%–32%6,802
fetchpriority="high"31%30%–32%6,802
Image preload16%15%–17%6,802
Width and height on every image17%16%–18%6,802
Half of .pl homepages lazy-load images natively; a third use fetchpriority. Share of .pl homepages with a raster image that use each loading hint at least once · 95% intervals

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Should the hero image be lazy loaded?

No. web.dev's guide to LCP (opens in a new tab) says it plainly: never lazy-load the LCP image, because the browser then waits until layout shows the image is on screen before it starts the download. We can't see which image is a page's LCP element without rendering the page, so we took the next best thing: the first content image in the HTML, meaning the first raster image that isn't a tracking pixel, a logo, an icon or smaller than 100 pixels. In a hand-checked sample, 19 of 24 such picks were real content images.

On 28% of homepages that image is lazy-loaded: 19% with loading="lazy" and 9.1% by a script. Some of these pages put a CSS background or text above it, so not every one is a mistake. But 7.1% of homepages with two or more images lazy-load every single one, and on those pages whichever image is the LCP element waits for certain.

On over a quarter of Polish homepages the first content image is lazy-loaded

How the first content image in the HTML loads, by CMS group: lazy (loading="lazy" or a script), prioritised (fetchpriority="high" or an image preload), or the browser default · n per row in the table

  • Lazy-loaded
  • Browser default
  • Prioritised
All homepagesn = 6,47528%55%17%
WordPressn = 1,58432%43%25%
PrestaShopn = 49936%53%
Shopern = 21231%57%12%
IdoSelln = 21325%30%45%
Joomlan = 11514%85%
JS framework, no CMS seenn = 39537%18%45%
No CMS detectedn = 2,77121%70%
Other CMSs and platformsn = 68640%48%12%
Source: Outofplace census, 30 Oct 2026; CMS groups from our WordPress studyDownload CSVDownload PNG
Show the data
ItemLazy-loadedBrowser defaultPrioritisedn
All homepages28%55%17%6,475
WordPress32%43%25%1,584
PrestaShop36%53%11%499
Shoper31%57%12%212
IdoSell25%30%45%213
Joomla14%85%0.9%115
JS framework, no CMS seen37%18%45%395
No CMS detected21%70%8.9%2,771
Other CMSs and platforms40%48%12%686
On over a quarter of Polish homepages the first content image is lazy-loaded. How the first content image in the HTML loads, by CMS group: lazy (loading="lazy" or a script), prioritised (fetchpriority="high" or an image preload), or the browser default · n per row in the table

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Framework sites and IdoSell shops prioritise the first image most often, IdoSell almost always with an image preload rather than fetchpriority. WordPress does it on about a quarter of homepages, which fits what its core has done since WordPress 6.3 (opens in a new tab): it adds fetchpriority="high" to the image it judges most likely to be the LCP element and leaves the first images on a page without loading="lazy". Joomla homepages and those with no CMS we recognised lazy-load the first image less often than the average. Homepages with no CMS we recognised also use native lazy loading less overall: 35% have any loading="lazy", against 51% of all homepages with images.

How do you prioritise the LCP image?

With fetchpriority="high" on that one <img>, or an image preload in the <head> when the image is a CSS background the browser would otherwise find late. 15% of homepages give the first content image fetchpriority="high", and 6% preload it.

The hint is often spent on the wrong image. Of the homepages with fetchpriority="high" on any image, 14% put it only on a logo, an icon or an SVG, and on 0.8% of homepages with images one image carries both loading="lazy" and fetchpriority="high", two hints that pull in opposite directions.

What does lazy-loading the hero image cost in LCP?

The Chrome UX Report splits the LCP of an image into four parts: time to first byte, resource load delay (from the first byte until the browser starts fetching the image), load duration and render delay. Lazy loading and fetchpriority act on the second. For 3,757 sites the LCP element is an image on at least half of their phone page loads. We compared the 3,529 of them whose homepage has a first content image by how that image loads.

When the first image is prioritised, phones start fetching the LCP image sooner

Median across sites of the p75 LCP image resource load delay on phones, by how the first content image loads in the HTML · sites whose LCP is an image on at least half of page loads · 95% bootstrap intervals

Lazy-loaded346ms
Browser default315ms
Prioritised231ms
Source: Chrome UX Report, 8 Oct – 4 Nov 2026; Outofplace census, 30 Oct 2026Download CSVDownload PNG
Show the data
ItemValueRangen
Lazy-loaded346ms326ms–372ms1,062
Browser default315ms298ms–328ms1,783
Prioritised231ms217ms–249ms673
When the first image is prioritised, phones start fetching the LCP image sooner. Median across sites of the p75 LCP image resource load delay on phones, by how the first content image loads in the HTML · sites whose LCP is an image on at least half of page loads · 95% bootstrap intervals

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

The order is the one the advice predicts: a median 231ms with a prioritised first image, 315ms with the browser's default and 346ms with a lazy one. The prioritised group stands clear of the other two; lazy against default is a smaller gap.

The difference barely reaches the headline metric. 85% of Polish sites with field data have good LCP on phones (2.5 s or less at p75), with a median LCP of 1,681ms. Among sites with an image LCP, the share with good LCP is 85% when the first image is lazy-loaded, 87% by default and 88% when prioritised, and the intervals overlap. Load delay is one part of four, and a gap of this size rarely decides whether a page passes.

Sites with an image LCP, by how the first content image loads: Chrome UX Report sites, share with good LCP on phones, median LCP (p75) and median LCP image load delay (p75)
First content imageSites in CrUXGood LCPMedian LCP (s)Median load delay (ms)
Lazy-loaded1,06685%1.73346
Browser default1,78887%1.66315
Prioritised67588%1.72231
Download CSV

The exception is homepages that lazy-load every image they have, compared across every site in CrUX rather than only those with an image LCP. The 372 such sites with load-delay data have a median load delay of 499ms, against 317ms for the other 4,731. Of the 387 such sites with LCP data, 82% have good LCP, against 86% of the rest, a gap whose 95% interval only just stays below zero.

These are correlations, not experiments. The sites differ in platform, hosting, page weight and audience; CrUX covers every page of a site, not only the homepage; and the first content image in the HTML stands in for the LCP element.

CSS background images: what the HTML doesn't show

A hero image set as a CSS background never appears as an <img>, so most of this study can't see it. The HTML gives a floor: 37% of homepages set at least one background image in a style attribute or a <style> block. Background images in external stylesheets, which we didn't fetch, come on top. A background hero can't take loading="lazy" or fetchpriority on its own element; the browser finds it only after the stylesheet arrives, which is what an image preload in the <head> is for.

How to serve AVIF with a WebP fallback and load the hero first

A checklist, in the order the browser meets the image:

  1. Offer AVIF, WebP and a fallback in one picture element

    List the sources from the most to the least efficient; the browser takes the first type it supports. Keep a JPEG or PNG in the <img> for the rest, and give it the image's real width and height so the page doesn't shift while it loads.

    <picture>
      <source type="image/avif" srcset="/hero-800.avif 800w, /hero-1600.avif 1600w" sizes="100vw" />
      <source type="image/webp" srcset="/hero-800.webp 800w, /hero-1600.webp 1600w" sizes="100vw" />
      <img src="/hero-1600.jpg" width="1600" height="900" alt="What the image shows" fetchpriority="high" />
    </picture>
  2. Or let an image service choose from the Accept header

    Next.js's image component, Cloudinary (f_auto), imgix (auto=format) and Cloudflare Images (format=auto) send AVIF or WebP from a single URL to browsers whose Accept header asks for them. Then one <img> with srcset is enough.

  3. Never lazy-load the image at the top of the page

    Leave loading off the hero image (or set loading="eager"), and don't hand it to a lazy-loading script. Check plugins and page builders: on WordPress, a lazy-loading plugin can undo what the core does.

  4. Give high fetch priority to one image

    Put fetchpriority="high" on the image most likely to be the LCP element, not on the logo. If the hero is a CSS background, preload it instead: <link rel="preload" as="image" href="/hero.avif" type="image/avif" fetchpriority="high">.

  5. Lazy-load everything below the fold, natively

    Use loading="lazy" on images further down the page. It needs no script, and Google indexes images loaded this way.

  6. Check the result on real phones

    Open PageSpeed Insights (opens in a new tab) for your homepage: its field data is the same Chrome UX Report we used, and its LCP breakdown shows how long the image waited before it started loading. Lab and field numbers often differ; our guide explains why lab and field data disagree.

How we measured

How we checked the first-content-image rule

We drew a seeded random sample of homepages, half whose first content image the rules called lazy-loaded and half whose image they didn't, and read the picked image's tag and its neighbours by hand. 19 of the 24 picks were content images (photos, banners, products, article images); the other five were a navigation graphic, a partner logo, a decoration, an app icon sized by CSS and a public-information badge. The format, loading and fetchpriority were read right in all 24. So the first-image shares are a rough guide to the hero, not a count of LCP images; the labels are in the dataset.

What this data can't tell you

We saw the homepage only, as its HTML arrived, and ran none of it. Images a script inserts after loading, images in external stylesheets and the format a CDN negotiates without a sign in the URL (such as Cloudflare Polish) are invisible to us, so the modern-format shares are a floor. The first content image in the HTML is not always the LCP element: a slider's second slide, a CSS background or a heading can be. Homepages over 1 MiB (319) were cut, which can hide images further down. The field data covers every page of a site, not just the homepage, and every difference in it is a correlation between sites, which also differ in hosting, platform, page weight and audience.

Is AVIF better than WebP?

AVIF usually makes smaller files: the Next.js documentation puts it at about 20% smaller than WebP, at about 50% longer to encode, and still recommends WebP for most cases. Every current major browser decodes both. On popular Polish homepages AVIF is rare and WebP common, so for most sites the step that matters is moving off JPEG and PNG at all.

Should I use AVIF or WebP in 2026?

Serve both if your tooling makes it cheap: AVIF first with a WebP fallback, through a <picture> element or an image service that reads the browser's Accept header. If you can only have one, WebP is the safe default. On the .pl homepages we read on 30 October 2026, 41% served WebP and 2.4% AVIF.

Does lazy loading images hurt SEO?

Not when the browser does it. Google's documentation lists browser built-in lazy loading as a way to load images that Google can still see, as long as images load when they enter the viewport and don't wait for a scroll or a click, since Googlebot doesn't interact with the page. What lazy loading can hurt is LCP, when it is applied to the main image at the top of the page.

Should the hero image be lazy loaded?

No. web.dev's guidance is never to lazy-load the LCP image, because the browser then waits for layout before it starts the download. On 28% of the Polish homepages we read, the first content image in the HTML is lazy-loaded, natively or by a script.

Which browsers support AVIF?

According to MDN, AVIF works in Chrome from version 85, Firefox from 93, Safari from 16.1, Edge from 121 and Opera from 71. WebP works in every current version of those browsers. Older devices still exist, so serve AVIF with a WebP or JPEG fallback.

How do I serve AVIF with a WebP fallback?

Use a <picture> element: a <source type="image/avif"> first, a <source type="image/webp"> second, and an <img> with a JPEG or PNG, width, height and alt last. The browser takes the first source it supports. An image CDN that reads the Accept header does the same from one URL.

Further reading

Optimize Largest Contentful Paint (web.dev) (opens in a new tab)The four LCP subparts, why the LCP image must never be lazy-loaded, and when to use fetchpriority.web.dev
Fix lazy-loaded website content (Google Search Central) (opens in a new tab)How to lazy-load images so that Google can still see and index them.developers.google.com
Image file type and format guide (MDN) (opens in a new tab)AVIF, WebP, JPEG and PNG compared, with browser support and fallbacks through <picture>.developer.mozilla.org
PerformanceCore Web Vitals by ecommerce platform: who is fastest?Our study of Polish shops: which platforms they run on and how they fare on Core Web Vitals.

Tell us what we’re building.

We reply within one business day.