Web & E-commerce

Why Your Website or Online Store Is Slow, and How to Speed It Up

Heavy images, too many plugins, and weak hosting are the usual culprits. Here is what to check first, before paying for a redesign.

By Umair Maqsood 5 min read
On this page
  1. Step 1: measure before you change anything
  2. The three numbers that matter
  3. Where the time usually goes
  4. Fix 1: images
  5. Fix 2: hosting and server response
  6. Fix 3: caching, compression, and a CDN
  7. Fix 4: plugins, scripts, and third parties
  8. Fix 5: fonts and CSS
  9. Fix 6: the database and the store
  10. Fix 7: mobile first
  11. Priorities: what to do first
  12. Step 2: test again
  13. Frequently asked questions

A slow website quietly costs visitors, search rankings, and sales. People leave pages that feel slow, search engines notice how real visitors experience your pages, and a slow checkout loses orders that were already decided. The fix is rarely a full redesign. It is usually a handful of causes, found by measuring first and then fixing the biggest ones in order.

This guide works for a company website, a blog, a WordPress site, or an online store such as WooCommerce. It covers how to measure, what the numbers mean, and the seven fixes that deliver most of the gain. If you want it done and tested for you, see our web and e-commerce support.

Step 1: measure before you change anything

Run your key pages through PageSpeed Insights or Lighthouse, on mobile as well as desktop, and write the results down. Test the pages that matter most: the home page, a product or service page, and the checkout if you sell online. There are two kinds of data, and they answer different questions:

  • Lab data is a controlled test you can repeat. It is best for finding and fixing problems.
  • Field data comes from real visitors, for example in the Core Web Vitals report in Google Search Console. It shows what people actually experience.

The three numbers that matter

Google's Core Web Vitals measure loading, responsiveness, and stability. Aim for the "good" range on all three.

Largest Contentful Paint (LCP) Good: 2.5 s or lessNeeds improvement: 2.5 to 4 sPoor: over 4 s Interaction to Next Paint (INP) Good: 200 ms or lessNeeds improvement: 200 to 500 msPoor: over 500 ms Cumulative Layout Shift (CLS) 0.1 or less0.1 to 0.25over 0.25
Core Web Vitals thresholds. The bars show the ranges, not how far each range extends.
  • LCP is how fast the main content appears.
  • INP is how quickly the page reacts to taps and clicks.
  • CLS is how much the page jumps around as it loads.

Where the time usually goes

Most slow pages share the same pattern: the server answers late, then too much heavy content is sent, and the browser has to run a lot of script before the page is usable.

Typical page weight, illustrative Images 45% Scripts 25% Fonts CSS HTML Images and scripts are usually the two biggest costs, which is why they come first in the list below. Exact numbers vary by site. Use your own test results to decide.
An illustration of the usual pattern, not a measurement of any one site.

Fix 1: images

Images are the most common reason a page is heavy.

  • Resize images to the size they are actually shown, instead of uploading camera originals.
  • Use modern formats such as WebP or AVIF where your platform supports them.
  • Lazy-load images below the first screen with loading="lazy", but not the main image at the top, which should load as soon as possible. Marking it with fetchpriority="high" helps.
  • Always set width and height so the layout does not jump while images load.

Fix 2: hosting and server response

If the server is slow to respond, no front-end tweak can hide it. Look at the time to first byte (TTFB) in your test results, and aim for about 0.8 seconds or less. Use a current PHP version with OPcache enabled, on a plan that is not starved of CPU and memory. For stores and busy sites, server-side page caching and an object cache such as Redis make a large difference.

Fix 3: caching, compression, and a CDN

  • Turn on page caching for pages that are the same for everyone.
  • Never cache the cart, checkout, or account pages, because they are personal.
  • Enable compression (gzip or Brotli) and long browser caching for static files that never change under the same name.
  • Consider a CDN so images and scripts are served from a location close to the visitor.
# Example header for versioned static files (CSS, JS, fonts)
Cache-Control: public, max-age=31536000, immutable

Fix 4: plugins, scripts, and third parties

Every plugin, tracking script, chat widget, and embedded video adds work for the visitor's phone. Remove what you do not use, replace heavy plugins with lighter ones, and load third-party scripts late with defer or after the page is interactive. Check which scripts run on every page: a plugin you only need on the contact page should not load on the product page.

Fix 5: fonts and CSS

  • Use as few font families and weights as you can, and serve them from your own domain where possible.
  • Use font-display: swap so text is visible while the font loads.
  • Remove unused CSS from themes and page builders, which often ship far more than a page uses.

Fix 6: the database and the store

On WordPress and WooCommerce sites, old revisions, expired transients, and leftover plugin data pile up over time. Clean them carefully, with a backup first. For stores, watch for cart-related requests that run on every page, product pages that run many database queries, and search or filter features that scan the whole catalogue. These are common reasons a store feels slow only when it gets busy.

Fix 7: mobile first

Most visitors arrive on a phone with a slower processor and a weaker connection than your office computer. Test on a mid-range phone and a throttled connection, keep the first screen light, and make buttons easy to tap. Mobile results are usually the ones that decide your rankings and your sales.

Priorities: what to do first

Symptom in the testLikely causeStart here
High TTFBSlow hosting, no cachingPage cache, PHP version, hosting plan
Slow LCPLarge hero image, slow serverResize and compress the main image, preload it
Poor INPToo much JavaScriptRemove plugins and third-party scripts
High CLSImages without size, late-loading bannersSet dimensions, reserve space
Slow only at checkoutUncached, query-heavy pagesObject cache, database, payment plugins

Step 2: test again

Re-run the same tests and compare them with your first numbers. Keep what helped, undo what did not, and check that the checkout still works end to end. A fast site that cannot take an order is not a fix. Then retest after every major plugin or theme update, because speed tends to slip back unnoticed.

Work from the biggest cause down. Images and hosting usually account for most of the gain. Small tweaks matter only after those are sorted. Keep the site healthy afterwards with the monthly maintenance checklist, which includes updates, backups, and renewals.

Frequently asked questions

Does page speed affect search rankings?

Yes. Page experience, including Core Web Vitals, is one of many signals, and slow pages also lose visitors and sales regardless of ranking, so it is worth fixing either way.

What is a good PageSpeed score?

Aim for green scores on mobile, but focus on the Core Web Vitals and real-visitor data rather than one number, which can change between tests.

Why is my store slow only at checkout?

Cart and checkout pages cannot be cached like other pages, so they depend on server speed, database queries, and payment or shipping plugins. An object cache and fewer plugins usually help most.

Will a CDN fix a slow website?

A CDN delivers images and scripts faster to distant visitors, but it cannot fix a slow server or heavy pages, so fix those first.

Share this guide

Need help with Web & E-commerce?

Send a message, describe what is going on, and get a clear price before any work starts.