Performance

Largest Contentful Paint measures how fast your page loads

What Is Largest Contentful Paint LCP cover with the title in gold on black and a cheetah sitting upright against a yellow panel

Largest Contentful Paint, or LCP, measures how long it takes for the largest visible element on a page, usually a hero image or a big block of text, to finish rendering. A good LCP is 2.5 seconds or less. LCP is one of Google's three Core Web Vitals, alongside Cumulative Layout Shift and Interaction to Next Paint, so it feeds into rankings. It also decides first impressions: a page that shows its main content in one second feels instant, and one that takes five feels broken. This post covers what LCP measures, what slows it down, and exactly how to fix it.

The short version

  • Good is 2.5 seconds or less, poor is above 4.0, measured at the 75th percentile of real visits.
  • The LCP element is whatever renders largest in the viewport, most often the hero image.
  • The two biggest levers are a lighter, preloaded hero image and a faster server response.
  • Never lazy load the LCP element; that one mistake adds seconds on its own.

What counts as the LCP element

The browser watches the viewport as the page loads and keeps track of the largest thing rendered so far. Candidates are images, video poster frames, elements with CSS background images, and block-level text. Size means rendered size on screen, not file size, and the winner can change mid-load: a headline might hold the title until the hero image arrives and takes over. On most marketing pages the LCP element is the hero image, which is why so much LCP work is image work.

What slows LCP down

  • Heavy images. An uncompressed hero shipped at full camera resolution is the single most common cause of a failing score.
  • Slow server response. If the HTML takes two seconds to arrive, nothing can render before then. Aim for a time to first byte under 800 milliseconds.
  • Render-blocking CSS and JavaScript. The browser cannot paint until blocking resources in the head are downloaded and parsed.
  • Lazy loading the hero. A loading attribute of lazy on the LCP image tells the browser to wait on the one file it needed first.
  • Client-side rendering. Frameworks that build the page in the browser delay every paint until the JavaScript runs. Server rendering or static output avoids the wait.
  • Slow web fonts. When the LCP element is text, a font that arrives late can hold up the render.

How to improve your LCP score

  1. Compress the hero and use modern formats

    Serve AVIF or WebP at the size the layout actually displays, with srcset for smaller screens. This alone rescues many failing pages.

  2. Preload the LCP image

    A preload link in the head with fetchpriority high tells the browser to fetch the hero immediately instead of discovering it late in parsing.

  3. Never lazy load above the fold

    Lazy loading belongs on images below the viewport. On the LCP element it is pure delay.

  4. Cut render-blocking resources

    Inline the critical CSS, defer the rest, and add defer or async to scripts. The browser paints as soon as nothing stands in its way.

  5. Speed up the server

    Better hosting, server-side caching, and leaner database queries all shrink time to first byte, which every later milestone inherits.

  6. Serve assets from a CDN

    Files delivered from a server near the visitor arrive faster. For a national or global audience a CDN routinely takes a second or more off LCP.

  7. Preload fonts when text is the LCP

    Preload the main text font and use font-display swap so readable text renders without waiting on the file.

  8. Cache static assets

    Long cache lifetimes make repeat visits nearly instant, and repeat visits count in your field data too.

The fixes in code

<!-- Preload the hero so the browser fetches it first -->
<link rel="preload" as="image" href="/images/hero.avif" fetchpriority="high">

<!-- Responsive hero: right format, right size, never lazy -->
<img src="/images/hero-800.avif"
     srcset="/images/hero-400.avif 400w,
             /images/hero-800.avif 800w,
             /images/hero-1200.avif 1200w"
     sizes="(max-width: 600px) 400px, (max-width: 1000px) 800px, 1200px"
     width="1200" height="600" alt="Product hero" fetchpriority="high">

<!-- Scripts wait their turn instead of blocking the paint -->
<script src="/js/analytics.js" defer></script>

Measuring LCP

PageSpeed Insights shows lab and field LCP for any URL and names the LCP element in its diagnostics. Search Console reports Core Web Vitals site-wide, and the Chrome DevTools Performance panel marks the LCP moment on a timeline you can click into. Field data from real Chrome users is what Google ranks on, so treat lab runs as debugging and field data as the scoreboard. We keep a fuller tool rundown in our post on technical SEO tools.

LCP next to the other Core Web Vitals

MetricMeasuresGood thresholdPrimary fix
LCPLoading speed2.5 secondsLighter, preloaded hero and faster server
INPResponsiveness200 millisecondsStop blocking the main thread
CLSVisual stability0.1Reserve space for everything

The three are siblings and the fixes overlap: sized, compressed images help LCP and Cumulative Layout Shift at the same time, and the script diet that speeds up rendering also improves Interaction to Next Paint. Note that INP replaced First Input Delay as the responsiveness metric in March 2024, so anything you read about FID is out of date.

Where Egochi fits

Egochi audits and fixes Core Web Vitals as part of our technical SEO services: identifying the LCP element on your key templates, fixing the image and server issues behind slow scores, and watching field data so regressions get caught before they cost rankings. This site is built to the same standard, which you can check in ten seconds with PageSpeed Insights.

Questions people ask about LCP

What is a good LCP score?

A good LCP score is 2.5 seconds or less. Between 2.5 and 4.0 seconds needs improvement, and above 4.0 seconds is poor. Google measures the 75th percentile of real page loads, so 75% of visits need to land at 2.5 seconds or under to pass.

What causes a high LCP?

The usual suspects are large uncompressed images, slow server response, render-blocking CSS and JavaScript, and hero images that were accidentally lazy loaded. Images are the most common cause by far; a heavy hero image alone can push LCP past 4 seconds.

How do I find my LCP element?

Run the page through PageSpeed Insights and check the diagnostics, which name the LCP element directly. In Chrome DevTools, record a page load in the Performance panel and click the LCP marker in the timings row to highlight the exact element.

What is the difference between LCP and FCP?

First Contentful Paint fires when anything renders, even a spinner or a nav bar. Largest Contentful Paint waits for the biggest visible element, which is usually the content people came for. LCP is one of the Core Web Vitals; FCP is not.

Can text be the LCP element?

Yes. If no larger image sits in the viewport, a big headline or opening paragraph block can be the LCP element. Slow web font loading then delays it, which is why font preloading shows up in LCP work as often as image compression does.

Does LCP affect mobile and desktop rankings separately?

Yes. Google evaluates mobile and desktop field data separately, and mobile is almost always the slower of the two because of weaker hardware and slower connections. Fix mobile first; most of your visitors are there anyway.

Written by , Head of Web Design & Development at Egochi. Every post on this blog comes from the person who runs that work for clients, not a content mill.

Want this handled for you?

Egochi is a US digital marketing agency working with local businesses through enterprise brands from offices in New York, Miami, Milwaukee, and Madison. Tell us what you are trying to grow and we will send back a plan with real numbers in it.

Get a Free Proposal Call (888) 644-7795

Grade Your Website in About 30 Seconds

Egochi's free audit scores any page for technical SEO, content, and AI search readiness. The report renders on screen, and an analyst reviews every run.