Plus grand affichage de contenu (LCP)
Ce que LCP measures, its thresholds, the four sub-parts que faire it up, and how to en réalité améliorer it — the Core Web Vital personnes struggle with la plupart.
Langues
Plus grand affichage de contenu (LCP) is the render temps of the largest image or text block visible in the viewport, relative to quand lune page commencé chargement. Bon is ≤2,5 s at the 75th percentile of réel utilisateurs; it's un of the three Core Web Vitals. It breaks into four sub-parts — TTFB, resource charger delay, resource charger duration, and element render delay — and TTFB plus charger duration usually dominate. The biggest wins: don't lazy-load the LCP image, give it fetchpriority=élevé, preload it, cut ressources qui bloquent le rendu, and fix TTFB. It's a field metric — lab outils seulement approximate it — and of the Core Web Vitals it's the un personnes struggle la plupart to réussir, surtout on mobile.
TL;DR — Plus grand affichage de contenu (LCP) measures how long it takes pour the biggest chose on screen — usually a hero image or a big block of text — to montrer up après someone clicks to votre page. Sous 2,5 seconds is bon. It’s un of Google’s three Core Web Vitals, and it’s the un la plupart sites struggle with.
Ce que LCP is
The premier impression personnes have of votre site is how fast it apparaît to charger. LCP tries to put a number on que. It measures the amount of temps it takes to charger the unique largest visible element in the viewport — the partie of lune page vous pouvez voir sans scrolling.
Que “largest element” is usually un of two choses:
- A big image — a hero banner, a product photo, a featured image.
- A big block of text — courant on article pages que don’t lead with an image.
LCP is the moment que element finishes rendering, mesuré from quand lune page premier commencé chargement. The lower the number, the faster votre page feels.
The score
Google sorts LCP into three buckets:
- Bon: 2,5 seconds or moins
- Nécessite improvement: 2,5 to 4 seconds
- Poor: plus que 4 seconds
You’re aiming pour que 2,5-second mark. And it’s judged on réel visitors to votre site, pas a tester vous run une fois — so it’s the experience votre réel audience obtient on leur réel phones and connections.
Evidence for this claim A good LCP is 2.5 seconds or less at the 75th percentile of page loads, segmented by device type. Scope: Current web.dev LCP field threshold and assessment method. Confidence: high · Verified: web.dev: Largest Contentful PaintPourquoi it peut be hard
LCP is the Core Web Vital personnes struggle with the la plupart. That’s parce que it has the la plupart moving parts: votre serveur has to respond, le navigateur has to trouver and download the image, and alors it has to en réalité paint it. A slowdown at quelconque of ceux steps drags the whole number up. Compressing votre images is a courant premier guess — and it parfois helps — but it’s souvent pas the réel bottleneck.
It’s aussi harder on mobile que desktop, parce que phones have slower connections and moins processing power.
Que faire premier
Three rapide wins que fix the la plupart Erreurs fréquentes:
- Don’t lazy-load votre principal image. “Lazy loading” indique le navigateur to wait avant fetching an image. That’s great pour stuff far bas lune page — but si vous do it to votre hero image, you’re deliberately delaying the la plupart important chose on screen. Evidence for this claim An LCP image should not be lazy-loaded, and reducing resource load delay is a primary LCP optimization. Scope: web.dev guidance for image-based LCP elements. Confidence: high · Verified: web.dev: Optimize LCP
- Tell le navigateur the principal image is important — there’s an attribute
(
fetchpriority="high") que fait exactly que. Put it on the un image that’s en réalité votre LCP candidate; slapping it on several images dilutes the signal. - Speed up votre serveur. Si votre serveur is slow to respond, nothing sinon vous do matters beaucoup.
Vouloir the complet mental model — the four sub-parts of LCP, how to trouver votre LCP element, the rendering and font stuff, and how beaucoup ce en réalité matters pour rankings? Switch to the Avancé tab.
TL;DR — LCP is the render temps of the largest image or text block visible in the viewport, relative to quand lune page commencé chargement. Bon is ≤ 2,5 s at the 75th percentile of réel utilisateurs (split by device); 2,5–4 s nécessite fonctionner, over 4 s is poor. It’s un of three Core Web Vitals and breaks into four sub-parts — TTFB, resource charger delay, resource charger duration, element render delay — où TTFB and charger duration usually dominate (guidelines, pas fixed shares — diagnose votre propre page). Top fixes: jamais lazy-load the LCP image, ajouter
fetchpriority="high"on the réel candidate, preload it quand it isn’t in the HTML, kill render-blocking CSS/JS, and fix TTFB. It’s a field metric — lab outils seulement approximate it — and the LCP element peut modifier during charger. Google confirms Core Web Vitals feed ranking systems but doesn’t publish an exact LCP weight or appel it a tiebreaker; content relevance encore dominates.
Ce que LCP en réalité measures
LCP reports the render temps of the largest image or text block visible in the viewport, mesuré relative to quand the utilisateur premier navigated to lune page. Google’s propre framing: it’s the closest standardized proxy pour quand the principal content apparaît to the utilisateur. It replaced précédent, fuzzier metrics comme Premier Meaningful Paint and Speed Index.
A few choses que trip personnes up correct away:
- It’s pas “page load time.” Une page peut have every resource récupéré and encore post a slow LCP si rendering the largest element was blocked. LCP is à propos de que un element, pas the whole page.
- It’s pas the même as FCP. Premier affichage de contenu fires quand quelconque content premier apparaît; LCP waits pour the largest element. Une page peut have a fast FCP (the navbar paints) and a slow LCP (the hero image loads late).
- It’s a dynamic metric. Le navigateur dispatches a nouveau LCP candidate every temps a plus grand element becomes visible. The dernier entry avant the utilisateur interacts (tap, scroll, keypress) or lune page unloads is the valeur que counts — interaction souvent changements what’s visible, so reporting arrête là. A candidate that’s plus tard supprimé from the DOM doesn’t erase its propre entry — it stays the reported element unless a still-larger un renders avant reporting arrête.
The thresholds — and pourquoi 2,5 seconds
| Bucket | LCP |
|---|---|
| Bon | ≤ 2,5 s |
| Nécessite improvement | 2,5 s – 4,0 s |
| Poor | > 4,0 s |
Assessed at the 75th percentile of real-user page loads, segmented by device type. So three out of four visits besoin to come in sous 2,5 s pour an origin to réussir.
Evidence for this claim A good LCP is 2.5 seconds or less at the 75th percentile of page loads, segmented by device type. Scope: Current web.dev LCP field threshold and assessment method. Confidence: high · Verified: web.dev: Largest Contentful PaintPourquoi 2,5 specifically? Google’s threshold methodology leaned on two choses: human perception research pointing at roughly 1–3 seconds as the band que feels “immediate,” and CrUX achievability données showing 2,5 s was consistently achievable pour well-optimized sites sans being trivially facile. Tighter targets comme 1,5 s or 2,0 s weren’t consistently achievable à travers suffisant origins, so ils didn’t faire the cut.
Ce que counts as the LCP element
The element types considéré pour LCP:
<img>elements<image>elements à l’intérieur an<svg><video>elements (the poster image charger temps, or the premier frame, whichever is précédent)- An element with a background image chargé via the CSS
url()function - Block-level elements containing text nodes or autre inline text children
The reported size is what’s en réalité visible in the viewport — portions clipped
or scrolled off don’t count, and pour images it’s the visible size or the intrinsic
size, whichever is plus petit. Margins, padding, and borders are ignored. A handful of
elements obtenir excluded by heuristics: anything with opacity: 0, elements que
cover the whole viewport (treated as backgrounds), and low-entropy placeholder
images.
À propos de three-quarters of pages have an image as leur LCP element — so image fonctionner is usually the correct premier déplacer. But pas toujours, and pas toujours compression (plus on que suivant). The remaining chunk are text LCPs, où the lever is entirely différent: it’s font chargement, pas image weight.
The four sub-parts — the partie la plupart articles skip
Ce is the framework I’d commencer quelconque LCP diagnosis with. web.dev breaks LCP into four sequential sub-parts:
- Temps to Premier Byte (TTFB) — from quand the utilisateur starts chargement lune page to quand le navigateur receives the premier byte of HTML. Typical share: ~40% of total LCP.
- Resource charger delay — the gap entre TTFB and le navigateur starting to charger the LCP resource. Ce is discovery temps. Typical share: sous 10%.
- Resource charger duration — how long the LCP resource itself takes to download. Typical share: ~40%.
- Element render delay — from quand the resource finishes chargement to quand the element en réalité paints. Typical share: sous 10%.
| LCP sub-part | Typical share of total LCP |
|---|---|
| Temps to Premier Byte | ~40% |
| Resource charger delay | < 10% |
| Resource charger duration | ~40% |
| Element render delay | < 10% |
The principle behind the table: the vast majority of LCP temps devrait be spent chargement the HTML document and the LCP resource. Quelconque stretch où neither is chargement is an opportunity to améliorer.
web.dev is explicit que ces percentages are guidelines, pas strict rules — don’t convert les into absolute-second targets, and don’t force every page to match the split. They’re seulement meaningful relative to chaque autre, and si votre LCP is consistently dans 2,5 seconds déjà, the relative proportions don’t matter at tout. Utiliser the table to spot qui sub-part is eating an outsized share on votre page, alors fix que un — pas to chase an exact 40/10/40/10 split.
Evidence for this claim An LCP image should not be lazy-loaded, and reducing resource load delay is a primary LCP optimization. Scope: web.dev guidance for image-based LCP elements. Confidence: high · Verified: web.dev: Optimize LCPThe timeline begins with Time to First Byte, targeted at roughly 40 percent of total LCP. Resource load delay follows and should remain under 10 percent. Resource load duration is targeted at roughly 40 percent. Element render delay should remain under 10 percent and ends when the largest element actually paints.
© Patrick Stox LLC · CC BY 4.0 ·
And here’s the bit que upends the courant assumption: as of February 2025 ces four sub-parts are disponible in the CrUX API pour image LCPs, and the Chrome team’s analysis of HTTP Archive données trouvé que image download temps was souvent the smallest partie of LCP temps. En d’autres termes, “just compress my images” frequently fixes the incorrect sub-part. TTFB and discovery delay are souvent the bigger levers.
How to trouver votre LCP element
Avant vous optimize anything, trouver out qui element is votre LCP and qui sub-part is the bottleneck:
- PageSpeed Insights — the Diagnostics section flags the LCP element, and the field-data tab montre votre real-user score.
- Chrome DevTools — the Performances panel marks the LCP node on the timeline.
- The
web-vitalsJS library — log LCP (and the element) from votre propre real-user monitoring.
How to améliorer LCP
Map chaque fix to the sub-part it targets:
Fix resource charger delay (discovery). Ce is the highest-leverage and la plupart commonly broken un.
- Jamais lazy-load votre LCP image.
loading="lazy"on the LCP element toujours adds unnecessary charger delay. Reserve lazy chargement pour below-the-fold images. - Ajouter
fetchpriority="high"to the probable LCP image so le navigateur récupère it early at élevé priority. - Preload it with
<link rel="preload">quand the image isn’t discoverable in the initial HTML — Par exemple, quand it’s chargé via CSS or JavaScript. Chargement the hero image via JS is an anti-pattern precisely parce que it hides l’URL from le navigateur’s preload scanner. - Host critical resources on the même origin so le navigateur doesn’t pay supplémentaire connection setup.
Preload and fetchpriority solve différent problems, so don’t reach pour les deux by
habit. Preload exposes a resource le navigateur’s preload scanner voudrait sinon
découvrir late (a JS- or CSS-loaded image, Par exemple); fetchpriority changements
the récupérer priority of a resource le navigateur déjà trouvé. Si discovery and
priority are déjà correct — the image is a plain <img> in the initial HTML
— ajout soit peut do little au-delà extrune requêtes. Vérifier a trace, appliquer the un
que matches the réel problem, and confirmer the field number déplacé.
Fix element render delay.
- Reduce or inline render-blocking CSS; defer non-critical styles.
- Éviter synchronous scripts in the
<head>. - Préférer rendu côté serveur or static generation so the markup arrives ready to paint, and break up long main-thread tasks.
Reduce resource charger duration.
- Modern image formats (WebP, AVIF), sensible compression, and a CDN.
- Efficient
Cache-Control. And don’t ignore network contention — lazy-loading the autre below-fold images peut free up bandwidth so the LCP image lands sooner.
Reduce TTFB.
- Minimize redirections, drop unnecessary unique URL parameters, and optimize server réponse temps. Remarque que LCP inclut quelconque unload temps from the previous page, connection setup, and redirection temps — tout of qui roll into TTFB.
Special cas: text-based LCP. Quand the largest element is text, the critical
chemin is font chargement, pas image weight. font-display: optional or system
fonts eliminate font-induced render delay; font-display: swap sans
preloading the font fichier peut introduce it.
Lab vs. field — ce distinction matters
LCP is fundamentally a field metric. Google assesses it on réel utilisateurs via CrUX, surfaced in PageSpeed Insights’ field tab and the Search Console Core Web Vitals report. Que field données is ce que feeds rankings.
Lab outils — Lighthouse, Chrome DevTools, WebPageTest — seulement approximate it sous simulated conditions, and ils don’t même utiliser the même scoring. Lighthouse s’applique stricter desktop thresholds (Bon ≤ 1,2 s) que the field standard (≤ 2,5 s). So a passing Lighthouse score doesn’t guarantee a passing CrUX score, and vice versa. Utiliser lab outils to debug and reproduce; trust the field données pour the réel verdict.
There’s a second raison lab and field numbers peut diverge, worth knowing so an odd
reading doesn’t send vous chasing a phantom bug: the current LargestContentfulPaint
navigateur API (encore a W3C Working Draft) is scoped to a unique document charger. It
doesn’t itself reset on back/forward cache (bfcache) restores or same-document SPA
navigations, and pages que commencer off-screen — background tabs, prerendered pages —
peut report inflated valeurs parce que timing runs from charger plutôt que from quand the
page en réalité became visible. The reporting algorithm aussi halts on qualifying utilisateur
input, so si a utilisateur interacts avant votre principal content displays, LCP won’t capture
it. None of ce changements the threshold table ci-dessus; it explique pourquoi a spécifique
session’s number peut regarder incorrect quand the underlying navigation isn’t a plain
premier charger.
Fait LCP affecter rankings?
Yes, in the sense que Google confirms Core Web Vitals feed its ranking systems and recommends achieving bon scores. But current Search Central documentation doesn’t publish an exact LCP weight and doesn’t décrire it as a tiebreaker — Google’s propre framing is que page experience “can contribute to success in Search” pour requêtes où multiple pages déjà offer comparable, relevant content, and que a bon score doesn’t guarantee a ranking boost. Content relevance and quality encore dominate. Optimize LCP parce que a faster-feeling page is genuinely meilleur pour utilisateurs (and conversions) — pas parce que the mechanism is documented as a rankings tiebreaker, parce que it isn’t.
Evidence for this claim Google says Core Web Vitals are used by ranking systems, but current documentation does not specify an LCP weight, tiebreaker rule, or ranking guarantee. Scope: ranking systems Confidence: high · Verified: Understanding page experience in Google Search resultsA couple of realities from the données: of the Core Web Vitals, LCP is the un sites struggle la plupart to améliorer, and it’s noticeably harder on mobile que desktop — slower CPUs and connections. On 3G and slower, the 2,5 s threshold peut feel almost impossible to hit.
Où ce fits
LCP is un of three Core Web Vitals, alongside Interaction jusqu’au prochain affichage and Décalage cumulatif de mise en page. Its premier sub-part, Temps to Premier Byte, is its propre diagnostic metric, and Premier affichage de contenu sits correct suivant to it on the chargement timeline. You’ll voir tout of ces in PageSpeed Insights, Lighthouse, and the Chrome Utilisateur Experience Report (CrUX). Chaque is its propre deep dive in ce cluster.
AI summary
A condensed prendre on the Avancé version:
- LCP = render temps of the largest visible image or text block, relative to quand lune page commencé chargement. It’s the closest standardized proxy pour “quand fait the principal content apparaître.”
- Thresholds: Bon ≤ 2,5 s, Nécessite improvement 2,5–4 s, Poor > 4 s — at the 75th percentile of réel utilisateurs, split by device. It’s un of three Core Web Vitals.
- Pas page-load temps, pas FCP. FCP = premier pixel of quelconque content; LCP = the largest element. LCP is aussi dynamic — the largest candidate peut modifier during charger; the dernier un avant utilisateur interaction counts.
- LCP elements:
<img>,<image>in<svg>,<video>poster, CSSbackground-image: url(), or a block-level text element. ~3 in 4 pages have an image LCP; the rest are text (où fonts, pas image weight, are the lever). - Four sub-parts: TTFB (~40%), resource charger delay (<10%), resource charger duration (~40%), element render delay (<10%) — web.dev calls ces guidelines, pas fixed shares; diagnose par page plutôt que chasing an exact split. CrUX 2025 données: image download is souvent the smallest partie — so “just compress images” souvent fixes the incorrect chose.
- Top fixes: jamais lazy-load the LCP image; ajouter
fetchpriority="high"on the réel candidate; preload it quand it’s pas in the HTML (preload andfetchprioritysolve différent problems — don’t reach pour les deux by habit); cut render-blocking CSS/JS; reduce TTFB. - Field, pas lab. CrUX/Search Console drive rankings; Lighthouse seulement
approximates and uses stricter desktop thresholds (≤ 1,2 s). The current
LargestContentfulPaintAPI is scoped to document loads and doesn’t itself reset pour bfcache restores or same-document SPA navigations. - Rankings: Google confirms CWV feed ranking systems but publishes aucun exact LCP weight and doesn’t appel it a tiebreaker; content relevance encore dominates. Hardest CWV to améliorer, and harder on mobile.
Documentation officielle
Primary-source guidance from Google’s Chrome and Search teams.
web.dev (Chrome team)
- Plus grand affichage de contenu (LCP) — the canonical definition: ce que counts as an LCP element, how size is calculated, quand reporting arrête, and the measurement APIs.
- Optimize Plus grand affichage de contenu — the four sub-parts framework and the complet optimization playbook.
- Core Web Vitals — où LCP sits among the three Core Web Vitals.
- How the Core Web Vitals metrics thresholds were défini — the research and achievability données behind the 2,5 s mark.
Chrome pour Developers
- LCP image subparts and RTT now disponible in CrUX — the Feb 2025 field-data release of the four sub-parts (image LCPs seulement).
- Plus grand affichage de contenu | Lighthouse — the lab metric and its device-specific scoring.
Recherche Google Central
- Understanding Core Web Vitals and Recherche Google results — how Core Web Vitals factor into Search.
Quotes from the source
On-the-record statements from Google’s documentation and team. Chaque lien is a deep lien que jumps to the quoted passage.
web.dev — definition and behavior (Philip Walton & Barry Pollard, Google)
- “LCP reports the render time of the largest image, text block, or video visible in the viewport, measured relative to when the user first navigated to the page.” Jump to quote
- On what’s mesuré: “LCP doesn’t consider margins, paddings, or borders applied using CSS.” Jump to quote
- On quand reporting arrête: “The browser will stop reporting new entries as soon as the user interacts with the page (via a tap, scroll, or keypress), as user interaction often changes what’s visible to the user.” Jump to quote
- On what’s inclus in the timing: “It is important to note that LCP includes any unload time from the previous page, connection set up time, redirect time, and other Time To First Byte (TTFB) delays.” Jump to quote
web.dev — optimization (Philip Walton & Barry Pollard, Google)
- The unique la plupart important lazy-loading rule: “Never lazy-load your LCP image, as that will always lead to unnecessary resource load delay.” Jump to quote
- The principle behind the sub-part targets: “The vast majority of the LCP time should be spent loading the HTML document and LCP source.” Jump to quote
Recherche Google Central — rankings
- “We highly recommend site owners achieve good Core Web Vitals for success with Search and to ensure a great user experience generally.” (Relayed from the Search Central Core Web Vitals doc; confirmer contre the live page avant treating as final.)
LCP fix checklist
Fonctionner it roughly top to bottom — discovery and TTFB premier, parce que they’re usually the biggest, la plupart commonly broken levers.
- Trouvé the réel LCP element (PageSpeed Insights Diagnostics, DevTools
Performances panel, or the
web-vitalslibrary) — don’t optimize blind. - Vérifié the four sub-parts to voir qui un is the bottleneck avant modification anything.
- LCP image is pas
loading="lazy"(lazy chargement belongs ci-dessous the fold seulement). - LCP image has
fetchpriority="high". - LCP image is discoverable in the initial HTML — or preloaded
(
<link rel="preload">) si it’s chargé via CSS/JS. - Pas chargement the hero image via JavaScript (hides it from the preload scanner).
- Render-blocking CSS minimized/inlined; non-critical styles deferred.
- Aucun synchronous scripts in the
<head>; long tasks broken up. - Modern image format (WebP/AVIF), sensible compression, served via a CDN with
bon
Cache-Control. - Below-fold images lazy-loaded so ils don’t contend pour bandwidth with the LCP image.
- TTFB addressed: redirections minimized, server réponse optimized, junk URL params dropped.
- Text LCP? En utilisant
font-display: optionalor system fonts, and preloading quelconque swapped font fichier. - Verified contre field données (CrUX / Search Console), pas simplement a Lighthouse lab run.
LCP cheat sheet
Thresholds (75th percentile of réel utilisateurs, by device)
| Bucket | LCP |
|---|---|
| Bon | ≤ 2,5 s |
| Nécessite improvement | 2,5 – 4,0 s |
| Poor | > 4,0 s |
The four sub-parts — ce que chaque is and the fix
| Sub-part | Ce que c’est | Typical share | Principal levers |
|---|---|---|---|
| Temps to Premier Byte | Click → premier byte of HTML | ~40% | Faster server, fewer redirections, drop junk URL params |
| Resource charger delay | TTFB → LCP resource starts chargement | < 10% | fetchpriority="high", preload, aucun JS-loaded hero, aucun lazy-load |
| Resource charger duration | LCP resource download temps | ~40% | WebP/AVIF, compression, CDN, cut bandwidth contention |
| Element render delay | Resource fait → element paints | < 10% | Cut render-blocking CSS/JS, SSR/static, fonts pour text LCP |
Ce que peut be the LCP element
<img>·<image>à l’intérieur<svg>·<video>poster · CSSbackground-image: url()· block-level text
Excluded by heuristic: opacity: 0, full-viewport “background” elements, low-entropy placeholders.
Fast facts
- LCP is a field metric (CrUX / Search Console drive rankings); Lighthouse seulement approximates and uses a stricter desktop Bon of ≤ 1,2 s.
- The LCP element peut modifier during charger; the dernier candidate avant utilisateur interaction counts.
- ~3 in 4 pages have an image LCP; the rest are text (fonts are the lever).
- Image download temps is souvent the smallest sub-part — compression isn’t toujours the réponse.
- LCP ≠ FCP; LCP ≠ total page charger temps.
Outils pour measuring and fixing LCP
Field données (ce que rankings utiliser)
- PageSpeed Insights — field tab montre votre real-user CrUX LCP; Diagnostics flags the LCP element.
- Search Console — Core Web Vitals report — LCP status à travers votre URLs, grouped, on real-user données.
- Chrome Utilisateur Experience Report (CrUX) — the underlying field dataset; as of Feb 2025 inclut the four image-LCP sub-parts via the API.
web-vitalsJS library — log LCP and the LCP element from votre propre real-user monitoring.
Lab données (pour debugging)
- Lighthouse — rapide lab LCP and an opportunities liste (remember: stricter desktop thresholds que the field).
- Chrome DevTools — Performances panel — marks the LCP node and the complet render timeline.
- WebPageTest — waterfall view pour pinning bas qui sub-part is slow.
SEO robots d’exploration
- Ahrefs Site Audit — surfaces Core Web Vitals / performances problèmes à travers le site at scale.
How the outils themselves score
A live exemple of the metric ce page describes — well-known page-speed and monitoring services ranked on leur propre real-user mobile LCP (Chrome UX Report field données):
LCP fixes que target the incorrect problem
Lazy-loading the hero image
loading="lazy" delays discovery of an above-the-fold image que is probable to become
LCP. Charger it eagerly, give the probable candidate fetchpriority="high", and reserve
lazy chargement pour below-the-fold images.
Compressing every image avant finding the bottleneck
Image download duration is seulement un of four LCP sub-parts and may be the smallest. Identifier the LCP element and inspect TTFB, charger delay, charger duration, and render delay avant choosing a fix.
Chargement the hero via JavaScript
A JS-injected image hides its URL from le navigateur’s preload scanner and creates resource charger delay. Put the image in the initial HTML or preload it quand CSS or JS doit propre it.
Declaring victory from un Lighthouse run
Lighthouse is a controlled diagnostic, pendant que Google’s CWV verdict comes from CrUX field données. Utiliser lab runs to vérifier the mechanism and wait pour real-user données to montrer si the p75 outcome improved.
The LCP resource starts late
Symptom: a long gap apparaît entre TTFB and the LCP resource requête. Probable
causer: lazy chargement, JS discovery, a CSS background image, or low récupérer priority.
Fix: faire the resource discoverable in initial HTML, supprimer lazy chargement, appliquer
fetchpriority="high", or preload it. Confirmer la requête moves précédent in a trace.
The resource loads but LCP encore fires late
Symptom: charger duration ends bien avant the LCP event. Probable causer: render-blocking CSS, synchronous JavaScript, a long task, or font rendering pour a text LCP. Fix: reduce blocking fonctionner and tester font strategy pour text; confirmer element render delay shrinks.
Lab LCP is bon but field LCP is poor
Symptom: Lighthouse passes pendant que CrUX or Search Console ne fait pas. Probable causer: réel utilisateurs have différent devices, networks, cache states, geography, or LCP elements. Fix: segment field données, capture RUM element/sub-part details, and reproduce the slow segment plutôt que tuning seulement the par défaut lab profile.
The reported LCP element changements entre runs
Symptom: DevTools identifies différent images or text blocks. Probable causer: responsive breakpoints, personalization, late DOM changements, or competing candidates. Fix: tester representative viewports and states, alors optimize chaque recurring candidate au lieu de assuming un desktop hero covers every utilisateur.
Hero image discovery: delayed vs early
A simplified delayed implementation hides the image behind JavaScript:
<div id="hero"></div>
<script>
document.querySelector('#hero').innerHTML = '<img src="hero.webp" alt="">';
</script>Le navigateur peut découvrir and prioritize ce version pendant que parsing HTML:
<img src="hero.webp" alt="" fetchpriority="high" width="1200" height="675">CSS background image: undisclosed vs preloaded
Quand the LCP image doit remain a CSS background, disclose it avant the stylesheet finishes:
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">The preload seulement helps quand its URL and requête attributes match the réel resource.
Liste recent LCP candidates in Chrome DevTools
Paste ce into the Chrome DevTools Console, reload lune page, and watch chaque candidate le navigateur reports. The dernier candidate avant interaction is the relevant un.
new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
console.table({
lcp: Math.round(entry.startTime),
element: entry.element?.tagName,
url: entry.url || '',
size: entry.size,
});
}
}).observe({ type: 'largest-contentful-paint', buffered: true });Trouver probable lazy-loaded above-the-fold images
Run ce in the DevTools Console. It listes lazy images whose top edge begins in the current viewport; vérifier the réel LCP candidate avant removing the attribute.
[...document.querySelectorAll('img[loading="lazy"]')]
.filter((img) => img.getBoundingClientRect().top < innerHeight)
.map((img) => ({ src: img.currentSrc || img.src, top: img.getBoundingClientRect().top }));Extract image priority attributes in a robot d’exploration
Utiliser ce XPath in Screaming Frog custom extraction to retourner images marked as élevé priority:
//img[@fetchpriority='high']/@src Prove an LCP fix landed
Discovery-order tester
Tester to run: record a DevTools Performances trace après modification the hero image. Attendu result: the LCP requête starts précédent and n’est pas lazy-loaded. Échec interpretation: the resource remains hidden, deprioritized, or blocked behind un autre dependency. Monitoring window: immediate lab result. Rollback trigger: the modifier delays un autre critical resource or rend lab LCP consistently worse.
Render-delay tester
Tester to run: comparer the LCP resource completion and LCP event in equivalent avant/après traces. Attendu result: element render delay shrinks sans a nouveau layout or visual regression. Échec interpretation: CSS, JavaScript, or fonts encore block paint. Monitoring window: immediate à travers representative viewports. Rollback trigger: broken rendering, manquant styles, or a worse recurring LCP.
Field-outcome tester
Tester to run: monitor URL-level CrUX or first-party RUM p75 LCP après deployment. Attendu result: p75 moves toward or remains dans the Bon threshold sans regressing INP or CLS. Échec interpretation: the lab cas was pas representative or un autre sub-part dominates réel visits. Monitoring window: RUM peut lead; CrUX nécessite its rolling 28-day window to turn over. Rollback trigger: a sustained field regression tied to the release.
LCP metrics worth tracking
Field p75 LCP
Metric: LCP at the 75th percentile by formulaire factor. Ce que it indique vous: si réel utilisateurs meet the Core Web Vitals chargement threshold. How to pull it: CrUX, Search Console, or first-party RUM. Benchmark / realistic range: Bon is at or ci-dessous 2,5 seconds; segment mobile and desktop. Cadence: weekly, with the CrUX rolling window recorded.
LCP sub-part distribution
Metric: TTFB, resource charger delay, charger duration, and element render delay pour LCP. Ce que it indique vous: qui stage owns the wait. How to pull it: representative lab traces and image-LCP subparts from CrUX/RUM où disponible. Benchmark / realistic range: utiliser the article’s approximate 40/10/40/10 diagnostic split as a guide, pas a universal performances promise. Cadence: après template releases and monthly pour priority templates.
Good-LCP URL coverage
Metric: important URL groupes with Bon field LCP. Ce que it indique vous: si improvement is broad or limited to a sample page. How to pull it: Search Console CWV groupes plus URL-level CrUX pour priority pages. Benchmark / realistic range: establish a baseline by template; low-traffic URLs may lack individual field données. Cadence: weekly.
Testez vos connaissances: Plus grand affichage de contenu
Five rapide questions on LCP measurement and diagnosis. Pick an réponse pour chaque, alors vérifier.
Ressources utiles
My connexe writing
- Ce que Is Plus grand affichage de contenu (LCP) & How To Améliorer It — my complet LCP guide on the Ahrefs blog.
- Ce que Are Core Web Vitals (CWVs) & How To Améliorer Les — how LCP fits with INP and CLS, and pourquoi it’s the hardest to fix.
- The Beginner’s Guide to SEO technique — où page performances sits in the bigger picture.
Official (Google / Chrome)
- Plus grand affichage de contenu (LCP) and Optimize LCP — the canonical pair.
- How CWV thresholds were défini — the pourquoi behind 2,5 s.
From others
- Fix votre website’s Plus grand affichage de contenu by optimizing image chargement — MDN’s developer-first prendre, strong on bandwidth contention and the JS-image anti-pattern.
- Performances — 2025 Web Almanac — HTTP Archive’s annual deep-dive; source pour adoption stats on fetchpriority, preload usage, image vs text LCP splits, and réussir rates by device.
- Plus grand affichage de contenu (LCP) — DebugBear’s docs cover waterfall analysis pour pinpointing sub-parts, progressive JPEG caveats, and iframe/soft-navigation edge cas.
- Plus grand affichage de contenu (LCP): Ce que c’est, How to Mesurer & Optimize — corewebvitals.io; réel RUM benchmarks, business impact cas studies (Vodafone Italy), and the Google Flights fetchpriority result.
- Plus grand affichage de contenu | MDN Web Docs — MDN référence pour the LargestContentfulPaint API, element types, and navigateur compatibility.
Stats worth citing
- LCP is the hardest Core Web Vital to réussir. It has the la plupart components, qui is pourquoi sites struggle with it plus que INP or CLS. Source
- Mobile is harder que desktop. Slower CPUs and connections push LCP up, and on 3G/slow connections the 2,5 s threshold is nearly impossible to hit. Source
- Image download temps is souvent the smallest partie of LCP. Chrome’s analysis of HTTP Archive données trouvé download duration frequently isn’t the bottleneck — TTFB and discovery delay usually are. Source
- CrUX coverage is thin. In our study of 42 million pages, seulement ~11,4% had associated CrUX field données — la plupart pages don’t obtenir suffisant real-user trafic to be mesuré. Source
- 62% of mobile pages vs 74% of desktop pages achieve Bon LCP (2025 Web Almanac). The mobile gap reflects slower CPUs and network connections. Source
- Seulement 2,1% of mobile pages preload leur LCP image, despite 76% having an image as leur LCP element — a significant missed optimization opportunity (2025 Web Almanac). Source
fetchpriority="high"adoption grew from 0,03% of mobile sites in 2022 to 17,3% in 2025, largely driven by WordPress core ajout it (2025 Web Almanac). Google Flights saw a 700 ms LCP improvement from ce unique attribute. Source
Videos
- Recherche Google Central (YouTube) — the Core Web Vitals and page-experience explainers, notamment Chrome team walkthroughs of LCP optimization. Channel
Journal des modifications
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.