"Your website is slow" is one of those pieces of feedback that is simultaneously true and useless. It does not tell you which part is slow, why, or whether fixing it is an afternoon's work or a rebuild.

In practice, slow websites are slow for a small number of reasons, and they repeat. What follows is those reasons in the order we see them, with an honest note on each about what it costs to fix and whether you can do it yourself.

First: find out where the time is going

There are two completely different kinds of slow, and the fix for one does nothing for the other.

Slow to start means you click the link and nothing happens for a beat — the browser sits there with a blank page while it waits for your server to say anything at all. That is a server problem: hosting, or the software your site runs on.

Slow to finish means the page starts appearing quickly but keeps loading for several more seconds, with images popping in and the layout jumping around. That is a payload problem: the page is asking the visitor to download too much.

You can tell them apart without any tools. Load your homepage and watch the first second. If the screen stays blank, you are in the first category. If something appears immediately and then keeps changing, you are in the second.

1. Your images are enormous

This is the single most common cause, and it is not close. A photo straight from a phone or a stock library is often three to eight megabytes and four thousand pixels wide. It is being displayed in a box six hundred pixels wide. The browser downloads the whole thing and then throws away 97% of it.

Five images like that on a homepage is twenty-odd megabytes. On a good office connection that is a second or two. On a phone with two bars, it is the reason somebody gave up and called your competitor.

How to tell: right-click any large image on your site, save it, and look at the file size. Anything over about 300KB for a normal page image is too big. Anything over a megabyte is a problem you can see from space.

The fix: resize images to roughly the size they are actually displayed at, then compress them. Modern formats — WebP and AVIF — do this far better than JPEG for the same visible quality. Most website platforms have a plugin or a built-in setting that does this automatically to everything you upload from now on; the existing images usually need one bulk pass.

Can you do it yourself? Yes. This is the one on the list most owners can genuinely handle.

2. Nothing is compressed

The text parts of a web page — the HTML, the stylesheets, the scripts — compress extremely well, often to a quarter of their original size. Servers can do this automatically, on the fly, at essentially no cost. It is one line of configuration.

And a surprising number of sites have it switched off, usually because nobody ever switched it on.

The fix: enable gzip or Brotli compression on the server. On most managed hosting this is a toggle in a control panel. On a site you control, it is a few lines in a configuration file. It is close to free and the improvement is immediate for every visitor.

Can you do it yourself? If your host has a toggle, yes. Otherwise this is a five-minute job for whoever manages your hosting.

3. Returning visitors download everything again

Your logo has not changed since 2019. Neither has your stylesheet, this week. But if your server does not tell browsers how long they may keep a copy, every visitor downloads all of it again on every single page view — including the person who has been clicking around your site for ten minutes.

This is the fix that does nothing for a first-time visitor and transforms the experience for everybody else, which is why it gets overlooked: the person testing the site is usually the person who has visited it most.

The fix: set cache lifetimes on static files. Images and fonts can safely be cached for a year, because if you change one you change its name. Stylesheets and scripts want something shorter so your changes actually reach people.

Can you do it yourself? Usually not, but it is a small job.

4. Too many third-party scripts

Analytics. A chat widget. A cookie banner. A booking system. A review carousel. Two remarketing pixels somebody added for a campaign that ended in 2023 and never removed.

Each of these is a request to somebody else's server, and your page is often waiting on all of them. Worse, you do not control how fast those servers are. A chat widget having a bad afternoon becomes your website having a bad afternoon.

How to tell: ask whoever built your site for a list of every third-party script on the homepage. If the list surprises you, that is the finding.

The fix: remove the ones you are not using — and there are almost always some. Load the survivors so they do not block the page from appearing. A chat widget that arrives two seconds after the page is readable is a chat widget nobody noticed was late.

Can you do it yourself? The removing, often yes. The loading order, no.

5. Your server is genuinely slow

If the browser sits on a blank screen for a second or more before anything happens, the time is going into your server thinking. On cheap shared hosting you are sharing a machine with hundreds of other sites, and you get whatever is left.

This is also what happens when a site has grown a lot of database work per page — a plugin that runs an expensive query on every load, a homepage assembling content from a dozen places.

The fix: either better hosting, or page caching so the server builds each page once and serves the saved copy to everyone after. Caching is usually the cheaper and larger win, and on most platforms it is a plugin.

Can you do it yourself? Installing a caching plugin, yes, carefully. Diagnosing why the server is slow, no.

6. The theme is doing far too much

Multipurpose themes — the ones sold with forty demo layouts — carry the code for all forty. Page builders add layers of markup around everything. The result is a page whose stylesheet is a megabyte because it describes designs your site does not use.

This is the least pleasant item on the list, because the honest fix is a rebuild on something lighter, and nobody wants to hear that about a site they paid for last year.

The realistic answer: get everything else on this list right first. A heavy theme with optimised images, compression and caching is perfectly usable. Plan the rebuild for when you were going to redesign anyway.

7. Fonts are blocking the text

A custom font has to be downloaded before the text drawn in it can appear. Done carelessly, the page sits there with its layout complete and no words in it, waiting on a font file from another domain.

The fix: serve fonts from your own domain, preload the one or two actually used at the top of the page, and tell the browser to show a fallback font immediately rather than waiting. The text appears instantly and swaps when the real font arrives.

Can you do it yourself? No, but it is a contained job.

What to do first

In order of return for effort:

  1. Compress your images. Biggest win, lowest cost, and you can start today.
  2. Turn on compression and caching. Two server settings, one small job, benefits every page.
  3. Audit your third-party scripts and delete the dead ones.
  4. Add page caching if your server is slow to respond.
  5. Fix your fonts.
  6. Consider the theme — last, and only if the first five did not get you there.

Most sites do not need all seven. Most sites need two or three, and the hard part is knowing which. That is exactly what a proper measurement tells you — not a score, but a list in priority order with the evidence attached.