How to improve Core Web Vitals in WordPress
To improve Core Web Vitals in WordPress, start from the field data in Search Console to see which templates fail, then fix each metric at its cause: a fast server and an early hero image for Largest Contentful Paint, less JavaScript for Interaction to Next Paint, and reserved space for images and ads for Cumulative Layout Shift. Then wait for 28 days of new field data before judging the result.
Core Web Vitals are Google's three user-experience metrics. A page passes when, at the 75th percentile of real visits, LCP is 2.5 seconds or less, INP is 200 milliseconds or less, and CLS is 0.1 or less. They are part of Google's page experience signals, but relevance still matters far more, so fix the pages that get traffic first.
Step by step
1. Find the failing pages in field data
Open Experience → Core Web Vitals in Search Console. It groups similar URLs and shows which metric fails for each group, separately for mobile and desktop. Groups usually map to templates: posts, product pages, the homepage. Fixing the template fixes the group. For a single URL, PageSpeed Insights shows the same real-user data at the top and a lab test below it.
2. Fix LCP: start with the server
Largest Contentful Paint cannot happen before the HTML arrives. If time to first byte is slow, fix that first with how to reduce TTFB. PageSpeed Insights names the LCP element for a page, which on most WordPress templates is the featured image or a hero banner.
3. Fix LCP: load the hero image early
- Do not lazy-load it. Recent WordPress versions skip lazy loading on the first large image and add
fetchpriority="high"to the image they judge to be the LCP element. Page builders, sliders and optimization plugins sometimes override this. Check the image tag in the page source forloading="lazy". - Serve the right size. A 3000px upload shown at 800px wastes bandwidth. WordPress creates smaller sizes and uses
srcset, as long as the theme outputs images through WordPress functions. - Use a modern format. WebP or AVIF files are usually much smaller than JPEG at the same quality.
- Avoid hero sliders. The first slide often waits for JavaScript before it appears.
4. Fix INP: cut JavaScript on the main thread
Interaction to Next Paint measures how quickly the page responds to taps, clicks and key presses. Slow INP almost always comes from JavaScript: heavy page builders, chat widgets, several analytics and ad tags, and plugins that load scripts on every page when they are needed on one. Remove what you do not use, load third-party tags after the page is interactive, and restrict plugin assets to the pages that need them. Hydrogen SEO itself adds no JavaScript to the front end.
5. Fix CLS: reserve space before content loads
Cumulative Layout Shift counts content jumping around while the page loads.
- Make sure every image and iframe has
widthandheightattributes. WordPress adds them for images inserted through the editor; custom theme code often forgets. - Give ad slots, embeds and cookie banners a fixed minimum height, or place banners over the content instead of pushing it down.
- Web fonts that swap in late can shift text. Preload the one or two fonts used above the fold and self-host them if you can.
6. Test changes in the lab first
Run PageSpeed Insights or Chrome's Lighthouse panel on staging before and after each change, on the mobile setting. Lab tests cannot measure INP directly, so use Total Blocking Time as the stand-in. Change one thing at a time so you know what helped. The Performance area of the Hydrogen SEO site health score also flags common problems such as oversized images.
7. Deploy, then validate in Search Console
Push the change live, open the failing group in the Core Web Vitals report and click Validate fix. Google collects 28 days of new field data before confirming. Low-traffic pages may not have enough visits for their own data, in which case they are judged with their group.
Where WordPress sites usually lose
| Problem | Metric it hurts |
|---|---|
| Uncached pages on slow hosting | LCP |
| Lazy-loaded or oversized hero images | LCP |
| Page builders and many third-party scripts | INP |
| Ads, embeds and banners without reserved space | CLS |
| Late-loading web fonts | CLS, LCP |
Check these before reaching for another optimization plugin. Stacking several plugins that all minify and defer scripts often breaks pages and makes results harder to trace.
Common mistakes
- Chasing a lab score of 100. Google uses field data. A page can pass Core Web Vitals with a lab score in the 70s.
- Testing only on desktop. Most sites fail on mobile first, where phones are slower and networks less reliable.
- Lazy-loading everything, including the image at the top. That is a common cause of slow LCP.
- Judging a fix after two days. Field data rolls over 28 days.
Common questions
What are good Core Web Vitals scores?
At the 75th percentile of real visits: LCP of 2.5 seconds or less, INP of 200 milliseconds or less, and CLS of 0.1 or less.
Do Core Web Vitals affect rankings?
They are part of Google's page experience signals, but relevance and content quality count for much more. Treat them as a way to keep visitors, with a small ranking benefit.
Why does PageSpeed Insights show different numbers each time?
The lab test runs on a simulated device and varies between runs. The field data at the top comes from real Chrome users over 28 days and is what Google uses.
Can an SEO plugin fix Core Web Vitals?
No. Performance comes from hosting, caching, the theme and scripts. The most an SEO plugin can do is avoid making it worse by adding front-end code.