Here's a number that should alarm every website owner: images are the LCP element on 79% of web pages. That means for most websites, a single image file — your hero banner, your product photo, your article thumbnail — determines whether you pass or fail Google's Core Web Vitals assessment. Understanding why images cause so many failures is the first step to fixing them, and the causes are more specific than most people realize.
It's not just about file size. There are five distinct failure modes that affect LCP, CLS, and INP in different ways, and many sites suffer from multiple issues simultaneously. This diagnostic guide walks through each failure mode so you can identify exactly what's dragging your scores down.
Images Are the LCP Element on 79% of Pages
Google's Chrome User Experience Report (CrUX) data consistently shows that images dominate LCP across the web. The breakdown of LCP element types is roughly:
| LCP Element Type | % of Pages | Primary Metric Affected |
|---|---|---|
| img element | 47% | LCP |
| CSS background-image | 22% | LCP |
| poster on video element | 10% | LCP |
| Text block | 21% | LCP (but faster to fix) |
The implication is clear: if you fix your images, you fix your LCP. And since LCP is the most impactful Core Web Vitals metric for SEO and user experience, image optimization delivers outsized returns compared to almost any other performance investment.
Failure Mode 1: Oversized Image Files
How it fails LCP: The browser can't render the LCP element until the image file finishes downloading. On a 10 Mbps mobile connection, a 1 MB image takes about 800ms to download — after the connection is established. Combined with DNS lookup, TCP handshake, and server response time, you easily hit 3-5 seconds of LCP.
Diagnostic: In PageSpeed Insights, look for "Serve images in next-gen formats" and "Efficiently encode images" opportunities. If your LCP image shows a potential savings of 100+ KB, this is your problem.
Fix: Convert to WebP (30-35% smaller than JPEG) or AVIF (40-50% smaller). Use ConvertiImage to convert in seconds.
Failure Mode 2: No Preloading of the LCP Image
How it fails LCP: In a typical page load, the browser discovers an img element only after parsing through the head, CSS, and above-fold HTML. If your hero image is loaded via a CSS background-image or injected by JavaScript, it's discovered even later. This adds 300-800ms to LCP unnecessarily.
Diagnostic: In PageSpeed Insights, look for "Preload Largest Contentful Paint image" in the Opportunities section.
Fix: Add <link rel="preload" as="image" href="/hero.webp" type="image/webp"> in your HTML head, before any scripts.
Failure Mode 3: Lazy Loading the LCP Image
loading="lazy" to the LCP image, either manually or via a plugin that lazily loads all images sitewide.
How it fails LCP: Lazy loading intentionally delays image fetching until the element enters (or is near) the viewport. For above-the-fold images that are the LCP element, this adds a significant delay — the browser waits for layout to complete before even starting the download.
Diagnostic: Inspect your LCP image in Chrome DevTools. If it has loading="lazy", this is a guaranteed LCP failure. Also watch out for WordPress plugins like Smush or WP Rocket that apply lazy loading globally.
Fix: Remove loading="lazy" from the LCP image. Add loading="lazy" only to below-fold images.
Failure Mode 4: Missing Width and Height Attributes (CLS)
How it fails CLS: When an image loads and is taller than the browser assumed, all content below it shifts down. If a user was in the middle of reading or about to click a button, this shift causes a poor experience — and a high CLS score. Google rates CLS above 0.1 as "Needs Improvement" and above 0.25 as "Poor."
Diagnostic: In Chrome DevTools Performance tab, look for the red "Layout Shift" markers in the timeline. Click them to see which elements shifted and by how much.
Fix: Add explicit width and height attributes to every img tag: <img src="photo.webp" width="800" height="450" alt="...">. CSS will override display size, but the browser uses these for aspect ratio reservation.
Failure Mode 5: Oversized Images (Wrong Intrinsic Dimensions)
How it fails LCP: An oversized intrinsic image is larger than it needs to be, making download time proportionally slower. On a mobile device with a 390px screen, serving a 2000px image wastes roughly 80% of download bandwidth.
Diagnostic: PageSpeed Insights will flag "Properly size images" if the rendered size is significantly smaller than intrinsic size. The opportunity shows the potential KB savings.
Fix: Use the srcset attribute to serve appropriately sized images: srcset="hero-400.webp 400w, hero-800.webp 800w, hero-1200.webp 1200w". The browser will download only what it needs.
Diagnostic Checklist: Find Your Image CWV Problems
| Check | Tool | Failure Sign | Fix |
|---|---|---|---|
| Image file size | PageSpeed Insights | "Efficiently encode images" flagged | Convert to WebP, compress to 80-85% |
| LCP preload | PageSpeed Insights | "Preload LCP image" opportunity shown | Add link rel="preload" in head |
| Lazy loading on LCP | Chrome DevTools Elements | loading="lazy" on above-fold image | Remove loading="lazy" from LCP element |
| Width/height attributes | Chrome DevTools Elements | No width/height on img tags | Add explicit width and height values |
| Intrinsic size vs display size | PageSpeed Insights | "Properly size images" flagged | Use srcset or resize to match display size |
Full Guide: Optimize Images for Core Web Vitals — 5-Step Checklist
How to Reduce LCP Image Load Time: Compress + Preload Step by Step