Why is my website slow?
Most slow business websites are slow for the same handful of reasons, and most of them have nothing to do with the server. Here's how to find which ones apply to your site and what fixes each one.
First, test it properly
Open Google's PageSpeed Insights, paste in your home page and choose the mobile result. The mobile test simulates a mid-range phone on a slower connection, which is closer to how many of your visitors see the site than your office computer is. Note the performance score and the "Largest Contentful Paint" time, then look at the list of opportunities underneath.
Test your most important pages too, not just the home page: a product, a room, a course or a package page.
Cause 1: photos far bigger than the screen
A photo straight from a camera or phone can be several megabytes and thousands of pixels wide, shown in a space a few hundred pixels wide. It's the most common cause I find. The fix is to resize each image to the sizes screens actually display, save it in a modern format like WebP or AVIF, and let the browser pick the right size.
Cause 2: sliders and background videos
A home page slider downloads several large photos and the code to rotate them, even though most visitors only see the first. A background video can be heavier still. One strong image does the same job faster.
Cause 3: too many scripts
Chat widgets, social feeds, embedded maps, video players, several analytics tools and tracking pixels each add code the phone must download and run before the page responds. Remove what nobody uses, and load maps and videos only when someone taps them.
Cause 4: heavy themes and page builders
Some WordPress themes and page builders load large amounts of code on every page, whether it's used or not. Plugins add more. Switching off unused plugins helps; sometimes a lighter theme or a rebuild is the only real fix.
Cause 5: no caching, or slow hosting
Without caching, a WordPress page may be built from scratch for every visitor. Page caching and a CDN like Cloudflare, which serves files from near the visitor, fix most of that. Very cheap shared hosting can still be slow under load. See my page on Cloudflare CDN setup.
Cause 6: fonts and layout shifts
Several web fonts in many weights add up, and text that jumps when fonts load makes the page feel broken. Use fewer fonts, host them yourself and tell the browser how to display them while they load.
What to fix first
Images first, because they're usually the biggest win and the safest change. Then scripts. Then caching. Test again after each step, so you know what made the difference. My guide to Core Web Vitals explains the scores, and my speed optimisation service does all of this with before and after reports. If you'd rather I just test it, use the speed check.