Largest Contentful Paint (LCP): Complete Optimization Guide 2026

Learn how to fix LCP in 2026: optimize hero images, cut render-blocking resources, diagnose TTFB, and hit the 2.5-second Core Web Vitals bar.
Largest Contentful Paint is the metric Google uses to answer a simple question: how long until the main content of the page is visible? When that number drags, rankings and conversions both suffer, because slow first paint reads as a slow business. The short version: LCP optimization in 2026 comes down to four moves — shrink and modernize the hero image, cut render-blocking resources, deliver assets from a fast edge network, and measure on real users rather than lab tools. This guide covers thresholds, causes, fixes by platform, and how LCP fits into Core Web Vitals alongside INP and CLS. When performance work needs to translate into growth, Digimau treats speed as part of SEO strategy, not a side quest. —

What Largest Contentful Paint Is

LCP measures the render time of the largest image or text block visible in the initial viewport. On a blog post that is usually the featured image or the headline; on an ecommerce category page it is typically the first product image row; on a homepage it is the hero banner. The metric updates as the page loads, so the element Google records is the largest one at the moment of the final qualifying paint.

Two properties make LCP the anchor of Core Web Vitals. It correlates strongly with how fast a page feels, because humans judge speed by when the main thing appears, not by when background resources finish. And it is measurable both in the lab and in the field, so the number you optimize in development is the same metric real users report through the Chrome User Experience Report.

Common LCP elementTypical page typeUsual bottleneck
Hero imageHomepages, landing pagesUncompressed upload, no preload, lazy-loaded by mistake
Headline text blockBlog posts, guidesRender-blocking CSS and web fonts
First product imageEcommerce category pagesUnoptimized grids, third-party scripts before paint
Video poster frameAgencies, media brandsHeavy poster image, autoplay video handshake

LCP Thresholds and 2026 Core Web Vitals Targets

Google’s thresholds have been stable for years, which makes them reliable targets. An LCP of 2.5 seconds or better on the 75th percentile of real user loads counts as good, 2.5 to 4.0 seconds needs improvement, and above 4.0 seconds is poor. The 75th percentile matters: your fastest visitors cannot offset your slowest, because the metric is judged where most of your users actually experience it.

Assessment is per URL group on mobile and desktop separately, using 28-day field data. New pages and low-traffic pages lack field data, which is where lab tools like Lighthouse and PageSpeed Insights help as proxies, but ranking evaluation and your own dashboards should key off the field data once it exists. Treat lab scores as a compass and field data as the map.

Core Web VitalGoodNeeds improvementPoor
LCP2.5 seconds or less2.5 to 4.0 secondsAbove 4.0 seconds
INP200 milliseconds or less200 to 500 millisecondsAbove 500 milliseconds
CLS0.1 or less0.1 to 0.25Above 0.25

What Usually Causes Slow LCP

Across hundreds of audits, slow LCP traces to the same short list. Oversized hero images dominate: a 3,000-pixel-wide photo served to a phone at 400 pixels is the single most common cause we see. Render-blocking CSS and JavaScript sit second, because the browser cannot paint the hero until stylesheets download and parse. Slow server response (TTFB) third, since nothing paints until the HTML arrives.

The remaining causes are subtler but frequent. Lazy-loading the LCP image, a well-meaning performance plugin default, delays the most important asset on the page. Client-side rendering on JavaScript frameworks delays paint until bundles hydrate. Waterfalls of third-party tags, chat widgets, and A/B tools compete for bandwidth in exactly the window the browser needs for the hero. And image CDNs or hosts without modern formats silently double transfer sizes for every visitor.

CauseTypical LCP impactFix priority
Oversized, unoptimized LCP image1 to 4 secondsHighest
Render-blocking CSS and JS0.5 to 2 secondsHighest
Slow TTFB0.3 to 2+ secondsHigh
Lazy-loaded LCP element0.5 to 3 secondsHigh, quick win
Web font blocking headline paint0.2 to 1 secondMedium
Third-party tag waterfalls0.3 to 1.5 secondsMedium
Client-side rendering without SSR1 to 4 secondsHigh for JS frameworks

How to Diagnose LCP Problems

Start with field data, because it reflects real users. PageSpeed Insights and the Core Web Vitals report in Search Console show the 75th-percentile LCP per URL group and, critically, which phase is slow: TTFB, resource load delay, resource load duration, or element render delay. That phase breakdown is the diagnosis — it tells you whether to fix the server, the asset, or the render path before you touch anything.

Then reproduce in the lab with Lighthouse or WebPageTest using mobile throttling, find the exact LCP element, and read the waterfall. Look for three things in order: how late the LCP image request starts (load delay), how long it takes to download (load duration), and whether the element waits on scripts or fonts after download (render delay). Each phase maps to a different fix, and guessing instead of diagnosing is how teams spend a week caching a page whose real problem was a lazy-loaded hero.

LCP sub-partWhat it meansPrimary fix
TTFBTime to first byte of HTMLCaching, CDN, faster hosting, database tuning
Load delayRequest starts latePreload image, remove lazy-load on hero, fix discovery
Load durationDownload is slowCompress, resize, modern formats, CDN edge delivery
Render delayPaint waits after downloadInline critical CSS, font-display, defer non-critical JS

Image Optimization: The Highest-Impact LCP Fix

Because the LCP element is an image on most commercial pages, image work pays the biggest dividends. Serve the hero at the size it renders — a 1,200 to 1,600 pixel width covers most full-width mobile heroes — and export in WebP or AVIF, which cut file sizes by 30 to 70 percent versus JPEG at similar quality. Compress deliberately: quality settings around 75 to 80 are visually transparent for photographs at hero sizes.

Then wire the browser to treat the hero as a priority. Preload it with a link tag in the head, include fetchpriority=”high” on the img element, and exclude it from lazy loading entirely — loading=”lazy” on an LCP image is a self-inflicted wound. Set width and height attributes so the layout reserves space, which simultaneously protects CLS. Where the CMS supports it, responsive srcset sizes let each device download only what its screen needs.

TechniqueHowExpected gain
Resize to render widthMatch image dimensions to layout, use srcsetLarge, often the whole gap
Convert to WebP or AVIFCDN transform or CMS option30 to 70 percent smaller files
Preload + fetchpriorityLink rel=preload, fetchpriority=highRemoves seconds of load delay
Never lazy-load the heroExclude LCP image from lazy loadingImmediate, zero cost
Set width and heightAttributes on the img tagProtects CLS while optimizing LCP

For the broader picture beyond the hero, our page speed guide covers image strategy across whole templates.

Server, Render, and CDN Fixes for LCP

If the slow phase is TTFB, the fixes live upstream of the browser. Full-page caching for anonymous visitors, a CDN that serves HTML from edge locations, adequate hosting for your traffic profile, and database query tuning are the levers, roughly in order of cost-effectiveness. A page that paints in 1.8 seconds on a good cache hit and 4.5 on a miss has a caching problem, not a page-weight problem, and no amount of image work will hide it.

If the slow phase is render delay, attack the critical path. Inline the CSS the hero needs and load the rest asynchronously, use font-display: swap with preloaded font files so headlines paint immediately, and move analytics, chat, and personalization scripts to defer or after-interaction loading. On JavaScript frameworks, server-side rendering or static generation restores an early paint that pure client-side rendering gives away, and streaming SSR narrows the gap further for data-heavy pages.

LCP Fixes by Platform: WordPress, Shopify, and Headless

On WordPress, most LCP damage comes from plugin stacks: lazy-load applied to heroes, bloated sliders, and multiple caching plugins fighting each other. Pick one performance plugin or a lean code approach, exclude the hero from lazy loading, enable WebP conversion, and put the site behind a CDN with HTML caching for anonymous traffic. Check theme quality too, because premium themes shipping six sliders are a chronic source of render-blocking weight.

On Shopify, the theme and app ecosystem decide the outcome. Remove apps that inject render-blocking scripts, use image_url and width parameters so product images transform at the CDN, preload the featured collection image on landing templates, and resist autoplay video heroes on mobile. On headless builds, budget server components first, keep client bundles lean, adopt ISR or static generation for commercial pages, and instrument real-user monitoring at launch so regressions surface in days rather than quarters. Our WordPress speed guide and Core Web Vitals guide go deeper on each stack.

How LCP Fits With INP and CLS

LCP is one of three Core Web Vitals, and they fail in different ways. LCP is about perceived load speed, INP about responsiveness to interactions, and CLS about visual stability during load. A page can ace LCP at 1.9 seconds and still frustrate users if the first tap does nothing for 600 milliseconds, so treat the trio as a set: paint fast, respond fast, stop jumping.

They also interact. Fixing CLS by reserving image space helps LCP stay stable across template updates. Fixing render-blocking JavaScript for LCP usually improves INP on the same page. And a hero image swap that forgets width and height fixes LCP while quietly wrecking CLS, which is why every performance change should be verified against all three metrics in field data, not just the one you were targeting. Our small-business speed guide sequences the whole program for lean teams, and when you want performance treated as a growth lever, Digimau builds Core Web Vitals work into every SEO engagement.

Frequently Asked Questions

These are the questions US business owners and developers ask most about LCP, answered plainly.

What is a good LCP score?

2.5 seconds or faster at the 75th percentile of real user loads is good. Between 2.5 and 4.0 seconds needs improvement, and above 4.0 seconds is poor by Google’s published thresholds.

How do I find my LCP element?

Run PageSpeed Insights or Lighthouse on the page and open the diagnostics: the LCP element is named directly. In field data, the web-vitals JavaScript library and CrUX-based tools report which element real users experienced.

Why is my LCP image slow even though it is compressed?

Compression fixes load duration, but the delay is often load delay or render delay: the image is lazy-loaded, discovered late, or waiting on CSS and fonts. Check the LCP phase breakdown before re-compressing.

Does lazy loading hurt LCP?

Yes, when applied to the LCP element. Lazy-load everything below the fold, but the hero image must load eagerly, preloaded, with fetchpriority set to high.

Is LCP a Google ranking factor?

Core Web Vitals are part of Google’s page experience signals, which act as a tiebreaker among comparable results rather than a primary ranking driver. Fix them for users first; the SEO benefit compounds with every other signal.

How is LCP different from FCP?

First Contentful Paint measures when anything first paints, often a header or spinner. LCP measures when the largest above-fold element paints, which matches what users perceive as loaded.

How long does it take to fix LCP?

Image and lazy-load fixes can show field-data movement within a few weeks of deployment, because CrUX rolls on a 28-day window. Server-level fixes take longer to validate but often deliver the biggest single gain.

What tools measure LCP?

PageSpeed Insights, Lighthouse, WebPageTest, Search Console’s Core Web Vitals report, and real-user monitoring libraries like web-vitals. Use lab tools to diagnose and field data to verify.

Does WebP improve LCP?

Usually yes, by shrinking the LCP image download. AVIF can shrink it further. Format change alone will not rescue a page with severe render-blocking or TTFB problems, so fix phases in order.

What is a good TTFB for LCP?

Aim for under 800 milliseconds at the 75th percentile, which is Google’s guidance for the TTFB vital. Faster is better: every millisecond of TTFB delays everything that follows, including the hero paint.

Related Articles

Keep reading with these guides:

Share:

Facebook
Twitter
LinkedIn

Leave a Reply

Get a free 30-minute consultation on how we can help you achieve your growth goals