WordPress performance
We make WordPress sites faster and show what each change did.
client.noMobile- LCP
- 0.8 s
- from 3.2 s
- TTFB
- 0.18 s
- from 1.2 s
- Page weight
- 1.1 MB
- from 4.1 MB
- Redis in front of the database−640 ms response
- Plugins cut from 19 to 4−410 KB JavaScript
- Images in WebP and AVIF−2.6 MB
- Ready-built pages in a page cache−230 ms response
Load time affectsvisitors and Google rankings
Google uses Core Web Vitals, a set of metrics for speed and stability, when it ranks pages. A slow site can therefore lose positions. Load time also affects visitors: according to Google's own figures, the chance of someone leaving rises by 32% when load time goes from one to three seconds.
client.noLoading dataFailed- LCPMain content shows3.2 sLimit 2.5 s22%20%58%
- INPResponse to clicks280 msLimit 200 ms41%45%14%
- CLSContent that moves0.15Limit 0.148%39%13%
A typical WordPress site on shared hosting takes 2–5 seconds to load. The plugins send JavaScript to visitors who never use it, and the theme makes database lookups that aren't needed. On top of that, the server starts the whole of WordPress again for every page view.
Which of these matters most varies from site to site, and it has to be measured. A new server setup often gives the biggest gain, together with a plugin clean-up.
- Response time after the rebuild in one of our client projects, down from 4.2 s
- 180ms
- Speed score in Google Lighthouse on the sites we run
- 98/100
- More visitors leave when load time goes from 1 to 3 seconds
- 32%
- Time the page doesn't respond to clicks, after the improvements
- 0ms
Common reasons a WordPress site is slow
WordPress itself is rarely the problem. More often the cause lies in the hosting and in plugins that have piled up over the years.
Too many plugins
Each plugin adds its own JavaScript, CSS and extra database queries. Twenty plugins can easily mean 400 KB of extra script and more than 50 database lookups, and the server has to do that work again for every page view.
A database that repeats the same work
The way WordPress stores data is flexible but gets slow as the amount of data grows. Without caching, the database does exactly the same lookups for every visitor.
Other sites on the same shared hosting
On shared hosting you share a server with hundreds of other websites. When one of them gets a lot of traffic, your site slows down. You also don't get to choose which PHP version the site runs on.
Caching in a plugin
A caching plugin eases the symptoms, but the cause stays. Caching works better when it's part of the server setup, with Redis in front of the database and finished pages kept ready.
A performance review shows what's slowing your site down and what each fix would gain.
A performance analysis showswhere the time goes
Before we change anything, we measure where the time goes on an ordinary page view: how long the server takes to build the page, how many database queries each plugin is responsible for, and how much JavaScript and CSS goes to the browser.
client.no/services/Measuring1,840 ms- Slider pluginLoads on every page
- Database · 112 queries48 duplicate queries
- WooCommerce
- WordPress core
- Theme
Usually a handful of things account for most of the time. It might be a plugin that runs the same lookups for every visitor, a slider that loads a large script on every page, or images many times larger than they are shown. That's where we start.
After each change we measure again with the same tools, so you can see what every change achieved.
What we do to speed things up
Caching with Redis
Answers from the database are kept ready in memory. Baskets and temporary data also come from Redis, so the database has far less to do.
Images in the right format
Images are created automatically in WebP and AVIF, which give smaller files, and at the right size for each screen. Mobile visitors don't have to download a 4 MB JPEG over a mobile connection.
The most important part loads first
We put the styling for the part of the page that shows first straight into the page. The rest loads afterwards, so content appears sooner.
Images load when needed
Images, embedded videos and other heavy elements only load as they get close to the screen. The first page load is lighter, and the page is ready to use sooner.
Files from the nearest server
Images, scripts and stylesheets are sent from the server nearest the visitor. When we publish changes, only the files that have changed are updated.
Database optimisation
First we find the slow database lookups. Then we add missing indexes and clear out old temporary data, measuring the effect of each change before moving on.
The same website, measured twice


Both measurements use the same content and the same tool. In between, the plugins were cut from 19 to 4 and the site was moved to FrankenPHP and Redis. Google has measured that longer load times lead to fewer conversions [1].
Core Web Vitals side by side
| Typical WordPress | Built by PXLGoogle's threshold | |
|---|---|---|
| LCP | 3.2s (poor) | 0.8s (good) |
| INP | 280ms (needs improvement) | 12ms (good) |
| CLS | 0.15 (needs improvement) | 0.01 (good) |
| TTFB | 1.2s | 0.18s |
| FCP | 2.8s | 0.6s |
| Total Blocking Time | 450ms | 0ms |
| Lighthouse score | 45–65 | 95–100 |
How we measure WordPress performance
Before we start, we set concrete targets. Afterwards we document what each change did to those same numbers.
Automatic measuring before publishing
Lighthouse is Google's tool for measuring performance. We run it automatically every time new code is about to be published. If the score drops below the limit we've set, publishing stops before the change reaches the site.
Measurements from real visits
Measurements in a test environment don't show how the site performs on real phones and networks. That's why we collect Core Web Vitals from actual visits and see how mobile, desktop and visitors from abroad differ.
Regular measurements around the clock
We run regular performance tests from several locations around the clock. The trends show if the site is gradually getting slower, long before anyone notices it in a browser.
Analysis of every page view
We look at database lookups and memory use for each page view. That lets us point to the exact file and line that's slowing the site down.
Signs it's worth looking at performance
Each point can have several explanations, but together they suggest your site is too slow:
If three or more of these sound familiar, look at your server setup before you install another plugin.
- Load time is over 2 seconds, even with a caching plugin installed
- Google Lighthouse gives the site a speed score below 70
- Google Search Console reports Core Web Vitals issues
- Visitors give up before the page has shown any content
- The site is noticeably slower on mobile than on desktop
- The site slows down during campaigns and traffic peaks
Send us your website address, and we'll give you a first assessment of what's slowing it down.
Frequently asked questions
What are Core Web Vitals?
Core Web Vitals are three metrics Google uses to measure how a page feels to visitors. LCP (Largest Contentful Paint) measures how quickly the main content appears. INP (Interaction to Next Paint) measures how quickly the page reacts when someone clicks or types. CLS (Cumulative Layout Shift) measures whether content moves around while the page loads. Google uses all three in its rankings.
Does a caching plugin help?
It helps a little, especially for visitors returning to a page they've loaded before. But a plugin on top of WordPress can't reach what makes the site slow. That's usually too many plugins, a database repeating the same work, an old PHP version and shared hosting with hundreds of other sites. The plugin eases the symptoms for a while, but the cause is still there.
What does Redis do for WordPress?
Redis is a database that keeps data in memory. WordPress asks the database for the same things many times on every page view, such as settings, menus and product data. With Redis as a cache, the answers come from memory instead of MySQL, and the database has far less to do. You notice it most on pages that have to be built for each visitor, such as the basket and pages for logged-in users.
How much faster can WordPress get?
For sites moving from shared hosting, we usually see response times 10–20 times faster after a rebuild. On one of our client projects, a page took 4.2 seconds on the old setup and now responds in about 180 milliseconds. Its Core Web Vitals went from red to green at the same time. How much your site improves depends on where it starts.
Does performance affect SEO rankings?
Yes, but it's one signal among many. Google has confirmed that Core Web Vitals are part of its ranking, so the metrics count directly. People also behave differently on a slow page: they give up sooner, stay for less time and open fewer pages. Google doesn't say exactly how it uses that behaviour, but a page people leave quickly brings in fewer enquiries and sales either way.
Can you optimise an existing WordPress site?
Yes. We start with a performance analysis that finds the bottlenecks, and then deal with them in order of priority. Some sites only need a plugin clean-up and sensible caching, while others need a new server setup. You find out what your site needs, and get a plan that starts with the changes that have the most effect.
What does performance optimisation cost?
A performance review with concrete recommendations costs from NOK 10,000. The cost of the work itself depends on how much needs doing, and a simple clean-up costs less than rebuilding the infrastructure. If you have an operations agreement with us, we keep an eye on speed all the time. That way we spot a site getting slower long before it becomes a problem.
What's the difference between TTFB, FCP and LCP?
They measure three points on the same timeline, from the moment the request is sent to the finished page. TTFB (Time to First Byte) shows when the server starts to respond. FCP (First Contentful Paint) is when the first content appears on screen. LCP (Largest Contentful Paint) is when the main content is in place and the page feels finished. All three affect the experience, but Google gives LCP the most weight.
A performance review of your WordPress site
Tell us a little about your website, and we'll reply with what we think can be improved and what it would cost.