Largest Contentful Paint: how to find and fix a slow LCP

Short answer

LCP is how long the largest visible image or text block takes to appear. Aim for 2.5 seconds or less. Find the element first, as it's often a hero image. Then make sure it's in the HTML, isn't lazy-loaded and has fetchpriority="high".

What LCP measures

Largest Contentful Paint is one of Google's three Core Web Vitals. It times how long the page's main content takes to show, counted from when the visitor starts navigating to the page.

GoodNeeds improvementPoor
2.5 s or lessOver 2.5 s, up to 4 sOver 4 s

The element can be an image, a video's poster or first frame, an element with a CSS background image, or a block of text. Chrome ignores some elements, such as invisible ones and those that fill the whole viewport as a background.

Google says good Core Web Vitals align with what its ranking systems reward, but a good score doesn't guarantee rankings. Treat LCP as a visitor problem first.

Field data vs your browser

The score Google uses comes from real Chrome visitors, taken at the 75th percentile of page loads and split by mobile and desktop. You can see it in Search Console's Core Web Vitals report or PageSpeed Insights, where a page has enough visits.

A test in your own browser is a single visit on your device and connection. It won't match the field number, and that's fine. Field data tells you whether there's a problem. A local test tells you what's causing it.

How to find the LCP element

1Run the snippet 1 minute

Load the page, open DevTools (F12), go to the Console and paste this:

// Logs the LCP element and time for this page load
new PerformanceObserver((list) => {
  const entry = list.getEntries().at(-1);
  console.log('LCP', Math.round(entry.startTime) + ' ms', entry.element, entry.url || '(text)');
}).observe({ type: 'largest-contentful-paint', buffered: true });

It prints the time, the element and the image URL. Hover over the element in the Console to see it on the page. Don't scroll or click first, as Chrome stops looking for a new LCP after the visitor interacts.

2Use the Performance panel 3 minutes

Open the Performance tab in DevTools and record a page load. It marks LCP on the timeline and shows what happened before it.

Test on a throttled connection or real phone too. A page that's fast on your desktop can still be slow for most visitors.

Where the time goes

LCP breaks into four parts. Google's web.dev guidance gives a rough target for each, so find the part that's out of line before you change anything.

PartWhat it isRough target
Time to First ByteWaiting for the server's first responseAbout 40%
Load delayThe gap before the browser starts fetching the imageUnder 10%
Load durationDownloading the imageAbout 40%
Render delayThe gap between the image arriving and it appearingUnder 10%

How to fix it

  • Slow first byte: cache HTML where you can, use a CDN and remove redirects before the page. See how to trace redirects.
  • Load delay: put the image in the HTML as an <img> so the browser finds it straight away. If it's a CSS background or added by JavaScript, preload it.
  • Don't lazy-load it: remove loading="lazy" from the LCP image. It delays the request.
  • Prioritise it: add fetchpriority="high" to one image, or two at most.
  • Load duration: use a modern format, serve the right size for the screen and compress it.
  • Render delay: look for render-blocking CSS and JavaScript, and for content that's held back until a script runs.
<img src="/hero.webp" width="1200" height="630" alt="..." fetchpriority="high">

The width and height also reserve space, which helps your layout shift score. If the page loads quickly but feels slow to use, see Interaction to Next Paint.

How crawlers report this

Crawlers usually report the causes, not the page's LCP element, and these come from PageSpeed data, so labels can change between versions.

Screaming FrogSitebulbWhat it means
PageSpeed: LCP Request DiscoveryNo direct matchThe browser may find the LCP image late.
PageSpeed: Document Request LatencyReduce server response times (TTFB)The HTML takes too long to arrive.
PageSpeed: Render Blocking RequestsEliminate render blocking resourcesFiles hold up the first paint.
PageSpeed: Improve Image DeliveryProperly size imagesImages are larger than they need to be.

Handing this to a developer?

See the LCP element on the page

SEOSnip's Speed tab shows what your browser saw on this page load. It's not field data, so use it to find the cause. You get:

  • LCP, CLS and INP with a good, needs improvement or poor rating
  • The LCP element, highlighted on the page, and its resource URL
  • When the resource loaded and when it painted
  • Reloads that act like a first visit or a repeat visit
  • A ticket with those numbers attached