A slow WordPress site loses visitors and rankings before the page even finishes loading. The good news: most WordPress speed problems come down to a handful of fixable causes. Here is how to speed up a WordPress website, roughly in order of impact - starting with the one thing every other fix depends on.
Quick answer
To speed up a WordPress site, start with fast hosting (NVMe storage and enough CPU), run a current PHP 8 version, add page caching, convert images to WebP and lazy-load them, remove plugins you do not need, and serve static files through a CDN. An object cache such as Redis helps busy sites further.
Start with the foundation: your hosting
Speed work is capped by the server underneath it. On cheap, oversold shared hosting, hundreds of sites fight for the same CPU and disk, and no plugin can fix that. The single biggest speed upgrade for most sites is moving to a host that gives you real resources - NVMe storage, a modern PHP version and CPU that isn't shared 500 ways.
Two server-level things matter most: fast disk (NVMe SSD, not spinning drives) and enough CPU/RAM that your site isn't queuing behind noisy neighbours. If you've tuned everything else and pages are still slow, the host is the ceiling - see how to choose a web hosting provider for the full buying checklist.
Use a modern PHP version
WordPress runs on PHP, and each major PHP release is meaningfully faster than the last. The same site on PHP 8.3 serves far more requests per second than it did on PHP 7.4 - for free, just by switching. Check your version under Tools → Site Health and, if your host lets you choose, move to the newest PHP your plugins support.
Add page caching
By default WordPress rebuilds every page from the database on every single visit. Page caching saves a ready-made copy and serves that instead - often the single biggest front-end win. A caching plugin (WP Super Cache, W3 Total Cache, or LiteSpeed Cache if your host runs LiteSpeed) handles it. Many good hosts also cache at the server level, which is faster still.
Add object caching for database-heavy sites
Page caching speeds up what visitors see; object caching (Redis or Memcached) speeds up what WordPress itself has to do behind the scenes - repeated database queries get served from memory instead of hitting MySQL every time. This matters most on sites with logged-in users, WooCommerce stores, or membership areas where page caching alone can't be used for every request. If your host offers Redis or Memcached, turning it on is often a bigger win than yet another image tweak.
Compress and right-size your images
Images are usually the heaviest thing on a page. Three quick wins:
- Resize before upload - don't upload a 4000px photo to display it at 800px.
- Compress with a plugin like ShortPixel or Imagify, or export at around 80% quality.
- Serve modern formats like WebP, which are far smaller than JPEG or PNG at the same quality.
Also enable lazy loading so images below the fold only load when the visitor scrolls to them. Modern WordPress does this natively.
Cut down your plugins
Every active plugin adds code, database queries and sometimes its own CSS and JavaScript to every page. It's not the number that matters so much as what each one does - a single badly-written plugin can cost more than twenty lean ones. Deactivate anything you don't use, and be wary of "all-in-one" plugins that load on every page whether you need them or not.
Clean up and optimise the database
Years of post revisions, spam comments, transients and orphaned data quietly bloat the database, and a bloated database makes every single query - including cached ones underneath - slower to warm up. A plugin like WP-Optimize or a manual cleanup every few months keeps the database lean. If you ever see connection errors while doing this kind of maintenance, too many MySQL connections covers the common cause.
Reduce external requests and third-party scripts
Fonts loaded from a third party, embedded videos, ad scripts, tracking pixels and chat widgets each add their own connection and their own delay - often to servers you don't control and can't speed up. Audit what your theme and plugins load from other domains, and remove or self-host anything you don't truly need.
Use a CDN for distant visitors
A content delivery network keeps copies of your static files (images, CSS, JS) in data centres around the world, so a visitor in another country loads them from a nearby city instead of your origin server. If your audience is spread across regions, a CDN removes a lot of latency.
Measure, don't guess
Run your site through PageSpeed Insights or GTmetrix before and after each change. Fix the biggest offender, re-measure, repeat. Chasing a perfect score isn't the goal - a fast, stable load for real visitors is.
Most "slow WordPress" comes down to three things: cheap hosting, no caching, and huge images. Fix those and you've won most of the battle.
If you've done all of the above and pages still crawl, the host is almost always the ceiling - see shared vs VPS vs dedicated hosting to work out what you actually need, and how to migrate a WordPress site when you're ready to move.