A slow website
A slow site is never one fault, it is the sum of several. We start by measuring, because without that optimisation is guesswork - and usually speeds up what was already fast.
"The site feels slow" describes an impression, not a fault. Before you change anything, you need to know which part of loading is eating the time - otherwise it is easy to optimise what was already fast and never touch the real brake.
Measure first, do not reach for plugins
Open PageSpeed Insights and enter your address. You get two sets of numbers, and the difference matters:
- Field data - real measurements from Chrome users. This is what counts towards how your page is assessed.
- Lab data - a single Lighthouse run on a simulated connection. Useful for diagnosis, but it can drift away from what people actually experience.
Google assesses three metrics at the 75th percentile of page loads - the threshold has to be met by three quarters of visits, measured separately on mobile and desktop:
- LCP (largest contentful paint) - 2.5 seconds or less.
- INP (interaction to next paint) - 200 milliseconds or less. It replaced the earlier FID metric.
- CLS (cumulative layout shift) - 0.1 or less.
Separate a slow server from a heavy page
This is the most important split in the whole diagnosis. Look at the server response time - the moment the browser receives the first byte of the document. Lighthouse fails that audit above 600 milliseconds; the Core Web Vitals recommendation puts the line at 800 milliseconds.
If the server answers slowly, no amount of image compression will fix it - you are working on the wrong side. The usual causes:
- No response caching. The page is generated from scratch on every visit, even though the result is identical for most pages.
- Database queries. One visible delay is often several hundred queries per page - the classic N+1 problem, where related data is fetched inside a loop.
- No object cache. Redis or Memcached take repeated reads off the database.
- An overloaded or shared server. Response time swings with the neighbours' load, not with your code.
How to settle this quickly? Check the response time several times, at different hours, for the same page. A steadily high number points at your code or the database. A number that jumps from 200 ms to 2 seconds points at the server.
On the browser side
When the server answers fast and the page still drags, the time goes into what the browser has to download and run:
- Images. The most common single cause. A 4000 px photo shown in an 800 px container wastes bandwidth. Scale to the real display size, set
widthandheight, use WebP or AVIF, and addloading="lazy"below the fold. - Blocking scripts and stylesheets. Anything in
<head>withoutdeferorasyncholds back the first paint. - Third-party scripts. Chat widgets, maps, advertising pixels, A/B tests. Each one is a separate connection and code you do not control.
- Fonts. Without
font-display: swapthe text waits for the typeface to download.
Layout shifts
CLS is a different kind of problem - a page can be fast and still infuriating if the content moves out from under your finger. The culprits repeat: images and iframes without declared dimensions, cookie banners inserted above the content, and fonts that change line height when they swap in. Reserve space for anything that arrives late.
The order that pays off
Measure first and write the number down. Then fix the server response time, because it affects every page at once. Next take the images above the fold, then the third-party scripts, and leave the details for last. Measure again after each change - without that you do not know what helped, and field data updates with a delay, so you will not see the effect immediately.
Not working out?
If the problem stays, or you would rather not experiment on a live site, write to us and we will look at it. The diagnosis costs nothing.
Maintenance and developmentOther guides
Drupal 10 reaches end of life
Drupal 10 stops receiving security fixes on 9 December 2026. If your site runs on it, you have weeks left to decide - and the cost depends mostly on which version you are starting from.
Getting started with AI in your company
Most failed AI projects do not fall over on the technology, but on the choice of process. So we start with what is countable and repetitive, not with what looks most impressive.
An expired SSL certificate
Instead of your site, visitors get a red warning and have to click through "proceed anyway". Most of these cases are an expired certificate or a renewal that never finished.
Moving a website to new hosting
A migration goes well or badly depending on the order of the steps. The most expensive mistake is switching DNS before checking that the site works on the new server at all.
WordPress redirecting to spam sites
Visitors land on somebody else's site, and Google shows spam where your offer used to be. That is a break-in, not a fault - and cleaning the files alone will not hold.
The WordPress 500 error
HTTP 500 is the server saying something interrupted the code. On its own it tells you nothing - the whole job is getting to the log.
The WordPress white screen
Instead of your site you get blank white. It is one of the most common symptoms, and in most cases it can be defused in a quarter of an hour.