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.

Première publication : 26 juin 2026 · Dernière mise à jour : 3 août 2026 · Advanced
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 — 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

BucketLCP
Bon≤ 2,5 s
Nécessite improvement2,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 Paint

Pourquoi 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:

  1. 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.
  2. Resource charger delay — the gap entre TTFB and le navigateur starting to charger the LCP resource. Ce is discovery temps. Typical share: sous 10%.
  3. Resource charger duration — how long the LCP resource itself takes to download. Typical share: ~40%.
  4. Element render delay — from quand the resource finishes chargement to quand the element en réalité paints. Typical share: sous 10%.
LCP sub-partTypical 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 LCP
Break LCP into four sequential sub-parts, then optimize the part consuming more than its intended share. Source : web.dev

The 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-vitals JS 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.
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

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 results

A 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.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.