Your LCP Fixes Might Be Optimizing the Wrong Thing: How to Make Largest Contentful Paint Actually Improve (and Stay Improved)
Largest Contentful Paint (LCP) often fails to improve because teams optimize an image or block that isn’t actually the browser’s LCP candidate. Here’s how that happens (especially with carousels and customizable layouts), how to diagnose it, and a practical execution plan—including how AYSA monitors, proposes, and safely ships changes.
Most businesses treat Largest Contentful Paint (LCP) like a simple equation: “compress the hero image, cut some scripts, and the score goes up.”
Then they do exactly that… and the score barely moves. Or it moves in the lab and not in the field. Or it improves for one page template and quietly regresses on another.
The uncomfortable truth is that many LCP projects fail because the team is optimizing the wrong element. Not “the wrong optimization.” The wrong target.
A recent case study highlighted by Google Search Advocate John Mueller (and covered by Search Engine Journal) shows how customizable layouts and carousel behavior can cause the browser to measure an element as LCP that your team isn’t looking at—so you keep polishing an image that was never the LCP candidate in the first place.
This editorial is a practical playbook for fixing that class of problem—especially in ecommerce and template-driven sites—plus a realistic execution model for keeping LCP stable over time. I’ll also show where AYSA fits: Monitoring your real-world performance, preparing changes, asking for approval, and executing accepted updates safely across your site.
Concise summary

- LCP is not “your biggest image.” It’s the largest content element that becomes visible within the viewport early in the load. Small design decisions (like transitions) can change which element is measured.
- Carousels and customizable layouts are common reasons LCP fixes miss. The browser can’t “count” an element as LCP until it’s considered visible; animations can delay that moment.
- Three high-leverage fixes often beat “compress harder”: remove above-the-fold transitions, don’t lazy-load the likely LCP image, and explicitly prioritize it (sparingly).
- SMEs and agencies should treat LCP as an operational system, not a one-time project: measure field data, validate the real LCP candidate, ship changes with guardrails, and monitor for regressions.
- AYSA’s role: continuously monitor Core Web Vitals patterns, detect template-level regressions, propose specific code/config changes, route them for approval, and execute what you accept—so performance improvements don’t depend on a quarterly “speed sprint.”
Table of contents

- Why this is happening: LCP improvements fail more often than they should
- The counterintuitive LCP reality: you can “fix” the page and still miss LCP
- How the browser chooses LCP (and how you accidentally confuse it)
- Customizable layouts and carousels: why “one LCP fix” rarely fits all
- Diagnose before you optimize: a step-by-step workflow that doesn’t waste weeks
- The three fixes that actually move LCP (when the wrong element is being measured)
- The “fourth lever”: latency and caching (important, but not the first guess)
- Common LCP mistakes SMEs make (because the internet told them to)
- An SME scenario: the “carousel that stole your LCP” (and what to do about it)
- What agencies should rethink: performance as governance, not heroics
- Where AYSA fits: monitoring + approved execution for performance work
- What to do next: a practical action list
- Sources and further reading
Why this is happening: LCP improvements fail more often than they should

LCP became a boardroom metric because it’s intuitive: “How fast until the main content shows up?” That’s also why it’s easy to oversimplify. Teams hear “largest contentful paint” and translate it into “largest image.” Then they ship:
- more aggressive Image Compression,
- a new image format,
- some script deferral,
- a few plugin removals,
- and a celebratory Slack message.
But the web is not a static poster. It’s a rendering pipeline. The browser is constantly negotiating discovery (finding resources), priority (deciding what to fetch first), layout (deciding where things go), and visibility (deciding what counts as “painted” and “visible”).
If your theme, component library, or A/B testing tool changes that chain—even slightly—your LCP candidate can change. Once the LCP candidate changes, your optimizations can become irrelevant without anyone noticing.
That’s the core lesson in the case study referenced by Mueller and summarized by Search Engine Journal: the initial assumption was “heavy images or server latency,” but the real problem turned out to be that the browser was measuring the wrong element as LCP due to how carousel/banner transitions interacted with visibility timing.
The counterintuitive LCP reality: you can “fix” the page and still miss LCP
Here’s the easiest way to understand why LCP work often misses:
LCP is a measurement outcome, not a design intention.
You may intend the hero image to be the main element. Your designer may assume the carousel is what users see first. But the browser’s LCP algorithm doesn’t care about intent. It cares about what is:
- in the viewport,
- largest by area among eligible elements,
- and becomes visible first according to how rendering and visibility are computed.
So when a top-of-page carousel has a fade-in transition, you can create a bizarre situation:
- Humans see the hero section “loading,”
- the browser delays marking it as “visible” for LCP purposes,
- and a different, lower element becomes the measured LCP because it appears “sooner” in terms of visibility—despite being below the fold.
This is exactly the kind of misalignment highlighted in the Nuvemshop case study described by Search Engine Journal: carousel transitions delayed when elements became visible to LCP detection, which made other elements (like banners) become the measured LCP. Result: earlier optimization efforts targeted something that wasn’t actually the LCP element.
The business takeaway: before you touch images or servers, confirm what the LCP element is in real conditions. If you don’t, you might spend a month shaving milliseconds from an asset that doesn’t control the metric.
How the browser chooses LCP (and how you accidentally confuse it)
You don’t need to be a browser engineer to make smart decisions here, but you do need the right mental model.
1) LCP is about visibility and timing—not just file size
A heavy image can be your LCP problem. But so can:
- an element that isn’t discovered early (because HTML/CSS hides it or JS injects it late),
- an element that is discovered but deprioritized (because other resources compete),
- an element that is loaded but not “painted” quickly (layout shifts, font swapping, render-blocking CSS),
- an element that is painted but not “visible” according to how the browser determines visibility (transforms, opacity transitions, overlays).
This is why web performance guidance so often emphasizes early discovery and correct prioritization.
2) Carousels can delay LCP eligibility
Carousels are a perfect storm because they often combine:
- large images,
- JS-driven rendering,
- Lazy loading patterns (sometimes applied too aggressively),
- CSS transitions (fade, slide, transform),
- and multiple possible “largest” candidates.
Even when a carousel “looks” like it loads first, small implementation details can delay when the browser considers that content to be the largest visible element.
3) Template variability changes the target
On platforms where merchants can rearrange homepage sections (product grids, banners, carousels, featured categories), the “largest content” differs from store to store. That variability makes it dangerous to ship one LCP fix based on one representative store and assume it’s universal.
The case study discussed by Search Engine Journal is fundamentally about that: when the layout is customizable, the browser’s LCP candidate can change depending on which blocks appear first and how they render.
Customizable layouts and carousels: why “one LCP fix” rarely fits all
Most SMEs live in templates—Shopify themes, WooCommerce themes, Webflow templates, custom CMS page builders, or multi-tenant ecommerce platforms. Templates are great for speed to launch, but they create two performance realities:
- Shared code paths create shared failure modes. If a theme’s hero component uses a transition that breaks LCP measurement, it’s not one site affected. It’s a fleet.
- Customization creates measurement drift. Store A’s LCP might be the hero image. Store B’s LCP might be a promo banner. Store C’s might be a product grid image. “Optimizing the hero” helps A, does nothing for B, and might even hurt C if you over-prioritize the wrong resource.
In practice, this means LCP work needs guardrails:
- Logic that only applies “high priority” to the likely LCP candidate,
- Rules that prevent lazy-loading above-the-fold images,
- Component-level standards: “No opacity transitions on the first viewport’s primary image container,”
- Monitoring that detects when a theme update changes LCP behavior across many pages.
This is also where businesses burn time: they treat LCP as “a ticket,” not as a standard. A ticket closes; a standard keeps paying dividends.
Diagnose before you optimize: a step-by-step workflow that doesn’t waste weeks
If you’re a founder or operator, here’s the practical diagnostic sequence I recommend before you start rewriting templates. This is written to be workable even if you’re not deep in dev tools.
Step 1: Decide whether you’re fixing field reality or lab reality
Performance is measured in two worlds:
- Lab tests: controlled runs (helpful for debugging, not always representative).
- Field data: real users on real devices and networks (what ultimately matters).
Your first decision: are you trying to improve what customers experience, or what a tool reports in a lab run? Ideally both—but when they disagree, you prioritize field.
Google provides documentation and guidance on Core Web Vitals, including how these metrics are defined and evaluated: web.dev: Web Vitals.
Step 2: Identify the real LCP element on your key templates
Don’t guess. Confirm. Do this for:
- Homepage template,
- Category/collection template,
- Product detail template,
- And your top 2–3 landing pages from ads/email (if applicable).
Because as the case study notes (via Search Engine Journal’s summary), LCP isn’t only a homepage problem. Category and product pages can be the main drivers.
If you’re using PageSpeed Insights, it typically indicates what element was identified as LCP. This matters because it stops you from optimizing the wrong target. Google’s PageSpeed Insights is here: pagespeed.web.dev.
Step 3: Ask “why is this the LCP element?” not “how do I compress it?”
Once you know the element, ask:
- Was it discovered early in HTML, or injected by JS later?
- Is it blocked by CSS/JS in the head?
- Is it lazy-loaded?
- Is it inside a carousel with transitions?
- Is it competing with other high-priority downloads?
This is the critical pivot: performance debugging is about understanding the chain of events, not applying generic “speed tricks.”
Step 4: Validate across variants (themes, experiments, personalization)
If your site runs:
- multiple themes,
- A/B tests,
- personalization modules,
- or GEO/language variants,
you need to confirm the LCP candidate isn’t changing across variants. This is where template-driven businesses get trapped: the “fix” works for one variant and silently fails for another.
The three fixes that actually move LCP (when the wrong element is being measured)
The case study highlighted by Mueller (as summarized by Search Engine Journal) is valuable because it reinforces a set of fixes that are boring, repeatable, and usually more effective than “recompress everything.” When LCP is wrong because of discovery/visibility, these are your levers:
Fix #1: Remove above-the-fold transitions that delay visibility
If the top-of-page content is the main content, it needs to be visible immediately—not “fade in,” not “slide in,” not wait for JS to initialize.
In the case described, CSS transitions on carousels and banners delayed visibility timing, which skewed LCP measurement toward other elements. Removing transitions from the top sections made the true LCP candidate visible without delay.
Business framing: transitions are design polish. LCP is revenue. If you have to choose, choose revenue for the first viewport.
Compromise approach: keep transitions after initial paint (e.g., on subsequent slides, or after the first interaction), but don’t use them to reveal the primary above-the-fold content.
Fix #2: Do not lazy-load the likely LCP image
Lazy loading is a good tool when used correctly. It’s a bad tool when used automatically.
One of the most repeated pieces of guidance on web.dev is blunt: don’t lazy-load the LCP image because it introduces delay. The case study’s change was to remove loading="lazy" from the first image in the top section so it can start loading immediately.
What SMEs should know: many themes and performance plugins lazily apply lazy-loading to all images, including the hero. That can “improve” some metrics while hurting the one that matters most for perceived speed.
Fix #3: Prioritize the real LCP candidate (sparingly and conditionally)
The case study adds a prioritization signal (described by Search Engine Journal as fetchpriority="high") to the likely LCP image. This nudges the browser’s preload scanner to fetch it sooner.
This is where teams often go wrong: they see “high priority” and apply it to everything. That’s self-defeating. If everything is high priority, nothing is.
Operational rule: reserve high priority for one or two true above-the-fold candidates per page type. Use validation logic so the signal only applies when that element can realistically be LCP (for example: first image in the first viewport component, and only on templates where it appears).
Why these three fixes work together
Think of LCP as a race:
- Remove transitions so the runner is allowed onto the track immediately (visibility).
- Remove lazy-load so the runner isn’t waiting for a late start signal (discovery timing).
- Set priority so the runner isn’t stuck behind other runners (network scheduling).
You can compress images all day, but if the browser doesn’t fetch the right asset early—or doesn’t consider it visible—compression won’t deliver the win you expect.
The “fourth lever”: latency and caching (important, but not the first guess)
The case study referenced in Search Engine Journal’s coverage also mentioned edge caching to reduce latency. That’s a real lever, especially for global audiences and mobile networks.
But here’s my editorial point of view: don’t lead with infrastructure upgrades when your issue is a front-end measurement mismatch.
Edge caching, CDNs, and server tuning can help LCP—particularly by reducing time-to-first-byte and speeding asset delivery. However, if the browser is measuring the wrong element as LCP, infrastructure improvements can become a costly way to improve the wrong thing.
Practical sequencing:
- Confirm the LCP element.
- Fix discovery/visibility issues.
- Then address latency and caching as needed.
Common LCP mistakes SMEs make (because the internet told them to)
SMEs are busy. They want a checklist. The problem is that “speed checklist SEO” is full of advice that’s correct in isolation but harmful when applied blindly.
Mistake 1: Treating LCP like an image compression project
Compression matters, but it’s often diminishing returns compared to discovery and priority.
If your hero image is already reasonably optimized, compressing it further may not fix LCP because the delay is elsewhere (late discovery, lazy-load, render-blocking CSS, transitions).
Mistake 2: Enabling lazy-load “for everything”
Lazy-load is for below-the-fold content. If a plugin lazily applies it to above-the-fold images, you can guarantee delay for the very thing users want to see first.
Mistake 3: Prioritizing too many assets
When teams add priority hints to multiple images, fonts, and scripts, the browser’s scheduling becomes crowded. Your actual LCP candidate may still get stuck behind other “important” resources.
Mistake 4: Optimizing one page and declaring victory
Performance regressions happen when:
- themes update,
- apps/plugins update,
- marketing adds a new pop-up,
- new campaigns create new landing pages,
- personalization changes above-the-fold composition.
Without monitoring, you don’t have performance—you have a moment of performance.
An SME scenario: the “carousel that stole your LCP” (and what to do about it)
Let’s make this concrete with a realistic small business scenario.
Business: A mid-seven-figure specialty food ecommerce store. The founder uses a theme with a homepage carousel: “Summer bundle,” “Back in stock,” “Free shipping.” Each slide is a big image with a fade-in. The theme also has a promotional banner lower on the page (“Subscribe and save 10%”).
What the founder thinks is happening: “The carousel is the biggest element, so it must be LCP. Let’s compress the carousel images.”
What’s actually happening:
- The carousel container renders immediately, but the first slide image fades in with a CSS opacity transition.
- The banner lower on the page has no transition and becomes “visible” quickly.
- The browser selects the banner as LCP, not the hero.
- The founder compresses the carousel images and sees little change in LCP.
The fix path that works:
- Confirm the measured LCP element on the homepage template (don’t assume).
- Remove the fade-in transition on the initial slide (keep transitions for subsequent interactions if desired).
- Remove lazy-load from the initial hero image if a plugin/theme applied it.
- Prioritize the hero image request (sparingly) so it wins network scheduling early.
- Monitor field performance for a few weeks to ensure real users see the improvement—and catch regressions if marketing adds new above-the-fold elements.
This is the “practical lesson” from the case discussed by Search Engine Journal: you can’t optimize your way out of a measurement mismatch. You have to correct the conditions that cause the browser to choose the wrong element.
What agencies should rethink: performance as governance, not heroics
Agencies and in-house teams often approach Core Web Vitals as a one-off sprint:
- audit,
- implement 10–20 changes,
- deliver a report,
- move on.
That works only when the site is stable. Most sites aren’t stable. They’re living products with constant edits from marketing, theme updates from vendors, and scripts added by growth teams.
My opinion: If you sell performance as a project, you’re selling something that will decay.
The more scalable approach is performance governance:
- Component standards (e.g., “No above-the-fold transition on primary content container”).
- Template rules for lazy-load and priority.
- Release checks for new apps/trackers/experiments.
- Monitoring and regression alerts tied to business-critical templates.
This isn’t glamorous, but it’s what creates durable LCP improvements—especially on customizable, template-heavy platforms where the measured element can shift.
Where AYSA fits: monitoring + approved execution for performance work
Performance work usually breaks down at the same point: execution.
Even when the diagnosis is correct, teams struggle to ship safely because changes touch templates, components, theme code, plugin settings, and deployment workflows. Or nobody owns the work end-to-end.
AYSA is designed for the gap between “knowing what to do” and “getting it done consistently.” The model is straightforward:
- Monitor: continuously watch the signals that matter (including performance patterns that can affect SEO and user experience). See: AYSA Monitoring
- Prepare: identify likely causes and draft specific recommended changes (for example, rules around lazy-loading above-the-fold images, or conditional prioritization on the hero image).
- Ask for approval: you control what ships. AYSA doesn’t push changes blindly.
- Execute accepted changes: apply approved updates across the site in a consistent way—especially important when you have multiple templates or themes.
That execution loop matters because LCP regressions aren’t rare—they’re normal. Every new carousel tweak, personalization experiment, or marketing script can shift the measured LCP element.
Related AYSA resources:
- AI SEO tools (to understand the system and how execution is managed)
- AI search visibility (where technical quality supports discoverability and trust signals)
- AYSA blog (ongoing playbooks and operating ideas)
- Pricing (to evaluate fit and scope)
Important note: LCP is not a magic ranking lever. Google has consistently emphasized relevance and usefulness over speed. But speed is a customer experience lever—and it’s one of the few levers that improves conversion, brand trust, and operational efficiency at the same time. The case study’s business outcomes were self-reported (as noted in the Search Engine Journal write-up), so treat conversion claims directionally unless you can measure them in your own controlled environment.
What to do next: a practical action list
If you want LCP improvements that actually show up in the metric and in customer experience, here’s a pragmatic plan you can run this month.
Week 1: Establish what “good” means for your business
- Pick 3–5 templates that matter most (homepage, category, product, top landing pages).
- For each template, identify the typical above-the-fold “main content” element and confirm whether it’s measured as LCP in your diagnostics.
- Document which variants exist (themes, experiments, personalization modules).
Week 2: Fix the high-leverage “wrong element” causes
- Remove or delay above-the-fold transitions that gate visibility of primary content.
- Ensure the likely LCP image is not lazy-loaded.
- Prioritize only the true LCP candidate (and validate conditions before applying priority signals).
Week 3: Reduce avoidable competition
- Audit scripts and tags that load early and compete with the hero content.
- Be especially skeptical of “global” third-party tags that run on every page.
Week 4: Operationalize (so it doesn’t regress)
- Write component rules: what’s allowed above the fold (transitions, lazy-load, injection timing).
- Set monitoring and alerts for regressions (template-level, not just one URL).
- Adopt an approved execution workflow so fixes ship consistently and reversibly.
If you use AYSA
- Use Monitoring to watch for regressions and anomalies across templates.
- Use AYSA to prepare specific recommended changes and route them for approval.
- Execute accepted changes and keep a consistent standard across themes/templates over time.
Sources and further reading
- Search Engine Journal coverage of Mueller highlighting the case study: searchenginejournal.com: 581413
- web.dev Web Vitals overview (official guidance hub): web.dev: Vitals
- PageSpeed Insights (to identify LCP element and diagnostics): pagespeed.web.dev
- AYSA Monitoring: AYSA Monitoring
- AYSA AI SEO Tools: AI SEO Tools
- AYSA AI Search Visibility: AI Search Visibility
- AYSA Pricing: AYSA Pricing
- AYSA Blog: AYSA Blog
Continue the AI search topic inside AYSA.
Use these pages to connect the article with AI SEO tools, AI visibility monitoring, AI Overviews and approved website execution.
Turn this topic into a website action plan.
Use these AYSA hubs to move from reading to technical fixes, AI visibility monitoring, research, glossary context and approval-first SEO execution.