A method, not a score
WordPress Theme Speed Test: How to Test a Theme Fairly
Run PageSpeed Insights on the same page twice before lunch and you can get two different scores. Nothing changed but the weather on the network. A theme speed test that cannot survive that wobble is a coin toss with a chart attached, so here is one that can.
October 11, 2026 · 9 min read
The short answer
To test WordPress theme speed fairly, build the same real page in each theme on the same host, with non-essential plugins off and caching set the same way. Run Lighthouse or PageSpeed Insights at least three times per theme on mobile, keep the median, and record requests, transfer size and LCP element. Confirm with field data weeks later.
On this page
- Why most theme speed tests prove nothing
- Lab data and field data answer different questions
- Build a test bench the theme cannot cheat on
- Eight steps from staging copy to verdict
- The spreadsheet columns worth keeping
- Pitfalls that flatter a theme
- Reading the result without kidding yourself
- When the bench says the platform is the ceiling
Why most theme speed tests prove nothing
The typical theme comparison goes like this. Someone installs five themes, imports each vendor's demo, runs one test per theme and publishes a league table. Each demo has different images, different sections and a different set of plugins. The test ran once, from one location, at one moment. What it measured was the demos, not the themes, and mostly the luck of the run.
A fair test has three properties. It holds everything constant except the theme. It repeats each measurement enough times to see the noise. And it records the causes, the files and bytes, not just the score. Get those right and a modest staging site will tell you more than any published shootout. Get them wrong and you will switch themes for a difference that was never there. The WordPress performance hub explains what a theme can and cannot affect; this page is the measuring tape.
If the difference between two themes is smaller than the difference between two runs, there is no difference.
Lab data and field data answer different questions
PageSpeed Insights shows two kinds of numbers on one screen, and mixing them up causes most of the confusion we see. The lab section is a single Lighthouse load on a simulated phone with a throttled connection. The field section, when your site has enough traffic, is a summary of real Chrome visits over the previous 28 days, judged at the 75th percentile.
| Lab (Lighthouse) | Field (Chrome UX Report) | |
|---|---|---|
| Who loads the page | One simulated mobile device | Your real visitors on their own devices |
| Responsiveness metric | Total Blocking Time, a stand-in | Interaction to Next Paint, measured |
| When it changes | Instantly, on every run | Slowly, over a rolling 28 days |
| Run-to-run noise | Noticeable; repeat and take the median | Low, because it averages many visits |
| Works on staging | Yes | No; staging has no real traffic |
| Use it for | Comparing themes and settings | Confirming the change helped real people |
For comparing themes, the lab is the only tool that works, because a staging copy has no visitors. Field data is the verdict that counts with Google, and it arrives weeks after you ship. The PageSpeed Insights guide for themes walks through each panel of the report.
Build a test bench the theme cannot cheat on
Every variable you leave loose becomes a possible explanation for the result. Lock down as many as you can before the first run.
Hold these constant
- The host, the server plan and the PHP version
- The page content: same words, same images at the same sizes
- The plugin list, ideally cut to the essentials
- Caching state, either off for every theme or on for every theme
- The test tool, its version, its device setting and its location
Change only these
- The active theme
- That theme's own performance settings, tested off and then on
- Later, one plugin or builder at a time, added back to see its cost
Content is the hard part. A page built with core blocks renders under any theme, so it travels well between Twenty Twenty-Five, Kadence or Astra. A Divi or Elementor layout does not. To compare builder themes, rebuild the same page by hand in each builder and accept that you are now testing builder plus theme together, which is usually the honest question anyway.
Eight steps from staging copy to verdict
- 1
Clone the live site to staging
Use the same host and PHP version as production. Block search engines on the copy, and note the date of the clone.
- 2
Cut plugins to the essentials
Deactivate everything the test page does not need: analytics, chat, sliders, popups, security scanners. Write the remaining list down. You will add the others back later, one at a time.
- 3
Measure a default theme first
Activate Twenty Twenty-Five and test the page. This is your floor: roughly what WordPress, your host and your content cost before any theme choices.
- 4
Build one realistic test page
Include a header with the real menu, a hero image, a few paragraphs, a form and a footer. Keep it identical across themes, or rebuild it as closely as possible in each builder.
- 5
Warm the page before measuring
Load it twice in a logged-out browser so server and CDN caches are filled, then start the clock. Run a separate cold test if first visits matter to you.
- 6
Run the lab test five times per theme
Use the mobile setting, and test from the same location every time. Keep the median of LCP, CLS and Total Blocking Time, not the best run.
- 7
Open the network waterfall
Count requests, stylesheets, scripts and font files, and total the bytes. Filter by /wp-content/themes/ to see the theme's own share, and check the Coverage tab in Chrome DevTools for unused CSS and JavaScript.
- 8
Add the stack back, then watch the field
Reactivate plugins and the builder one at a time and measure each. After launch, check field data in PageSpeed Insights and Search Console over the next four weeks.
Step three surprises people. If the default theme and your preferred theme come out close, the theme was never the problem, and the time belongs on images, plugins or hosting. Our list of the fastest WordPress themes helps you pick sensible candidates before you start.
The spreadsheet columns worth keeping
Scores are summaries. The causes sit underneath, and they hold steadier between runs. A record like this makes the next test comparable with the last, even months apart, and it gives a developer something to work with if you hand the problem over.
- Context: date and time, theme name and version, builder and version, the plugin list, caching on or off, and the tool, device setting and test location.
- Timings: median LCP, CLS and Total Blocking Time across the runs, plus server response time (TTFB), which tells you whether the wait starts before the theme is involved.
- The LCP element: which element Lighthouse named. If it is the hero image, check it is not lazy-loaded; if it is a heading, fonts and CSS are the likelier delay.
- Weight: total requests, total transferred bytes, and how many of each come from the theme folder, the builder and other plugins.
- Render-blocking files: the stylesheets and scripts Lighthouse flags, with the folder each one lives in.
- Fonts: how many font files load and whether any come from fonts.gstatic.com instead of your own domain.
Keep notes on settings too. When you switch on a theme's local fonts option or its CSS file mode, record it as a separate row. The per-theme speed pages list those switches by name, for example Astra's, Kadence's and Divi's.
Pitfalls that flatter a theme
Testing the vendor's demo
Demo sites run on the vendor's own hosting with caching and a CDN already tuned, and with content chosen to look good. They tell you how the demo performs on the demo's server. Build your page on your host instead.
Caching that hides the theme
A full-page cache hands out stored HTML, so PHP time vanishes from the result. That is fine for the final number but hides a heavy theme's server cost. Test with caching off once, on once, and label both.
Testing while logged in
Logged-in requests usually skip the page cache and add the admin bar's files. Always test logged out, in a private window, with browser extensions off.
CDN edge misses
The first request to each CDN location fetches from your server; later ones are served from the edge. Test from one location consistently, and warm it first, or the first theme tested loses.
Cold starts
After a cache purge, deploy or idle period, the server's opcode and object caches start empty and the first visit is slow. Note whether a run was cold, and never compare a cold run with a warm one.
Third-party noise
Analytics, chat, maps and embedded video load from other servers whose speed changes minute to minute. Remove them for the theme comparison, then add them back and measure their cost separately.
One more trap is self-inflicted: a theme or plugin lazy-loading the hero image. It makes the lab report look lighter while delaying the largest paint. If LCP is your weak number, read fixing slow LCP. If the layout jumps after load, read theme layout shift.
Reading the result without kidding yourself
Look at the spread before you look at the winner. Say five runs of one theme put LCP somewhere between 2.1 and 2.6 seconds, and another theme's median sits 0.1 seconds lower. That is noise, not a result. A real difference shows up as fewer files, fewer bytes and a different LCP element, and then the timings follow.
If the theme does turn out to be the heavy part, check its speed page before replacing it. Many themes hide the fix behind a toggle: local fonts, CSS file output, critical CSS. If the builder is the weight, a lighter theme will not rescue it. And if speed only fell after an update, start with slow after a theme update. Phones deserve their own pass, covered in theme speed on mobile.
When the bench says the platform is the ceiling
Sometimes the honest outcome of a careful test is that every candidate theme lands in the same place, because the floor is set by PHP, the builder and the plugin stack. That is worth knowing before you spend money on a redesign that will not move the numbers. WordPress vs Next.js speed and Core Web Vitals compared explain why a prerendered Next.js page starts from a lower floor, and where it costs more.
If you would rather not run the test yourself, our WordPress performance consulting does exactly this on a staging copy of your site, and theme speed optimization applies the fixes the test points to. A free site audit is the low-commitment way to start.
Questions people ask before they call
Build the same real page under each theme on a staging copy of your site, with the same host, content and plugins. Test logged out, on the mobile setting, five times per theme, and keep the median. Record requests and bytes from the network panel as well as the score. Our fastest WordPress themes guide suggests which themes to shortlist.
Only as a description of the demo. Vendor demos run on hosting the vendor chose and tuned, with caching and a CDN in place and content selected to show off the design. Your site will have different images, plugins and hosting. Treat demo scores the way you would treat a car's brochure mileage, then measure your own page.
Both, and label each. Caching off shows how much server work the theme and plugins cause on uncached visits, such as logged-in users and first requests after a purge. Caching on shows what most visitors get. Compare themes under the same setting. The WordPress speed optimization page covers choosing a single caching layer.
They measure different things. The lab runs one simulated load, while field data summarizes real Chrome visitors over 28 days at the 75th percentile, on their devices and networks. Field data also trails your changes by weeks. Use the lab to compare themes and settings, and the field to confirm the change helped. See how fast a website should load.
Five per theme per setting is a sensible minimum for comparing options, and keep the median rather than the best run. If two themes' ranges overlap, treat them as equal and decide on features, price or editing comfort instead. A single run is a sample of one and should not decide anything.
Keep reading
- Reading the reportWordPress Theme PageSpeed Insights Score: How to Read It and When to Stop Chasing 100Read a WordPress theme's PageSpeed Insights report properly: field data vs lab score, why runs vary, what each finding means, and when 100 is waste.
- LCP, CLS, INP by designBest WordPress Themes for Core Web Vitals: The Traits That PassWhich WordPress themes help LCP, CLS and INP, judged by real traits: local fonts, critical CSS, jQuery-free scripts and LCP preloading. No made-up scores.
- Largest Contentful PaintWordPress LCP vs Next.js: Where the Hero Image Loses Its SecondsWordPress LCP vs Next.js, split into Google's four sub-parts: where PHP, sliders, lazy heroes and blocking CSS cost time, and the fixes that still work.
- No stopwatch theaterThe Fastest WordPress Themes, Ranked by What They Send to the BrowserThe fastest WordPress themes, ranked by how they deliver CSS, JavaScript and fonts, not by invented scores. All 21 themes, plus a way to test your own.
- Rankings, minus the mythsBest WordPress Themes for SEO: What a Theme Really ControlsWhat a WordPress theme controls for SEO (markup, headings, schema, breadcrumbs, speed, meta tags), what it does not, and which themes keep it cleanest.
- Weight, not adjectivesLightweight WordPress Themes: What Light Means and How to Stay ThereLightweight WordPress themes judged by what a browser downloads: page weight, requests, DOM size and CSS/JS bytes, and how to keep a light theme light.
- Everything in WordPress PerformanceSee the section
Get a fair test of your own theme
Tell us the site and the themes you are weighing. We will run the comparison on a staging copy and send you the numbers, the files behind them and what we would change.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.