Home / Blog / WordPress and Performance / Core Web Vitals for WordPress Site Owners

WordPress and Performance

Core Web Vitals for WordPress Site Owners

Core Web Vitals are Google’s way of measuring how a website feels to real visitors: loading speed, responsiveness and visual stability. They form part of Google’s page experience signals in search ranking — not the most important factor (relevance and content quality matter more), but when two pages are otherwise comparable, the faster, calmer one wins.

For WordPress site owners, the good news is that most Core Web Vitals problems have known, practical fixes. This guide explains what each metric measures, the thresholds Google uses, how the numbers are actually collected, and what to change on a WordPress site to improve them.

The Three Metrics and Their Thresholds

Google assesses each metric at the 75th percentile of real page loads, separately for mobile and desktop. That means three out of four visits must meet the “good” threshold. Averages are misleading: a page that loads in one second for half your visitors and five seconds for a third will fail, even though the average looks fine.

Metric What it measures Good Needs improvement Poor
LCP — Largest Contentful Paint How quickly the main content becomes visible 2.5 s or less 2.5–4.0 s Over 4.0 s
INP — Interaction to Next Paint How fast the page responds to clicks, taps and key presses 200 ms or less 200–500 ms Over 500 ms
CLS — Cumulative Layout Shift How much visible content moves unexpectedly while loading 0.1 or less 0.1–0.25 Over 0.25

A page passes only when all three metrics are good. There is no partial credit. If a metric has too few real visits to report, it is excluded from the assessment rather than counted as a failure — which is why a low-traffic page can show as passing with a metric marked unavailable.

INP replaced First Input Delay (FID) as the responsiveness metric in March 2024. FID measured only the first interaction; INP measures responsiveness across the whole visit, which makes it a much stricter and more realistic test — especially for WordPress sites with heavy JavaScript.

Field Data vs Lab Data: Know Which Number You Are Reading

This is the single most misunderstood part of Core Web Vitals. There are two kinds of measurement, and they answer different questions.

Field data comes from the Chrome User Experience Report (CrUX): anonymised timings from real Chrome users over a trailing 28-day window. This is the data behind the Core Web Vitals report in Search Console and the page experience signals in ranking. It is what counts.

Lab data is a single simulated load by Lighthouse — one device, one connection, one visit. It is reproducible and excellent for debugging, but it is not what your visitors experience. Lab data cannot measure INP at all, because nobody clicks anything during a lab load; Lighthouse uses Total Blocking Time as a stand-in proxy.

The rule of thumb: judge with field data, debug with lab data. If they disagree, trust the field. Field data covers 28 days, so a fix shipped yesterday will barely move the numbers for weeks — do not re-test daily and panic.

LCP: Make the Main Content Appear Faster

LCP is the metric holding most sites back. On a WordPress site, the LCP element is usually the hero image, a large heading, or a featured video thumbnail. Everything that delays it counts against you.

Server response time comes first. LCP cannot be fast if the server is slow to respond. Check Time to First Byte (TTFB); above roughly 800 ms deserves attention. Common causes are an underpowered hosting plan, an outdated PHP version, or an uncached database-heavy page. WordPress recommends PHP 8.3 or newer, and the supported PHP branches as of October 2026 are 8.2 through 8.5, with 8.2 losing security support on 31 December 2026. See our guide on diagnosing a slow WordPress site for the full process.

Optimise the LCP image itself. Preload it so the browser discovers it immediately, serve it in a modern format (WebP or AVIF), compress it, and size it to the dimensions the layout actually uses. Most importantly, do not lazy-load the hero image — lazy-loading delays exactly the element LCP measures. WordPress marks the first content image as high priority by default, but themes and page builders can override this, so verify with a test.

Remove render-blocking resources. CSS and JavaScript that must load before the page can paint will delay LCP. Defer non-critical JavaScript, remove unused CSS, and be selective about third-party scripts. A single slow font file or analytics tag can push LCP over the threshold on a mobile connection.

Use a CDN for static assets. Serving images, CSS and JavaScript from edge locations near your visitors cuts the network round trip. See CDN vs web hosting and when you need both.

INP: Make the Page Respond to Interaction

INP measures the delay between a visitor’s interaction — a click, tap or key press — and the next visual update. A page can load quickly and still feel sluggish if the main thread is busy running JavaScript when the visitor tries to interact.

The most common causes on WordPress sites are:

  • Too much JavaScript. Page builders, sliders, chat widgets, social feeds and tracking scripts all compete for the main thread. Audit what actually loads on each template and remove what the page does not need. A contact page does not need the slider library; a blog post does not need the shop’s scripts.
  • Long tasks. A single JavaScript task that runs for more than 50 ms blocks everything else. Breaking up long tasks and deferring non-essential work — code splitting, deferred loading, and yielding to the browser — are developer-level fixes, but choosing lighter plugins achieves much of the same result without code.
  • Heavy event handlers. Some plugins attach expensive handlers to common events such as scrolling or typing. If INP is poor mainly on pages with a particular plugin (a live search, a mega menu, a form builder), test the page with that plugin deactivated on staging.
  • Third-party scripts. Analytics, ads and embeds run code you do not control. Load them after the page is interactive where possible, and question each one: does this script earn its place on this page?

Unlike LCP, INP is hard to fix by throwing hardware at it — it is a code problem, and the practical lever for most site owners is reducing and deferring JavaScript.

CLS: Stop the Page From Jumping Around

CLS measures unexpected movement of visible content — the banner that pushes the article down just as you start reading, the button that jumps sideways a moment before you tap it. A CLS of 0.1 or less is good; above 0.25 is poor.

The fixes are mostly about reserving space before content loads:

  • Always set width and height attributes on images and videos. Without dimensions, the browser does not know how much space to reserve, and content below the image shifts when it finally loads. WordPress adds these attributes automatically in most cases, but images inserted by themes, builders or custom code may lack them.
  • Reserve space for ads, embeds and dynamic content. Any element that loads late and pushes content around — an ad slot, a social embed, a consent banner — should have a fixed-size container waiting for it.
  • Load web fonts carefully. A font that swaps in late changes text metrics and shifts lines. Use font-display: swap so text renders immediately in a fallback font, and preload the fonts your headings actually use. Better still, consider system fonts for body text.
  • Avoid inserting content above existing content. Banners, notifications and pop-ups that appear at the top of the page after load are the classic CLS offender. If something must appear, reserve its space in the layout from the start.
  • Be careful with animations. Animations that change layout (rather than transform or opacity) count as layout shift. Prefer transform and opacity for motion effects.

CLS is often the easiest metric to fix, and it is the one visitors feel most directly — nobody likes clicking the wrong button because the page moved.

A Practical Workflow for WordPress Owners

  1. Check Search Console first. The Core Web Vitals report groups your URLs by pass/fail and shows which metric is failing on which templates. Fix the worst template first — usually the one with the most traffic.
  2. Test the failing URLs in PageSpeed Insights. Read the field data, then use the lab diagnostics to find the specific causes.
  3. Fix one metric at a time. LCP is usually the biggest lever, CLS the quickest win, INP the deepest.
  4. Change, then wait. Field data moves on a 28-day window. Verify the fix in the lab immediately, then check the field data after a few weeks.
  5. Re-check after every major change. A new plugin, a theme update or a redesign can undo months of work in a day. Make Core Web Vitals part of your update routine — see how to update WordPress plugins and themes safely.

What About Hosting?

Hosting affects Core Web Vitals most through LCP: server response time, PHP version, caching and database performance all feed into it. A CDN helps with static assets, but it cannot fix a slow origin server or bloated JavaScript. If server response time is the bottleneck, the honest answer may be a better-suited hosting plan rather than another optimisation plugin. [TO BE CONFIRMED: which Offshore Hosting plans include the PHP versions, caching and resources relevant to Core Web Vitals performance.] Our WordPress hosting pages will carry the confirmed details.

Sources

  • Web Vitals — web.dev (Google Chrome team): https://web.dev/articles/vitals
  • PageSpeed Insights: https://pagespeed.web.dev/
  • How to fix Core Web Vitals: https://freako.io/blog/how-to-fix-core-web-vitals/
  • Core Web Vitals field data vs lab data: https://dev.to/josh99smith/core-web-vitals-field-data-vs-lab-data-why-a-lighthouse-100-can-still-fail-3o26
  • WordPress requirements: https://wordpress.org/about/requirements/

Sources

  • {‘title’: ‘Web Vitals — web.dev (Google Chrome team)’, ‘url’: ‘https://web.dev/articles/vitals’}
  • {‘title’: ‘PageSpeed Insights’, ‘url’: ‘https://pagespeed.web.dev/’}
  • {‘title’: ‘How to fix Core Web Vitals: thresholds and pass rates’, ‘url’: ‘https://freako.io/blog/how-to-fix-core-web-vitals/’}
  • {‘title’: ‘Core Web Vitals field data vs lab data’, ‘url’: ‘https://dev.to/josh99smith/core-web-vitals-field-data-vs-lab-data-why-a-lighthouse-100-can-still-fail-3o26’}
  • {‘title’: ‘WordPress requirements (PHP and MySQL/MariaDB versions)’, ‘url’: ‘https://wordpress.org/about/requirements/’}

← All guides · Knowledge Base

Related guides

WordPress and Performance

How to Back Up and Restore WordPress

A backup you have never restored is a hope, not a safety net. Learn what a complete WordPress backup contains, how often to run it, and how to test a restore before you need one.

Read the guide →