How do I improve LCP?
Last checked 31 Aug 2026
Short answer
Largest Contentful Paint is almost always slowed by an oversized hero image or a render-blocking resource — compress/preload the largest above-the-fold element and defer everything not needed for first paint.
What LCP measures
Largest Contentful Paint is the time until the biggest visible element (usually a hero image, banner, or heading block) finishes rendering. Google considers under 2.5 seconds good.
Find what your LCP element actually is
Chrome DevTools → Lighthouse or the Performance panel will name the specific element flagged as the LCP candidate — don't guess, check it.
Common fixes
- Compress and correctly size the LCP image. A 4000px-wide photo displayed at 800px wastes load time for nothing.
- Use modern formats (WebP/AVIF) instead of PNG/JPEG where supported.
- Preload the LCP image rather than lazy-loading it — lazy-loading the very element Lighthouse is timing works against you.
- Remove render-blocking CSS/JS that delays the whole page from starting to paint.
- Avoid client-side data fetching for above-the-fold content where possible — content that waits on an API call before it can render will always hurt LCP.
Prompting Lovable
Lighthouse flags LCP as poor, and names [element] as the LCP candidate. Compress and correctly size that image, make sure it isn't lazy-loaded, and remove any render-blocking resources before it.
What usually goes wrong
- Lazy-loading the hero image along with every other image on the page — the LCP element specifically should load eagerly, not lazily.
- Fixing image size but leaving the image at full original resolution with only CSS scaling it down — the browser still downloads the full file.
- Ignoring font-loading delays, which can hold up text-based LCP elements just as much as images do.
See /questions/how-do-i-optimise-images and /questions/how-do-i-lazy-load-images for the image-specific detail.
Sources
Was this answer helpful?
Related questions
- AnswerWhy is my database making so many requests?Usually a component is re-fetching data on every render, a page is running the same query multiple times, or you're fetching entire tables instead of what's actually needed — ask Lovable to audit data-fetching patterns.
- AnswerHow do I improve Core Web Vitals?Focus on the three metrics Google measures — LCP (loading), INP (interactivity), and CLS (visual stability) — and fix the specific one flagged as poor, usually starting with images for LCP.
- AnswerHow do I lazy-load images?Ask Lovable to add native lazy-loading to images below the fold while keeping the hero/first-visible image loading eagerly, so visitors aren't downloading offscreen images before they're needed.
- AnswerHow do I remove unused code?Ask Lovable to search for unused components, imports and dependencies, or run a tool like ts-prune/depcheck via the terminal, then remove what's confirmed unused and re-test.