LCP resource discovery and the Core Web Vitals

HTML markup, CSS background-image, <link rel="preload">, JavaScript, or HTTP Link header: how the browser finds the LCP element and how much load delay each path adds.

Field data PhoneDesktopAll Scope All sites October 2026 edition · All devices field outcomes

On 69.2% of sites, the browser finds the LCP element straight in the HTML. 27.4% hide it in a CSS stylesheet, 2.3% declare it with <link rel="preload">, and 0.8% inject it with JavaScript. Sites with the LCP element in HTML have a good LCP on 85% of sites (1.5s median), against 78% for CSS discovery (1.7s) and 71% for JavaScript discovery (1.9s). Preloading cuts median resource load delay to 214 ms, the lowest of any discovery path.

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
1

LCP pass rate

Sites that send a Link: rel=preload HTTP header have a good LCP most often at 95% (almost all of them on Shopify), followed by HTML discovery at 85%, <link rel="preload"> at 81%, CSS discovery at 78%, and JavaScript discovery at 71%. Why does <link rel="preload"> (81%) trail plain HTML discovery (85%) when preload is meant to speed up loading? Because six in ten preload sites use it on a CSS background-image on slower sites. On those background images, preload lifts good LCP from 78% to 81%.

SitesGood, needs improvement, poor LCPMedian
All sites196,26382%1.5s
103 Early Hints <0.1%2496%1.3s
HTTP Link header 0.2%41195%1.0s
HTML document 69.2%128,64185%1.5s
<link rel="preload"> 2.3%4,44081%1.6s
CSS background-image 27.4%51,77478%1.7s
JavaScript injection 0.8%1,47871%1.9s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
2

LCP resource discovery usage

Nearly seven in ten sites (69.2%) put their LCP element in the initial HTML markup. More than one in four (27.4%, 53,883 sites) put the LCP image inside a CSS background-image rule. Explicit <link rel="preload"> tags appear on 2.3% of sites (4,567 sites), JavaScript injection on 0.8% (1,521 sites), and HTTP Link headers on 0.2% (438 sites).

HTML document 69.2% CSS background-image 27.4%
HTML document 69.2% CSS background-image 27.4% <link rel="preload"> 2.3% JavaScript injection 0.8% HTTP Link header 0.2% 103 Early Hints <0.1%
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
3

LCP phase breakdown by discovery path

How the browser discovers the LCP asset directly sets its resource load delay: <link rel="preload"> starts the download after a median 214 ms, HTML discovery after 280 ms, CSS discovery after 390 ms, JavaScript discovery after 538 ms. When a hero image lives in CSS, Chrome must download and parse the stylesheet and match the selector against the DOM before it sees the image URL. That adds 110 ms of load delay over HTML discovery.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
Sites with LCP resource discovery 135,422647 ms318 ms223 ms318 mslab 318 ms1.5s
<link rel="preload"> 3,637758 ms214 ms320 ms214 mslab 214 ms1.6s
HTTP Link header 312449 ms237 ms235 ms237 mslab 237 ms979ms
HTML document 89,138601 ms280 ms231 ms280 mslab 280 ms1.5s
CSS background-image 41,136770 ms390 ms200 ms390 mslab 390 ms1.7s
JavaScript injection 1,179855 ms538 ms245 ms538 mslab 538 ms1.9s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
4

LCP discovery path by element type

More than half of all <link rel="preload"> sites (2,677 of 4,567) preload a CSS background-image rather than an <img> tag. Preloading cuts the background image's field load delay from 390 ms to 216 ms. That lifts LCP from 78% to 80%. Among standard <img> LCP elements, HTML discovery covers 80,044 sites (86% good, 280 ms load delay), <link rel="preload"> covers 1,737 sites (83% good, 208 ms delay), and JavaScript injection covers 1,410 sites (70% good, 534 ms delay).

Discovery path <img> element CSS background-image Text block <video> element
HTML document
86% 280 ms delay 80,044 sites
few sites
83% 275 ms delay 51,385 sites
80% 310 ms delay 4,566 sites
CSS background-image few sites
78% 390 ms delay 53,883 sites
few sites few sites
<link rel="preload">
83% 208 ms delay 1,737 sites
80% 216 ms delay 2,677 sites
81% 198 ms delay 70 sites
91% 263 ms delay 83 sites
JavaScript injection
70% 534 ms delay 1,410 sites
few sites few sites
80% 697 ms delay 107 sites
HTTP Link header
81% 226 ms delay 48 sites
97% 237 ms delay 382 sites
few sites few sites
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Understanding LCP resource discovery

How much time early discovery saves

Resource load delay is the gap between Time to First Byte (when the HTML arrives) and the moment the browser starts downloading the LCP resource. When the LCP image is a standard <img> in the HTML, Chrome's preload scanner finds it at a 280 ms median load delay. When the image sits in an external stylesheet as a background-image, load delay jumps to 390 ms. The browser has to download the CSS, build the CSSOM, and match selectors to the DOM before it sees the image URL. A <link rel="preload" as="image"> tag in the <head> lets the preload scanner start the image download alongside the stylesheet. That cuts the CSS background image's load delay from 390 ms to 216 ms.

Put the LCP image in the initial HTML as an <img> (or <picture>) element with fetchpriority="high". Do not hide hero images in CSS background-image rules or render them from client-side JavaScript. Across this dataset, 27.4% of sites put their LCP image in CSS, which adds 110 ms of resource load delay and drops good LCP from 85% to 78%. If a theme or page builder locks the hero into a CSS background-image, add <link rel="preload" as="image" fetchpriority="high"> in the <head> or send a Link: rel=preload HTTP header. The browser can then start downloading the image before the stylesheet arrives.

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 196,430 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
Platform & Framework Takeaways

How LCP resource discovery plays out per platform

What the field data shows when you isolate a single CMS or framework.

WordPress 62,223 sites
73% vs 66% good LCP (HTML img vs CSS background)

WordPress sites with an HTML <img> hero pass LCP 7 percentage points more often than sites with CSS background heroes.

Across WordPress sites, 55.3% reference the hero image in initial HTML (73% good LCP, 1.9s median), 39.7% use section background-image styles (66% good LCP, 2.1s median), and sites with <link rel="preload"> pass at 77% good LCP.

Read the WordPress LCP discovery breakdown →
Shopify 8,177 stores
89.6% discover the hero in HTML (96% good LCP)

89.6% of Shopify stores render their hero banner as a direct HTML image.

Shopify's Liquid image_tag filter outputs standard <img> markup by default. Across Shopify, 89.6% of stores discover the hero image in HTML (96% good LCP, 1.3s median) compared with 9.3% in CSS background images (93% good LCP, 1.5s median).

Read the Shopify LCP discovery breakdown →
React & Next.js 9,390 sites
88% vs 66% good LCP (HTML img vs CSS background)

React sites with an HTML <img> hero pass LCP 22 percentage points more often than sites with CSS background heroes.

Across React sites, 84.0% include the LCP image in initial HTML (88% good LCP, 1.3s median) compared with 13.7% that reference the hero image in CSS (66% good LCP, 2.0s median).

Related signals LCP image size → LCP element type → LCP origin → LCP image format → By Arjen Karel · 210,902 crawled sites (196,263 with all devices Chrome field data, 196,430 sites with LCP resource discovery, October 2026) · How we measured