Why Is My Core Web Vitals Score Still Bad After Optimizing?
You've compressed images, deferred JavaScript, and maybe even switched hosts. Yet when you check Google Search Console, your Core Web Vitals are still flagged as poor. It's frustrating — you did everything the guides said. Why is your score still bad?
Here are the most common reasons your optimizations aren't moving the needle, and what to do about each.
1. You're Testing the Wrong Page
Core Web Vitals are per-page, not site-wide. If you optimized your homepage but Google is evaluating your product pages, blog posts, or category pages, your overall status won't improve.
Fix: Open Google Search Console's Core Web Vitals report. It groups URLs by problem (LCP, INP, CLS) and by device. Focus on the specific URLs listed there. Optimize those pages — not just your homepage.
Also, check the report for 'Good' URLs. Sometimes a page is already good, but the report is stale. Re-validate after fixes.
2. Field Data Lags Behind Lab Tests
Core Web Vitals in Search Console are based on real-user (field) data collected over 28 days. Even if you fix a problem today, it can take weeks for the improvement to show up in Google's reports.
Fix: Use lab tools like Lighthouse or PageSpeed Insights to verify your fixes immediately. If lab scores improve but field data doesn't, wait. Meanwhile, keep monitoring. Don't expect overnight changes.
3. Your Hosting Is the Bottleneck
You can optimize every byte, but if your server responds slowly, your Largest Contentful Paint (LCP) will suffer. Time to First Byte (TTFB) is a key factor. Shared hosting, overloaded servers, or servers far from your users all add delay.
Fix: Check your TTFB. If it's consistently high (over 600ms), consider upgrading to a better host, using a CDN, or moving to a server closer to your audience. A faster host gives you a head start.
4. You Optimized the Wrong Image
LCP is often an image. But it's not just the hero image — it's the largest element in the viewport when the page loads. That might be a logo, a background image, or even a text block if it's large enough.
Fix: Identify which element is actually the LCP. Use Lighthouse's 'Largest Contentful Paint element' diagnostic. Then optimize that specific element: compress it, use modern formats like WebP, and add fetchpriority="high" to preload it.
5. JavaScript Still Blocks Rendering
You deferred JavaScript, but if the LCP element is rendered by JavaScript (like a slider or a React app), deferring it can make things worse. The browser has to wait for the script to execute before it can paint anything.
Fix: For LCP, consider server-side rendering, preloading critical scripts, or moving the LCP element to static HTML. For INP (Interaction to Next Paint), reduce the amount of JavaScript that runs on the main thread. Break up long tasks, remove unused code, and consider using Web Workers.
6. You're Measuring on the Wrong Device
Core Web Vitals are reported separately for mobile and desktop. Often, people optimize for desktop and forget that mobile is the default for Google's indexing. Mobile devices have slower CPUs and network, so issues are more pronounced.
Fix: Always test on mobile first. Use Chrome DevTools with device emulation and throttling. Check the mobile report in Search Console separately.
7. Third-Party Scripts Are Sabotaging You
Analytics, chat widgets, ad scripts, and social buttons all add JavaScript. They can block rendering, increase INP, and cause layout shifts when they load. You might have optimized your own code but missed these.
Fix: Audit every third-party script. Are they all necessary? Load them asynchronously, delay them until after the page is interactive, or self-host them if possible. Remove any that aren't essential.
8. You Ignored CLS on Mobile
Cumulative Layout Shift (CLS) is often caused by images and ads without reserved space. On mobile, the viewport is smaller, so shifts are more noticeable. You might have fixed desktop but missed mobile-specific issues.
Fix: Reserve space for all media and ads using CSS aspect-ratio or width/height attributes. Check for late-loading fonts, dynamic content, or embedded widgets that push content down. Use Lighthouse's 'Avoid large layout shifts' diagnostic.
9. You're Not Using the Right Tools
You might be relying on tools that don't reflect real-user experience. For example, testing in a lab without throttling won't show you the slow network conditions real users face.
Fix: Use PageSpeed Insights to get both lab and field data. Also, use Chrome DevTools to record a trace and analyze long tasks. WebPageTest is great for advanced diagnostics.
10. You Haven't Re-Tested After Every Change
Sometimes people make multiple changes at once and can't tell what helped or hurt. Or they make a change, see no improvement, and assume it didn't work — but they forgot to clear cache.
Fix: Make one change at a time, test, and measure. Use incognito mode or clear cache. Keep a log of changes and results. This systematic approach will help you identify what actually works.
Get a Clear Picture of Your Site's Health
Core Web Vitals are just one part of your site's overall health. To see how your site performs across speed, SEO, usability, and more, run a free audit of your website. You'll get a prioritized list of issues to fix, so you can stop guessing and start improving.
Don't Give Up
Improving Core Web Vitals is an ongoing process. If your score is still bad, it's usually because of one of the above. Go through the list, tackle the most impactful issues first, and be patient. With consistent effort, you'll see your scores climb.
For more guides on improving your site's performance and SEO, check out our guides library.
More guides · Compare audit tools · Run a free website audit