Reviewed November 5, 2026
What Is LCP and Why Does Your Storefront Keep Failing It?
Largest contentful paint, LCP, is the time from navigation until the largest image or text block in the viewport finishes rendering. Google counts 2.5 seconds or less as good, for at least 75 percent of visits. Storefronts fail it predictably: slow time to first byte, render blocking resources, an oversized LCP image, or the LCP image being lazy loaded.
Your store can feel fast and still fail LCP, because LCP is not a feeling or a total load time. It is one timestamp: when the biggest thing on the screen finishes painting. Until that element renders, the metric keeps counting, no matter how much of the page arrived earlier.
That single fact reorganizes all speed work. You are not making the page faster in general. You are finding one element and removing everything standing between it and the screen.
The four parts of the wait
web.dev breaks LCP time into four subparts: time to first byte, resource load delay, resource load duration, and element render delay. Each has a different owner. TTFB is the server and the platform. Load delay is discovery: an image the browser finds late, because it hides in a CSS background or waits on JavaScript, starts late no matter how small it is.
Load duration is the file itself, where image size and format live. Render delay is everything blocking the paint after the file arrives: heavy main thread work, stylesheets, and scripts queued ahead of it. A diagnosis that does not split these four will fix the wrong one, thoroughly and at some expense.
Why stores keep failing the same way
The pattern on Shopify product and home pages repeats: the LCP element is a hero or product image, served larger than its display slot, sometimes lazy loaded by a well meaning performance setting that delays exactly the wrong file. Add a carousel asking the browser to fetch several heroes, app scripts competing for the main thread, and a font holding text paint, and 4 second mobile LCP builds itself.
The store's desktop numbers often look respectable, which delays the reckoning. Field data is dominated by phones on ordinary connections, and the 75th percentile rule means your slowest quarter of real visits sets the grade, not your office wifi test.
Fix in the order the clock runs
First, name the element. PageSpeed Insights and Shopify's performance tooling both identify the LCP element and its breakdown. Then attack the largest subpart: preload or fetch priority for a late discovered image, resize and modern format for a heavy one, remove or defer the scripts renting space in render delay.
Retest in the lab for direction and in the field for truth. LCP is a ranking input through page experience signals and, more importantly, it is the moment your shopper decides the store works. A hero that paints at 2.3 seconds instead of 4 is not a metric nicety. It is the first product impression, arriving while the shopper is still there to receive it.
Related reading
Related reading: Why Is My Shopify Store Slow? A Merchant Checklist, Too Many Apps Slowing Your Store: How to Find the Culprits, and Preload the LCP Image on Collection Pages, and Nothing Else.
Frequently asked questions
What is a good LCP score?
2.5 seconds or less is Google's good threshold, and it should hold for at least 75 percent of page visits, assessed separately for mobile and desktop. Between 2.5 and 4 seconds needs improvement, and beyond 4 seconds is rated poor.
What is usually the LCP element on a product page?
The main product image, most often. On homepages it is the hero image or the largest hero text block. Lab tools name the exact element, so confirm before optimizing, because a text LCP points at fonts and blocking resources instead.
Does lazy loading hurt LCP?
Lazy loading below the fold is good practice. Lazy loading the LCP image itself is a self inflicted delay, because the browser postpones the file the metric is timing. The LCP image should load eagerly with high fetch priority.
Why does my LCP differ between tests?
Lab tests vary with simulated network and device settings, and field data mixes real devices, connections, and cache states. One test is a sample. Use repeated lab runs for direction and the 28 day field window for the grade that counts.