How do I improve Core Web Vitals?
Last checked 31 Aug 2026
Short answer
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.
The three metrics
| Metric | Measures | Typical fix |
|---|---|---|
| LCP (Largest Contentful Paint) | How fast the main content appears | Compress/preload hero images, reduce render-blocking resources |
| INP (Interaction to Next Paint) | How responsive the page feels to clicks/taps | Reduce heavy JavaScript running on interaction, avoid large re-renders |
| CLS (Cumulative Layout Shift) | How much content jumps around while loading | Set explicit width/height on images and embeds, reserve space for ads/dynamic content |
Where to check your scores
- Chrome DevTools → Lighthouse (lab data, immediate).
- Google Search Console's Core Web Vitals report (real-user field data, if the site has traffic).
- PageSpeed Insights for both.
Fixing in Lovable
Identify which metric is poor, then ask specifically:
My Core Web Vitals report flags [LCP/INP/CLS] as poor. Find what's causing it on [page] and fix that specifically.
For LCP, that's usually the hero image or a slow-loading font. For CLS, it's usually an image or embed without reserved dimensions. For INP, it's usually a heavy script or unnecessary re-render triggered by an interaction.
What usually goes wrong
- Optimising all three at once instead of the one actually flagged as poor — field data (real visitors) matters more than lab data for prioritising.
- Fixing CLS by removing dynamic content entirely instead of just reserving space for it.
- Ignoring mobile field data — Core Web Vitals are usually worse on mobile and that's what Google weighs for search ranking.
See Google's own Core Web Vitals documentation for full metric definitions and thresholds.
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 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.
- AnswerHow do I reduce unnecessary database calls?Fetch only what a page needs, cache results, batch requests, and let Postgres do filtering instead of pulling whole tables into the client.