What slows a website down
18 causes of a slow website, each with what happens and what to do about it. Just starting? Fix hosting and images first. Those two usually make the biggest difference.
Why it matters
- Over half of internet users expect a website to load within two seconds. After three seconds, a large part of them leave.
- Visitors who have to wait view fewer pages. The money you spent bringing them in is then wasted.
- A slow site is a bad experience, and that costs you your place in Google. A lower ranking means fewer visitors from search.
- The biggest effect: fewer conversions. Fewer quote requests, sales and completed contact forms.
How to measure
Test your site for free with one of these tools, and go over the results with your developer.
18 of 18 shown
-
Hosting and server
A server far from your visitors
What happens: A site on one server in one data center makes every request travel that whole distance and back.
- How to fix it
-
- Serve the site through a CDN, so visitors load it from a server close to them. For example Cloudflare, Amazon CloudFront or Akamai.
-
Hosting and server
No compression
What happens: Without it, your HTML, CSS and JavaScript travel at full size. Gzip can make pages up to 70% smaller.
- How to fix it
-
- Have your host turn on compression.
- Cloudflare compresses with Brotli, the successor to gzip.
-
Hosting and server
An old HTTP version
What happens: Over HTTP/1.1 a browser can, at worst, download only one file at a time. HTTP/2 lets it download several at once.
- How to fix it
-
- Ask your host to turn on HTTP/2. Almost every host runs it by now.
-
Hosting and server
No browser caching
What happens: Without it, a returning visitor downloads every file again.
- How to fix it
-
- Turn on browser caching, so files stay in the visitor’s browser.
- On WordPress, W3 Total Cache can do it.
- Tools
- W3 Total Cache
-
How the site is built
Every page is built on every visit
What happens: WordPress starts PHP, pulls content from the database, loads the theme and runs every plugin, for every visitor, every time. A caching plugin helps, but it’s a band-aid.
- How to fix it
-
- Build pages once, when you publish, and serve finished HTML.
- Pages that must stay current, like prices or stock, can render on the server and be cached at the edge of the network.
-
How the site is built
A pre-made theme
What happens: A theme sold to thousands of customers is full of features you’ll never switch on. Their JavaScript and CSS get loaded anyway.
- How to fix it
-
- Go custom-built, with only what the site needs.
-
How the site is built
Plugins on every page
What happens: Each plugin brings its own JavaScript, CSS and sometimes fonts, on every page, whether that page uses it or not.
- How to fix it
-
- Give JavaScript only to parts that need it, like a filter or a form, and only once they scroll into view.
- Ship only the CSS your pages actually use.
-
How the site is built
Bloated HTML
What happens: A page builder wraps every block in five extra
divs.- How to fix it
-
- Keep the HTML small. The homepage of this site is 47 kB of HTML and travels as less than 10 kB with Brotli.
-
Images
Oversized images
What happens: Images are the heaviest part of almost every site. Photos of several megabytes straight from the camera are common, and each one costs visitors time and data.
- How to spot it
- Compare each image’s width with the width it’s shown at. A 700-pixel layout needs at most 700 pixels, or 1400 for retina screens.
- How to fix it
-
- Resize images to what your design uses.
- Compress them. TinyPNG often cuts 50 to 70% without visible loss.
- Serve smaller versions to phones.
- Or keep only the originals and let the CDN make each size, in AVIF or WebP when the browser supports it.
- Tools
- TinyPNG
-
Images
Every image loads at once
What happens: On a page longer than the screen, the browser downloads images the visitor may never scroll to.
- How to fix it
-
- Load images lazily, only when the visitor scrolls down to them.
- Browsers now do this themselves with
loading="lazy".
-
Code and files
Too many files per page
What happens: Every video, image, script, font and stylesheet is a separate download. A homepage with 39 of them can take up to 10 seconds.
- How to spot it
- Run the page through Pingdom or WebPageTest and see how many files it loads.
- How to fix it
-
- Remove every file the page doesn’t need.
- Tools
- PingdomWebPageTest
-
Code and files
Unminified CSS and JavaScript in separate files
What happens: Spaces and indentation make code readable for developers but add file size. And ten CSS files are ten downloads.
- How to fix it
-
- Minify the code: strip spaces and line breaks.
- Combine your CSS into one file, and your JavaScript too.
- On WordPress, Autoptimize does both.
- Tools
- Autoptimize
-
Extras on the page
Image sliders
What happens: A slider loads several images plus its own JavaScript and CSS. That’s easily 5 to 10 extra files.
- How to fix it
-
- Drop the slider and show only the first slide. That’s usually the content that matters most.
-
Extras on the page
Fonts from another server
What happens: Every font is another file, and a font service like Google Fonts or Adobe Typekit is a detour to another server.
- How to fix it
-
- Use the standard fonts already on the device, if speed matters more to you than branding.
- Or host the fonts on your own domain. That also spares you the privacy hassle.
-
Links and redirects
Broken links
What happens: When a page or image is missing, the server takes longer to answer because it’s searching for a file that isn’t there.
- How to spot it
- Scan the site with Dead Link Checker, or look up the 404 errors in Google Analytics.
- How to fix it
-
- Add a redirect, fix the typo or restore the missing page or image.
- Tools
- Dead Link Checker
-
Links and redirects
Redirect chains
What happens: A team page that redirects to an about page, which a year later redirects to a company page, makes visitors go through both.
- How to fix it
-
- Point every old URL straight at its final page.
Everything on this page comes from three of my articles. They tell the full story behind each point: