Google's report card

WordPress vs Next.js Core Web Vitals: Who Passes the Field Test

Your developer sends a Lighthouse screenshot with a green 96. Search Console, the same week, files the mobile site under Poor. Both are telling the truth. They are just grading different visitors, and the gap between them is where the WordPress vs Next.js question gets decided.

October 9, 2026 · 11 min read

The short answer

Core Web Vitals grade real visits: LCP under 2.5 seconds, INP under 200 milliseconds and CLS under 0.1, at the 75th percentile. A tuned WordPress site can pass all three, but every plugin, builder module and script can pull it back under. Next.js sets image sizing, font loading and JavaScript weight in code, so passing is the default.

On this page
  1. Three numbers, graded on your slowest quarter of visitors
  2. Why a green Lighthouse score can sit beside a red Search Console report
  3. The mechanical reasons WordPress stacks slip on each metric
  4. Passing once is easy. Staying green is the real test
  5. What a Next.js build settles before the first visitor arrives
  6. Same three metrics, two kinds of plumbing
  7. Check your own field data before you pick a side
  8. Keeping a fast site fast after the developers leave

Three numbers, graded on your slowest quarter of visitors

Google's Core Web Vitals are three measurements of what a visitor feels: how fast the main content appears, how quickly the page answers a tap, and whether things jump around while it loads. The thresholds below come from Google's web.dev documentation, checked in October 2026. Interaction to Next Paint replaced First Input Delay as the responsiveness metric on March 12, 2024, so any guide still quoting FID is grading a test nobody sits anymore.

Core Web Vitals thresholds, per web.dev (75th percentile of page loads, mobile and desktop graded separately)
What it measuresGoodNeeds improvementPoor
LCP (Largest Contentful Paint)When the biggest image or text block in view finishes rendering2.5 s or lessOver 2.5 s up to 4.0 sOver 4.0 s
INP (Interaction to Next Paint)Delay between a click, tap or key press and the next frame200 ms or lessOver 200 ms up to 500 msOver 500 ms
CLS (Cumulative Layout Shift)How far visible content moves without the visitor asking0.1 or lessOver 0.1 up to 0.25Over 0.25

Two details make this harder than it looks. First, the grade is set at the 75th percentile, so a quarter of your visits can be slower than the number and you still pass, but no more than a quarter. Second, Search Console's Core Web Vitals report gives a group of similar URLs the status of its worst metric. Pass LCP and CLS, fail INP, and the whole group reads Poor.

Why a green Lighthouse score can sit beside a red Search Console report

Lighthouse is a lab test. It loads one page, once, on one simulated device and network, usually with an empty cache. Search Console uses field data from the Chrome UX Report: real Chrome users on their own phones, collected over a rolling 28 days. The lab is good for diagnosis because it is repeatable. The field is what Google grades, because it is what customers lived through.

  • The lab cannot measure INP. INP needs a person to tap something at a moment of their choosing. Lighthouse reports Total Blocking Time as a stand-in, which catches heavy scripts during load but misses the slow menu that opens ten seconds later.
  • The lab tests one URL. Your field report covers the home page, every blog post, every product page and the old landing page with the embedded video nobody remembers.
  • The lab visitor never moves. Real visitors scroll, which triggers lazy-loaded ads and late cookie banners that shift the page. A Lighthouse run that never scrolls never sees them.
  • The field remembers. A fix you ship today takes up to four weeks to fully replace the old visits in the 28-day window. Search Console's validation runs on the same clock.

PageSpeed Insights shows both at once: field data at the top when Google has enough visits for that URL or the whole origin, and a fresh lab run underneath. Read the top half first. Our PageSpeed Insights guide for WordPress themes walks through each panel, and the plain-language Core Web Vitals repair guide covers the fixes an owner can make without a developer.

The mechanical reasons WordPress stacks slip on each metric

WordPress itself is not the problem here, and neither is any single theme. The trouble is that each metric depends on decisions made by several vendors who never coordinate: the theme, the builder, the slider, the cookie plugin, the chat widget, the caching plugin that tries to tidy up after all of them. Here is where each metric usually breaks. Each one has its own page with the full diagnosis.

LCP: the hero image waits in line

The largest element is usually a hero image or headline. On a typical stack the browser must first download stylesheets from the theme, the builder and several plugins before it can paint anything, all render-blocking. If the hero is a CSS background inside a slider, the browser cannot discover it until that CSS arrives. On uncached pages, PHP and the database have to build the HTML before the first byte even leaves the server. WordPress 6.3 added fetchpriority="high" to the likely LCP image, which helps when the hero is an ordinary image WordPress renders. Builder backgrounds sit outside that logic. Full detail: WordPress vs Next.js LCP.

CLS: things arrive late and push

Layout shift comes from anything that takes up space after the first paint: a builder image module output without width and height, an announcement bar injected by JavaScript, a cookie banner that pushes content instead of floating over it, a web font that swaps in at a different size, an ad slot with no reserved height. Each comes from a different plugin, so no single setting fixes it. Full detail: WordPress vs Next.js CLS, and the fix-it page for theme layout shift.

INP: the main thread is booked

A tap feels slow when the browser is busy running someone else's JavaScript. Builders ship front-end scripts for their widgets, plugins attach their own handlers, many still lean on jQuery, and a tag manager loads marketing tags nobody audits. A mobile menu that takes half a second to open is usually not the menu's fault. It is waiting behind everything else. Full detail: WordPress vs Next.js INP.

Passing once is easy. Staying green is the real test

Credit where it is due. WordPress core has spent years on this: native lazy loading, smarter rules about which images not to lazy-load, priority hints for the probable LCP image. Several themes take it seriously too. Divi turns on Dynamic CSS, Critical CSS and on-demand JavaScript by default. WoodMart has a Preload LCP Image setting, and its own docs warn against lazy-loading the LCP image or stacking two lazy-load systems. Block themes like Twenty Twenty-Five bundle their fonts as local files. A careful owner can pass.

The catch is the calendar. The site passes in March. In May the marketing team adds a popup plugin. In July a builder update changes how images are output. In September someone embeds a review widget on every page. None of these changes is reckless, and none of them is tested against Core Web Vitals before it goes live, because WordPress updates and plugin installs happen on the production site. Twenty-eight days later the report turns amber, and the owner hires someone to find out which of the forty plugins did it.

A WordPress site passes Core Web Vitals the way a garden passes inspection: on the day you weeded it.

If you are staying on WordPress, start with a theme that gives you less to fight. Our list of the best WordPress themes for Core Web Vitals ranks them by what they ship by default, and our theme speed optimization service does the tuning when you would rather not.

The third option

Athena CMS, with AI agents on staff.

Not a theme and not a blank Next.js repo. The content system we put behind every custom site: plain fields, a real preview, every version kept, and AI agents that handle the chores a plugin only nags you about.

and 12 more agents. Two come with Athena; the rest are monthly add-ons.

The Athena CMS editor: plain fields with AI rewrite, a Publish box and revisions

What a Next.js build settles before the first visitor arrives

Next.js does not pass Core Web Vitals by magic. It passes because the decisions that usually break them are made once, in code, by one team, and checked in a build before anything goes live. The framework's own components push those decisions toward the right answer.

Images that hold their space

The next/image component needs dimensions for every image (read from local files automatically, set by hand for remote ones) or a sized container, which reserves the space and blocks the commonest source of CLS. Offscreen images lazy-load by default; the hero is marked to preload. Files are resized and served in modern formats.

Fonts with no trip to Google

next/font downloads web fonts at build time and serves them from your own domain, and the Next.js docs say it loads them with no layout shift. One less connection before first paint.

HTML that is already built

Pages can be prerendered at build time and refreshed on a schedule, then served from a CDN close to the visitor. No PHP, no database query, no cache to warm before the first byte.

Less JavaScript to wait behind

React Server Components render on the server and send HTML, not code, so most of a marketing page ships little or no JavaScript. Third-party scripts can be told to load during idle time instead of competing with taps.

Be fair about the limits. A developer can still ship a five-megabyte hero video, a carousel built as one giant client component, or a tag manager stuffed with tags. Next.js makes the fast choice the default; it does not stop a team from overriding it. The difference is that the override happens in a code review, where someone can say no, instead of in a plugin screen at 4 p.m. on a Friday. See WordPress vs Next.js speed for how this plays out on load time beyond the three metrics.

Same three metrics, two kinds of plumbing

Who controls each Core Web Vitals input on a WordPress stack and a Next.js build
WordPress theme + pluginsNext.js build
Server responsePHP and database per request unless a page cache hitPrerendered HTML from a CDN
Hero imageTheme, builder or slider decides how it loadsMarked to preload in the page template
Image dimensionsSet by core for content images; builders varyRequired by the image component
Web fontsTheme setting, plugin, or Google's serversSelf-hosted at build time by next/font
CSSStylesheets from theme, builder and each pluginOnly the styles the page uses
JavaScript per pageSum of every active plugin's front-end scriptsMostly server-rendered; scripts chosen per page
Third-party tagsAdded through plugins or a tag manager, liveAdded in code with a loading strategy
Catching regressionsAfter the fact, in the 28-day field dataBefore deploy, in the build and preview

Read down the WordPress column and the pattern is plain: every input has a different owner. Read down the Next.js column and every input has the same one. That is the whole argument, and it is why the same pattern shows up in every theme-by-theme comparison, from GeneratePress to Hello Elementor.

Check your own field data before you pick a side

Do not rebuild a site on the strength of one bad Lighthouse run. Do not keep a site on the strength of one good one either. Spend twenty minutes with real data first.

  1. 1

    Open the Core Web Vitals report in Search Console

    Look at mobile first. Note which metric fails and how many URLs sit in each group.

  2. 2

    Run your key templates through PageSpeed Insights

    Home page, a service page, a blog post, a product page. Read the field data at the top before the lab score.

  3. 3

    Match the failing metric to its mechanism

    LCP points at server time, CSS and the hero. CLS points at late-arriving elements. INP points at scripts. Use the sections above to find the likely culprit.

  4. 4

    Price the fix against the rebuild

    If one plugin or one setting explains it, tune. If the failure comes from the builder or the theme's architecture, the fix will not stay fixed.

Our free website health check gives you a quick read, and a free site audit gets a person to trace each failing metric to its cause. If the answer is a rebuild, WordPress to Next.js development is how we do it, keeping every URL and redirecting every old one. The move itself is mapped out under WordPress to Next.js.

Keeping a fast site fast after the developers leave

The old objection to Next.js is that editors can wreck performance just by uploading a 6,000-pixel photo. On the sites we build, Athena CMS removes that lever. Editors fill in plain fields, and the build decides how images and text become a page, so editing never adds scripts or stylesheets. Picasso, one of Athena's AI agents, makes sure images are described, sized and never missing. Argus watches for slow pages and flags them before the 28-day field data turns. Agents draft and flag; people approve.

That is the piece WordPress keeps outsourcing to plugins and the owner's memory. For the side-by-side with Athena in its own column, see WordPress vs Next.js vs Athena CMS. Ongoing care, including monitoring and tested updates, comes with our hosting and maintenance plans.

Questions people ask before they call

Yes. A lean theme, few plugins, a good host, properly sized images and disciplined third-party scripts will pass. The harder part is staying there, because each new plugin or builder update can move a metric without anyone testing it first. Our performance guides show where WordPress themes spend their load time.

No framework guarantees it. Next.js makes the fast choice the default: sized images, self-hosted fonts, prerendered HTML and less JavaScript. A team can still override those defaults with a heavy video or a pile of tracking tags. The difference is that changes go through a build and review before they reach visitors.

Field data covers a rolling 28 days, so a fix shows up gradually as old visits age out. When you click Validate Fix, Search Console monitors the affected URLs over a four-week window. Lab tools like PageSpeed Insights reflect the change at once, which is useful for confirming the fix works before the field data catches up.

Google says they are used by its ranking systems, and also that it will still rank the most relevant page even when its experience is poor. Treat them as a tiebreaker you control and a direct effect on how many visitors stay. Relevance and content still come first. More in WordPress vs Next.js for SEO.

We have not found a trustworthy public count to cite, so we will not guess. The mechanism points the way: heavy builders and stacked stylesheets drag on LCP, script-heavy pages on INP, and banners, ads and late widgets on CLS. Your own Search Console report answers the question for your site in a minute.

Keep reading

Free · No obligation

Find out which metric is costing you

Send us your address. We will read your field data, trace each failing metric to the plugin, theme or setting behind it, and tell you whether tuning will hold or a rebuild makes more sense.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote