Poradnik: Largest Contentful Paint (LCP)

co LCP measures, jego thresholds, the four sub-parts że make it up, i how to actually poprawić it — the Core Web Vital people struggle z najbardziej.

Opublikowano po raz pierwszy: 26 cze 2026 · Ostatnia aktualizacja: 3 sie 2026 · Advanced
Języki

Largest Contentful Paint (LCP) jest the render time of the largest image lub tekst blok visible in the viewport, relative to gdy the strona started ładowanie. Good jest ≤2,5 s at the 75th percentile of rzeczywisty użytkownicy; it's one of the three Core Web Vitals. It breaks do four sub-parts — TTFB, zasób load opóźnienie, zasób load duration, i element render opóźnienie — i TTFB plus load duration zwykle dominate. The biggest wins: don't lazy-load the LCP image, give it fetchpriority=wysoki, preload it, cut blokujący renderowanie zasoby, i fix TTFB. It's a pole metric — lab narzędzia tylko approximate it — i of the Core Web Vitals it's the one people struggle najbardziej to pass, especially on mobilny.

TL;DR — LCP jest the render time of the largest image lub tekst blok visible in the viewport, relative to gdy the strona started ładowanie. Good jest ≤ 2,5 s at the 75th percentile of rzeczywisty użytkownicy (split by urządzenie); 2,5–4 s needs działać, ponad 4 s jest poor. It’s one of three Core Web Vitals i breaks do four sub-parts — TTFB, zasób load opóźnienie, zasób load duration, element render opóźnienie — gdzie TTFB i load duration zwykle dominate (guidelines, nie fixed shares — diagnose twój own strona). Top fixes: nigdy lazy-load the LCP image, dodawać fetchpriority="high" on the rzeczywisty candidate, preload it gdy it isn’t in the HTML, kill blokujący renderowanie CSS/JS, i fix TTFB. It’s a pole metric — lab narzędzia tylko approximate it — i the LCP element może change podczas load. Google confirms Core Web Vitals feed ranking systemy ale doesn’t publikować an dokładny LCP weight lub call it a tiebreaker; treść relevance nadal dominates.

co LCP actually measures

LCP raporty the render time of the largest image lub tekst blok visible in the viewport, measured relative to gdy the użytkownik pierwszy navigated to the strona. Google’s own framing: it’s the closest standardized proxy dla gdy the main treść appears to the użytkownik. It replaced earlier, fuzzier metrics like pierwszy Meaningful Paint i Speed Index.

A kilka things że trip people up right away:

  • It’s nie “page load time.” A strona może mieć każdy zasób fetched i nadal post a slow LCP if renderowanie the largest element był blocked. LCP jest o że one element, nie the whole strona.
  • It’s nie the same as FCP. pierwszy Contentful Paint fires gdy dowolny treść pierwszy appears; LCP waits dla the largest element. A strona może mieć a fast FCP (the navbar paints) i a slow LCP (the hero image loads late).
  • It’s a dynamiczny metric. The przeglądarka dispatches a new LCP candidate każdy time a larger element becomes visible. The ostatni entry przed the użytkownik interacts (tap, scroll, keypress) lub the strona unloads jest the wartość że counts — interaction często changes co’s visible, so reporting stops there. A candidate że’s later removed z the DOM doesn’t erase jego own entry — it stays the reported element unless a nadal-larger one renders przed reporting stops.

The thresholds — i why 2,5 seconds

BucketLCP
Good≤ 2,5 s
Needs improvement2,5 s – 4,0 s
Poor> 4,0 s

Assessed at the 75th percentile of rzeczywisty-użytkownik strona loads, segmented by urządzenie type. So three out of four visits need to come in poniżej 2,5 s dla an origin to pass.

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

Why 2,5 specifically? Google’s threshold methodology leaned on two things: człowiek perception research pointing at roughly 1–3 seconds as the band że feels “immediate,” i CrUX achievability data showing 2,5 s był consistently achievable dla well-optimized witryny bez będąc trivially łatwy. Tighter targets like 1,5 s lub 2,0 s weren’t consistently achievable w całym enough origins, so they didn’t make the cut.

co counts as the LCP element

The element types considered dla LCP:

  • <img> elementy
  • <image> elementy inside an <svg>
  • <video> elementy (the poster image load time, lub the pierwszy frame, whichever jest earlier)
  • An element z a background image załadowany via the CSS url() function
  • blok-level elementy containing tekst nodes lub other inline tekst children

The reported size jest co’s actually visible in the viewport — portions clipped lub scrolled off don’t count, i dla images it’s the visible size lub the intrinsic size, whichever jest smaller. Margins, padding, i borders są ignored. A handful of elementy get excluded by heuristics: anything z opacity: 0, elementy że cover the whole viewport (treated as backgrounds), i niski-entropy placeholder images.

o three-quarters of strony mieć an image as ich LCP element — so image działać jest zwykle the right pierwszy move. ale nie zawsze, i nie zawsze kompresja (więcej on że następny). The remaining chunk są tekst LCPs, gdzie the lever jest entirely różny: it’s font ładowanie, nie image weight.

The four sub-parts — the part najbardziej artykuły skip

ten jest the framework I’d start dowolny LCP diagnosis z. web.dev breaks LCP do four sequential sub-parts:

  1. Time to pierwszy Byte (TTFB) — z gdy the użytkownik starts ładowanie the strona to gdy the przeglądarka receives the pierwszy byte of HTML. Typical share: ~40% of total LCP.
  2. zasób load opóźnienie — the gap między TTFB i the przeglądarka starting to load the LCP zasób. ten jest discovery time. Typical share: poniżej 10%.
  3. zasób load duration — how long the LCP zasób itself takes to download. Typical share: ~40%.
  4. element render opóźnienie — z gdy the zasób finishes ładowanie to gdy the element actually paints. Typical share: poniżej 10%.
LCP sub-partTypical share of total LCP
Time to pierwszy Byte~40%
zasób load opóźnienie< 10%
zasób load duration~40%
element render opóźnienie< 10%

The principle behind the tabela: the vast majority of LCP time powinien być spent ładowanie the HTML document i the LCP zasób. dowolny stretch gdzie neither jest ładowanie jest an opportunity to poprawić.

web.dev jest explicit że te percentages są guidelines, nie strict reguły — don’t convert them do absolute-second targets, i don’t force każdy strona to match the split. They’re tylko meaningful relative to każdy other, i if twój LCP jest consistently w 2,5 seconds już, the relative proportions don’t matter at wszystkie. użyj tabela to spot który sub-part jest eating an outsized share on twój strona, then fix że one — nie to chase an dokładny 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. Źródło: 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 ·

i here’s the bit że upends the common assumption: as of February 2025 te four sub-parts są available in the CrUX API dla image LCPs, i the Chrome zespół’s analiza of HTTP Archive data found że image download time był często the smallest part of LCP time. In other words, “just compress my images” frequently fixes the błędny sub-part. TTFB i discovery opóźnienie są często the bigger levers.

How to find twój LCP element

przed you optimize anything, find out który element jest twój LCP i który sub-part jest the bottleneck:

  • PageSpeed Insights — the Diagnostics sekcja flags the LCP element, i the pole-data tab pokazuje twój rzeczywisty-użytkownik score.
  • Chrome DevTools — the wydajność panel marks the LCP node on the timeline.
  • The web-vitals JS library — log LCP (i the element) z twój own rzeczywisty-użytkownik monitorowanie.

How to poprawić LCP

Map każdy fix to the sub-part it targets:

Fix zasób load opóźnienie (discovery). ten jest the highest-leverage i najbardziej commonly broken one.

  • nigdy lazy-load twój LCP image. loading="lazy" on the LCP element zawsze dodaje unnecessary load opóźnienie. Reserve lazy ładowanie dla below-the-fold images.
  • dodawać fetchpriority="high" to the prawdopodobny LCP image so the przeglądarka fetches it early at wysoki priority.
  • Preload it z <link rel="preload"> gdy the image isn’t discoverable in the initial HTML — na przykład, gdy it’s załadowany via CSS lub JavaScript. ładowanie the hero image via JS jest an anti-pattern precisely ponieważ it hides the URL z the przeglądarka’s preload scanner.
  • Host critical zasoby on the same origin so the przeglądarka doesn’t pay extra 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 i fetchpriority solve różny problems, so don’t reach dla oba by habit. Preload exposes a zasób the przeglądarka’s preload scanner by otherwise odkrywać late (a JS- lub CSS-załadowany image, na przykład); fetchpriority changes the fetch priority of a zasób the przeglądarka już found. If discovery i priority są już poprawny — the image jest a plain <img> in the initial HTML — adding either może robić little beyond extra żądania. sprawdzenie a trace, apply the one że matches the rzeczywisty problem, i confirm the pole liczba moved.

Fix element render opóźnienie.

  • Reduce lub inline blokujący renderowanie CSS; defer non-critical styles.
  • Avoid synchronous scripts in the <head>.
  • Prefer serwer-side renderowanie lub statyczny generation so the znaczniki arrives ready to paint, i break up long main-thread tasks.

Reduce zasób load duration.

  • Modern image formaty (WebP, AVIF), sensible kompresja, i a CDN.
  • Efficient Cache-Control. i don’t ignore network contention — lazy-ładowanie the other below-fold images może free up przepustowość so the LCP image lands sooner.

Reduce TTFB.

  • Minimize redirects, drop unnecessary unique parametry URL, i optimize serwer odpowiedź time. Note że LCP obejmuje dowolny unload time z the poprzedni strona, connection setup, i redirect time — wszystkie of który roll do TTFB.

Special case: tekst-oparty LCP. gdy the largest element jest tekst, the critical path jest font ładowanie, nie image weight. font-display: optional lub system fonts eliminate font-induced render opóźnienie; font-display: swap bez preloading the font file może introduce it.

Lab vs. pole — ten distinction matters

LCP jest fundamentally a pole metric. Google assesses it on rzeczywisty użytkownicy via CrUX, surfaced in PageSpeed Insights’ pole tab i the Search Console Core Web Vitals raport. że pole data jest co feeds rankings.

Lab narzędzia — Lighthouse, Chrome DevTools, WebPageTest — tylko approximate it poniżej simulated conditions, i they don’t even użyj same scoring. Lighthouse applies stricter komputer stacjonarny thresholds (Good ≤ 1,2 s) than the pole standard (≤ 2,5 s). So a passing Lighthouse score doesn’t guarantee a passing CrUX score, i vice versa. używać lab narzędzia to debug i reproduce; trust the pole data dla the rzeczywisty verdict.

There’s a second powód lab i pole liczby może diverge, worth knowing so an odd reading doesn’t wysyłać you chasing a phantom bug: the current LargestContentfulPaint przeglądarka API (nadal a W3C działający Draft) jest scoped to a single document load. It doesn’t itself reset on back/forward pamięć podręczna (bfcache) restores lub same-document SPA navigations, i strony że start off-screen — background tabs, prerendered strony — może raport inflated wartości ponieważ timing runs z load zamiast z gdy the strona actually became visible. The reporting algorithm również halts on qualifying użytkownik input, so if a użytkownik interacts przed twój main treść displays, LCP won’t capture it. None of ten changes the threshold tabela above; it wyjaśnia why a specific session’s liczba może look błędny gdy the underlying navigation isn’t a plain pierwszy load.

robi LCP affect rankings?

Yes, in the sense że Google confirms Core Web Vitals feed jego ranking systemy i recommends achieving good scores. ale current Search Central documentation doesn’t publikować an dokładny LCP weight i doesn’t describe it as a tiebreaker — Google’s own framing jest że strona experience “can contribute to success in Search” dla zapytania gdzie multiple strony już oferta comparable, relevant treść, i że a good score doesn’t guarantee a ranking boost. treść relevance i quality nadal dominate. Optimize LCP ponieważ a faster-feeling strona jest genuinely better dla użytkownicy (i conversions) — nie ponieważ the mechanism jest udokumentowany as a rankings tiebreaker, ponieważ 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 z the data: of the Core Web Vitals, LCP jest the one witryny struggle najbardziej to poprawić, i it’s noticeably harder on mobilny than komputer stacjonarny — slower CPUs i connections. On 3G i slower, the 2,5 s threshold może feel almost impossible to hit.

gdzie ten fits

LCP jest one of three Core Web Vitals, alongside Interaction to następny Paint i Cumulative Layout Shift. jego pierwszy sub-part, Time to pierwszy Byte, jest jego own diagnostic metric, i pierwszy Contentful Paint sits right następny to it on the ładowanie timeline. You’ll see wszystkie of te in PageSpeed Insights, Lighthouse, i the Chrome doświadczenie użytkownika raport (CrUX). każdy jest jego own deep dive in ten cluster.

Add an expert note

Pin an expert quote

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