Speed, measured fairly

WordPress vs Next.js Speed: Why the Same Design Loads Differently

Hand one mockup to two developers. One builds it on a popular theme and page builder; the other builds it in Next.js. The pages look identical. They do not load identically, and the reasons have little to do with talent and a lot to do with what each stack does by default.

October 9, 2026 · 9 min read

The short answer

Next.js is usually faster out of the box because pages are prerendered and served from a CDN, images and fonts are handled by the framework, and each page ships only the JavaScript it needs. A lean, well-cached WordPress site can come close for logged-out visitors. The gap widens with page builders, plugins, carts and logged-in traffic.

On this page
  1. One mockup, two builds, two very different page loads
  2. Where the milliseconds go, stage by stage
  3. Caching plugins rebuild a static site by hand
  4. The speed Next.js ships with before anyone tunes it
  5. How fast a well-tuned WordPress can get
  6. Run a speed test that would hold up in court
  7. How a Next.js site still ends up slow
  8. Deciding whether speed is worth a move

One mockup, two builds, two very different page loads

Say the design is a contractor's homepage: a hero photo, a headline, three service cards, a reviews strip, a quote form and a footer. On WordPress, the usual path is a theme, a page builder for the layout, a form plugin, a reviews widget, an SEO plugin and a caching plugin to make the rest bearable. In Next.js, a developer writes those same pieces as components in one project and the build turns the page into finished HTML before anyone visits.

When a visitor arrives at the WordPress version, the server starts PHP, loads WordPress and every active plugin, queries the database and lets the builder assemble the layout, unless a cache already holds a copy. When a visitor arrives at the Next.js version, a CDN hands over a file that already exists. Our guide to why WordPress is slow dissects the WordPress side layer by layer. This page compares the two and shows you how to test them without fooling yourself.

Speed is mostly decided by what a stack does when nobody is paying attention.

Where the milliseconds go, stage by stage

A page load is a relay. The server answers, the browser reads the HTML, fetches styles, fonts and scripts, paints the largest element and becomes ready for taps. Each stack wins and loses at different legs of the race.

The same page on a WordPress theme stack and on a Next.js build, stage by stage
WordPress theme stackNext.js build
Server response, cachedFast when a full-page cache has a copyFast: the page was prerendered at build time
Server response, uncachedPHP, every plugin and database queries run firstRare for content pages; refreshed in the background on a schedule
HTML weightBuilders wrap each element in several layers of markupMarkup is what the developer wrote, nothing more
CSSTheme, builder and plugin stylesheets, often site-wideStyles bundled with the components each route actually uses
JavaScriptjQuery on many stacks, plus each plugin's scriptsServer Components send no component code to the browser
FontsOften fetched from Google's servers unless a setting changes itnext/font self-hosts and reserves space for the fallback
ImagesDepends on upload habits and an image pluginnext/image resizes per screen and serves modern formats
Third-party scriptsAdded by plugins and widgets, usually in the headnext/script sets when each one loads
Logged-in, cart and search pagesUsually skip the page cache entirelyRendered on demand, with the rest of the site still static

Two rows explain most of the gap. The uncached response is where WordPress pays for its flexibility, and the JavaScript row is where page builders pay for theirs. Builder markup also feeds the slow interactions covered in WordPress vs Next.js INP, and a late hero image is the usual suspect in LCP comparisons.

Caching plugins rebuild a static site by hand

A full-page cache is the single biggest speed fix on WordPress, and it works by imitating Next.js. The first visitor triggers the PHP work; the plugin saves the resulting HTML; later visitors get the saved file. For a logged-out reader on a cached blog post, a tuned WordPress site can feel every bit as quick.

The trouble is the edges. The cache is emptied after edits and plugin updates, so the next visitor pays full price. Logged-in members, carts, checkouts and search results generally bypass it. Query strings from ads and email campaigns can create cache misses unless the rules account for them. And the cache does nothing about what the browser downloads after the HTML arrives.

So most caching plugins also minify, combine and defer scripts, and this is where speed work starts breaking things. OceanWP staff acknowledged its mobile menu failed with a speed plugin's Combine JS setting on. A Neve user traced an unresponsive iOS hamburger to the same kind of optimizer. Avada's docs warn that deferring jQuery can break scripts, and WoodMart's warn against double lazy-loading and lazy-loading the LCP image. The optimizer is guessing which scripts are safe to move. Sometimes it guesses wrong, and the owner finds out from a customer.

The speed Next.js ships with before anyone tunes it

Next.js is not magic. Its advantage is that the fast choice is the default choice, so a site starts quick and has to be made slow on purpose.

Pages built ahead of time

Static generation turns content pages into HTML at build time, served from a CDN close to the visitor. Incremental static regeneration refreshes them on a schedule without a full rebuild.

Less JavaScript in the browser

React Server Components render on the server and send HTML, not component code. Only interactive pieces, like a menu toggle or a quote form, ship JavaScript.

Images sized for the screen

next/image generates sizes for each screen, serves modern formats, lazy-loads below the fold and requires dimensions, which prevents layout jumps.

Fonts without the round trip

next/font downloads fonts at build time and serves them from your own domain, with a matched fallback so text does not shift when the real font arrives.

Scripts on a leash

next/script lets each third-party tag load after the page is interactive or when the browser is idle, decided per script in code.

Code split by page

Each route gets only the code it uses, and links prefetch the next page in the background so the click feels instant.

Those defaults are a large part of why our Core Web Vitals comparison leans the way it does, and why layout stability, covered in WordPress vs Next.js CLS, is easier to hold.

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

How fast a well-tuned WordPress can get

Fairness matters here, because WordPress at its best is quick. Core itself has improved: native lazy loading arrived in WordPress 5.5, a fetchpriority hint for the likely hero image in 6.3, and speculative loading of the next page in 6.8. A block theme like Twenty Twenty-Five bundles its fonts as local files, and Ollie registers per-block stylesheets that load only when that block appears. GeneratePress says a fresh install adds less than 10kb gzipped to a page.

Pair a lean theme with the block editor instead of a heavy builder, a host running current PHP with an object cache, a page cache at the host or CDN, careful images and few plugins, and a WordPress site can pass Core Web Vitals. The fastest WordPress themes and GeneratePress speed guide show what that looks like in practice.

Where it stalls is predictable. Pages that cannot be cached stay slow. Builder themes carry their framework on every page, which is why vendors push their own fixes: Elegant Themes says Divi's Dynamic CSS cut its stylesheet from 860kb to 54kb, and Avada ships a Performance Wizard. And tuned sites drift as plugins update and new widgets arrive. See Divi vs Next.js and Avada vs Next.js for how that plays out on builder stacks.

Run a speed test that would hold up in court

Most WordPress versus Next.js speed claims compare a bloated old site with a fresh new one. That proves nothing. A fair test controls everything except the stack.

  1. 1

    Compare the same page types

    Test a homepage, a service page, a blog post and, for stores, a product and cart page on both builds. One flattering URL is not a site.

  2. 2

    Match the content and the extras

    Same images, same copy and the same third-party scripts on both. A chat widget on one side and not the other decides the result before the test starts.

  3. 3

    Test cached and uncached

    Load each WordPress page once after purging the cache and again after warming it. Report both numbers, because real visitors get both.

  4. 4

    Use mobile and field data

    Run PageSpeed Insights on mobile several times and take the median, then check real-user data in Search Console's Core Web Vitals report once there is enough traffic.

  5. 5

    Include the awkward pages

    Test logged-in, cart and search pages where they exist. These are where caching stops helping.

  6. 6

    Retest after a month

    Run the same checks four weeks later. A WordPress site that was fast on day one and slower on day thirty is showing drift, not bad luck.

The WordPress theme speed test guide covers the tools in more depth, and our free website health check gives you a quick baseline before you start.

How a Next.js site still ends up slow

Good defaults do not stop bad decisions. A Next.js site gets slow the same way any site does, just with fewer excuses.

  • Everything marked as a client component, so the browser downloads and runs code the server could have rendered.
  • A tag manager stuffed with pixels that loads early on every page and blocks taps on phones.
  • An autoplaying hero video in place of an image, with no poster and no size limits.
  • Pages rendered on every request that could have been prerendered, usually because one small personalized element forced the whole page to be dynamic.
  • Plain img tags where next/image should have been, which brings back oversized photos and layout jumps.

This is why a framework choice is not a speed guarantee. Ask any developer, us included, how they handle each item on that list before you sign.

Deciding whether speed is worth a move

Start with the pages that earn money. If they are blog posts and service pages for logged-out visitors, a tuned WordPress stack may get close enough, and our theme speed optimization service or performance consulting is the cheaper path. If they are carts, member areas, quote flows or pages heavy with builder layouts, caching cannot reach them, and the gap stays open.

Then look at the cost of slowness in your own terms: calls, quote requests, abandoned carts. What a fast website is worth gives a way to think about it without invented numbers. If the math favors moving, WordPress to Next.js explains the process, migrating without losing SEO covers rankings, and our Next.js rebuild service keeps your URLs and redirects every old one. The WordPress vs Next.js hub puts speed alongside every other row of the decision.

Questions people ask before they call

No. A lean, well-cached WordPress page can be as quick for a logged-out visitor as a Next.js page, and a careless Next.js build can be slow. Next.js is faster by default because pages are prerendered, images and fonts are handled by the framework and less JavaScript ships. WordPress needs tuning to get there and upkeep to stay there.

For cached pages and logged-out visitors, it can get close on server response. It does not shrink the CSS and JavaScript the browser downloads, and it usually skips carts, checkouts, search and logged-in pages. Its script optimizations can also break menus and forms, so test every change on mobile before trusting it.

Mostly the framework. Prerendered pages, image and font handling and smaller JavaScript bundles travel with the code. A CDN-based host such as Vercel serves static pages close to visitors, which helps, but a well-built Next.js site stays fast on other CDN hosts too. Hosting matters more for WordPress, because every uncached page is built on the server.

Lab tests often hit a warm cache on a single page, while real visitors land on uncached pages, open menus and fill in forms. Heavy builder markup and plugin scripts slow those interactions on phones. Check Search Console's field data and the mobile speed guide for the real picture.

Yes, with a headless setup: WordPress stays as the editor and Next.js renders the public site, so visitors get prerendered pages. You still maintain WordPress behind the scenes. We weigh the trade in headless WordPress vs Next.js.

Keep reading

Free · No obligation

Get a fair speed comparison for your own site

Tell us which pages matter most. We will measure them properly, cached and uncached, and tell you whether tuning or a rebuild makes more sense.

Which of these sounds like you? (pick any)

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

CallGet a quote