---
title: LCP Explained: Largest Contentful Paint (and how to improve it)
description: LCP is the Core Web Vital that answers 'when does the page feel loaded?' Here's exactly what it measures, what counts as good, and the handful of fixes that move it most.
canonical: https://watchfor.io/blog/lcp-explained
---

[All posts](/blog) [Performance](/blog/category/performance) Jan 29, 2026 · 3 min read · WatchFor Team

# LCP Explained: Largest Contentful Paint (and how to improve it)

LCP is the Core Web Vital that answers 'when does the page feel loaded?' Here's exactly what it measures, what counts as good, and the handful of fixes that move it most.

Of the three [Core Web Vitals](/blog/core-web-vitals-explained), LCP is the one users feel most directly: it's the moment the page stops looking empty and the main content shows up. Get it wrong and your site feels sluggish no matter how light the rest is. Here's how to understand and fix it.

## What LCP measures

LCP (Largest Contentful Paint) measures how long it takes for the largest visible element in the viewport to render — usually a hero image, a big heading, or a banner. It's Google's proxy for "the page feels loaded."

Why the largest element? Because that's typically the main thing the user came to see. When it appears, the page feels ready.

## What counts as good

LCP Verdict

≤ 2.5s Good

2.5s – 4s Needs improvement

Over 4s Poor

Aim for under 2.5 seconds for the 75th percentile of real visits — that's the threshold Google uses for "good."

## What slows LCP down

LCP is the sum of several delays, and the culprit is usually one of these:

Cause What's happening

Slow server response High [TTFB](/blog/ttfb-explained) — the page can't render until the server replies

Heavy hero image A huge, unoptimised image takes ages to download

Render-blocking resources CSS/JS blocking the browser from painting

Lazy-loaded hero The most important image deferred when it shouldn't be

Client-side rendering delay JS has to run before the main content appears

## How to improve it

The fixes map directly to the causes:

- Lower your TTFB. If the server is slow to respond, nothing renders fast — [cache and use a CDN](/blog/how-to-speed-up-your-website). This is the foundation.

- Optimise the LCP image. [Compress and resize it](/blog/image-optimization), serve modern formats, and preload it so the browser fetches it early.

- Don't lazy-load the hero. Lazy loading is great for below-the-fold images — but never for the LCP element, which should load immediately .

- Remove render-blocking resources. Defer non-critical CSS/JS so the browser can paint the main content sooner.

- Use a CDN. Serving the hero from a [nearby edge](/blog/what-is-a-cdn) cuts the download time for distant users.

The 80/20 of LCP: it's almost always either a slow server (TTFB) or a heavy hero image . Fix those two and most LCP problems disappear.

## Lab vs. field

You'll measure LCP two ways, and they can differ:

- Lab (a tool like [Lighthouse](/blog/lighthouse-explained)) — consistent, great for debugging, but one device.

- Field (real users) — what Google actually uses for ranking, reflecting real phones and networks.

Optimise in the lab, but confirm with field data — and keep [monitoring](/docs/monitors/performance) it, since a new hero image can quietly wreck LCP later.

## The bottom line

In one line

What When the largest visible element renders.

Good Under 2.5 seconds.

Top causes Slow server (TTFB) and heavy hero images.

Fix Lower TTFB, optimise & preload the hero, don't lazy-load it.

LCP is "when does it feel loaded?" — and the answer is mostly set by your server speed and your biggest image. Sort those two, and your pages feel fast where it counts most.

Related: [Core Web Vitals explained](/blog/core-web-vitals-explained), [TTFB](/blog/ttfb-explained); test with the free [Core Web Vitals checker](/core-web-vitals-checker).

[#performance](/blog/tag/performance)[#core-web-vitals](/blog/tag/core-web-vitals)[#seo](/blog/tag/seo)

## Monitor your Core Web Vitals

Run real-browser audits on a schedule and catch LCP, CLS and TBT regressions before they cost you rankings and conversions.

[Learn more](/core-web-vitals-monitoring)[Start free](/auth/sign-up)

Share this article

---

Canonical page: https://watchfor.io/blog/lcp-explained · Site guide: https://watchfor.io/llms.txt
