A slow website loses visitors before they read a word. Most speed problems come from a short list of causes, and most of them can be fixed without rebuilding anything. This guide walks through eight fixes in the order that usually pays off most, with a way to check that each one worked.

Start by measuring

Do not guess. Run your most important pages (the homepage and one or two key pages) through Google's PageSpeed Insights, and write down the results. Two kinds of numbers appear:

  • Field data, from real visitors over the previous weeks, shown only if the site has enough traffic.
  • Lab data, from a single simulated test, which is what you will use to check your changes right away.

Pay attention to Largest Contentful Paint (how quickly the main content appears), Interaction to Next Paint (how quickly the page reacts to taps and clicks) and Cumulative Layout Shift (how much the page jumps around while loading). Run the test two or three times, because results vary a little each time.

1. Shrink and resize your images

Images are usually the heaviest part of a page. A photo straight from a phone can be several megabytes, while a page only needs a few hundred kilobytes. Resize each image to the largest size it is actually displayed at, then compress it. Modern formats such as WebP and AVIF are typically much smaller than JPEG at similar quality, and all current browsers support WebP.

2. Load images only when they are needed

Add loading="lazy" to images that are below the first screen, so the browser fetches them as the visitor scrolls. Do not lazy-load the main image at the top of the page, because that delays the very thing you want to appear first.

3. Reserve space so the page does not jump

Give every image and video explicit width and height attributes (or a CSS aspect ratio). Without them the browser does not know how much room to leave, and text shifts down when the image arrives. That shifting is what Cumulative Layout Shift measures, and it is also annoying when you are about to tap a button.

4. Cut down on third-party scripts

Every analytics tool, chat widget, social button, font service and advertising tag is extra code from someone else's server. Each one costs time, and together they often outweigh your own site. Review what is loaded:

  • Remove anything you no longer use.
  • Load the rest with async or defer so they do not block the page from appearing.
  • Ask whether a widget needs to be on every page, or only on the pages where it helps.

This applies to our own tools as much as anyone's. If you add a chat widget, test the page before and after.

5. Turn on caching and compression

Caching lets a returning visitor reuse files they already downloaded, instead of fetching them again. Compression (gzip or Brotli) shrinks text files such as HTML, CSS and JavaScript as they travel. Most hosting providers support both, often through a setting or a few lines in the server configuration. Static files such as images, stylesheets and fonts can be cached for a long time, as long as you change their file names (or add a version number) when you update them.

6. Tidy up fonts

Web fonts are easy to overuse. Each font family and weight is another file to download. Limit yourself to one or two families and only the weights you actually use. Use font-display: swap so text shows immediately in a fallback font while the custom one loads, and connect early to the font host with a preconnect hint.

7. Minimise render-blocking CSS and JavaScript

Large stylesheets and scripts in the page head delay the first paint. Remove unused code, combine small files where it makes sense, and move scripts that are not needed immediately to the end of the page or load them with defer. If your site was built with a page builder or a theme, check whether it loads big libraries on every page for features you only use once.

8. Check your hosting and consider a CDN

If the server is slow to respond, no amount of front-end tuning will fix it. PageSpeed Insights reports server response time. A consistently high figure suggests an overloaded or under-powered plan, a missing server-side cache, or a database doing too much work per page. A content delivery network (CDN) stores copies of your files in many locations, so visitors download them from somewhere nearby, which helps most when your audience is spread across countries.

How to check that it worked

ChangeWhat to look for afterwards
Smaller imagesLower total page size and faster Largest Contentful Paint
Width and height on imagesLower Cumulative Layout Shift
Fewer or deferred scriptsBetter Interaction to Next Paint and less blocking time
Caching and compressionFaster repeat visits and smaller transfer size

Change one thing at a time where you can, and retest. If a change makes no difference, you have learned where the problem is not.

If you also run ads. Advertising scripts are among the heaviest third-party code a page can load. If you plan to show ads on your own site, keep the page lean first, so the ads are not the thing that pushes it over the line. Our website health checklist covers the other basics worth checking.

More guides

Want to see the tools behind these guides? Browse all SmartyApps tools or read the documentation.