TL;DR
- To speed up WordPress, work through six areas: hosting, caching, images, third-party scripts, code and compression, and testing.
- Start with hosting and caching, because every other fix builds on them.
- Compress and resize images, load them lazily, and remove scripts you don’t need.
- Measure with Google PageSpeed Insights before and after, and change one thing at a time so you know what actually helped.
Intro
Step 1: Choose Hosting That Can Keep Up
Pick the Right Type of Hosting
| Type | What it is | Best for |
|---|---|---|
| Shared hosting | Your site shares one server’s resources with many other sites | Small, low-traffic sites on a tight budget |
| Managed WordPress hosting | Servers tuned for WordPress, with caching and updates handled for you | Business sites that need speed without server work |
| VPS or cloud hosting | A dedicated slice of a server that you or your developer manage | Larger or custom setups with technical support |
What to Check Before You Choose a Host
- PHP 8.3 or newer. WordPress.org recommends PHP 8.3 or greater. Older versions have reached end of life and can leave your site exposed to security problems.
- Clear caching setup. Ask which caching the host already provides, so you don’t run two layers that conflict with each other.
- A server near your visitors. Pick a data center in or near your main market. For a US audience, that means a US location.
- HTTPS included. WordPress.org lists HTTPS support as a baseline, and most hosts include a free SSL certificate. If yours doesn’t, see our guide on how to add SSL to WordPress.
- Clear resource limits. Know the CPU, memory and simultaneous-request limits on your plan, so a traffic spike doesn’t take the site down.
- Support that can investigate server problems, not just reset passwords.
A CDN Is Not a Replacement for Good Hosting
A CDN stores cached copies of your files on servers around the world, so visitors get them from a nearby location. It doesn’t host your site and can’t replace proper hosting, so treat it as an add-on, not a fix for a slow server.
How to Tell If Your Hosting Is the Problem
Check your Time to First Byte (TTFB), which is the time before the first byte of your page arrives. Google’s web.dev gives 0.8 seconds or less as a rough guide for a good result, and anything over 1.8 seconds as poor. You can measure it in the Network panel of Chrome DevTools or with WebPageTest.
If TTFB stays high with caching turned on, look at the server first, or confirm the cache is actually working. Our guide on how to reduce WordPress server response time covers the fixes.
Step 2: Use a Caching Plugin
We run WP Rocket on our own site, so it’s the plugin we know best.
Use Only One Caching Plugin
Two caching plugins on the same site fight each other. The WP Fastest Cache and W3 Total Cache pages both tell you to deactivate any other caching plugin first. Also check what your host already caches (see Step 1), so you don’t stack two layers.
Caching Plugins Compared
| Plugin | Cost | Best for | Worth knowing |
|---|---|---|---|
| WP Rocket | Paid, 14-day free trial | Beginners who want results without technical setup | Most optimizations are applied automatically |
| LiteSpeed Cache | Free | Sites on LiteSpeed hosting | The page cache needs a LiteSpeed server, OpenLiteSpeed or QUIC.cloud CDN. Its other optimization features work on any server |
| WP Super Cache | Free | Simple, low-maintenance sites | Made by Automattic. “Simple” mode is the recommended setup |
| W3 Total Cache | Free, with a Pro version | Advanced users who want control over page, object and database caching | Many settings, and minify options may need trial and error |
| WP Fastest Cache | Free, with a premium version | Easy setup with built-in minification | The free version covers page caching, HTML/CSS minify, Gzip and browser caching. JS minify and lazy load are premium |
| Cache Enabler | Free | Lightweight static page caching | Supports Brotli and Gzip pre-compression. WebP needs the Optimus service |
How to Set Up Caching Without Breaking Your Site
1. Install one plugin and turn on page caching.
2. Turn on one optimization at a time, such as minify or delayed scripts. Some of them can break layouts or functions on certain themes.
3. After each change, clear the cache and check key pages while logged out: menus, forms and checkout.
4. Re-run PageSpeed Insights to confirm the change helped (see Step 6).
Step 3: Optimize Your Images
Resize Before You Upload
Pick the Right Format
Use WebP for most photos and graphics, JPEG as the universal fallback, PNG for logos that need transparency, and SVG for icons. AVIF can shrink files further where browsers support it. For a full format comparison, see our image optimization guide.
Compress Automatically with a Plugin
| Plugin | Free plan | WebP and AVIF | Worth knowing |
|---|---|---|---|
| Smush | Compression (lossy and lossless) and lazy loading | Pro only | The free version skips images over 5 MB |
| Imagify | 20 MB of images per month, about 200 images | Included in the free plan | Keeps backups of your originals by default |
| ShortPixel | 100 credits per month | Yes | Each thumbnail uses one credit, so one upload can cost several |
Lazy Load Images, but Not the First One
Step 4: Cut Third-Party Scripts and Slow Background Tasks
Find and Trim Third-Party Scripts
A third-party script is any script loaded from a domain other than your own: analytics, ads, chat widgets, social buttons, A/B testing tools and tracking pixels. Third-party scripts can significantly affect page load performance, and they are easy to forget once they’re installed.
- Remove what you no longer use. Old tracking pixels, a second analytics tag, a chat widget nobody answers.
- Load the rest later. Scripts can be deferred so they don’t block the page. Most caching plugins from Step 2 also offer a delay option, though some keep it in the paid version.
- Load embeds on click. A YouTube video or map can show a preview image first and load the real embed only when someone clicks it.
- Test after every change. Delaying scripts can break chat widgets, forms and checkout.
Check What Runs in the Background
1. See what’s scheduled. The free WP Crontrol plugin lists every scheduled event under Tools > Cron Events, shows when it runs, and lets you pause, run or delete events. Events left behind by plugins you’ve removed show “None” as their action and are usually safe to delete.
2. Move heavy jobs off-peak. Schedule backups and large imports for hours when your traffic is lowest.
3. On busy sites, use a real server cron. Add this line to wp-config.php:
define( ‘DISABLE_WP_CRON’, true );
Then set up a server cron job that requests ,wp-cron.php at regular intervals. Do both steps together. If you disable WP-Cron without the server job, scheduled tasks stop running. If you’re not sure how to set up the job, your host’s support can do it.
Step 5: Minify Code and Enable Compression
Minify CSS and JavaScript
Skip “Combine Files” on Modern Hosting
Combining many CSS or JavaScript files into one used to cut the number of requests under HTTP/1.1. With HTTP/2 and HTTP/3, browsers load many small files in parallel over a single connection, so combining brings little benefit and breaks layouts more often. Leave it off unless a before-and-after test shows a real gain.
Turn On Text Compression
content-encoding in the response headers. It should say br or gzip. If it’s missing, ask your host to enable compression, or turn on the GZIP option in your caching plugin.Set a Long Browser Cache for Static Files
The Cache-Control header tells a visitor’s browser how long it can keep a file before asking for it again. web.dev recommends a lifetime of up to one year for files whose address changes when the content changes, such as versioned CSS and JavaScript. HTML pages should be re-checked each time.
cache-control header on an image or CSS file in the same Network panel.Step 6: Test, Measure and Monitor
Run PageSpeed Insights Before and After
Enter your page address into PageSpeed Insights and run the test for both mobile and desktop. Write down the score, LCP, INP and CLS. Test the same pages each time, and change one thing between tests.
- Field data comes from real Chrome users over the previous 28 days. Brand-new or low-traffic pages may not have enough of it, and then PageSpeed Insights shows site-wide data or none.
- Lab data comes from a simulated test run by Lighthouse. It is useful for debugging, but it can differ from what real visitors experience.
Know the Three Core Web Vitals
| Metric | What it measures | Good result |
|---|---|---|
| Largest Contentful Paint (LCP) | How fast the main content loads | 2.5 seconds or less |
| Interaction to Next Paint (INP) | How quickly the page responds to a tap or click | 200 milliseconds or less |
| Cumulative Layout Shift (CLS) | How much the layout jumps while loading | 0.1 or less |
Google measures these at the 75th percentile of visits. INP replaced First Input Delay as a Core Web Vital in 2024. Lighthouse can’t measure INP, because a test run has no real user input. It reports Total Blocking Time instead, which points to the same kind of problem.
- LCP: hosting, caching and images (Steps 1 to 3).
- INP and Total Blocking Time: third-party scripts and code (Steps 4 and 5).
- CLS: set a width and height on your images, so the page doesn’t jump when they load.
Read the Report Without Getting Lost
Keep Monitoring
The Core Web Vitals report in Google Search Console shows real-user data grouped by page, so you can see problems appear over time. Test again after any big change: a new plugin, a theme update or a new embed. If you’d rather not track this yourself, our WordPress care plans include performance checks.
Conclusion: Fix the Biggest Slowdowns First
- Choose hosting that can keep up, and check your Time to First Byte.
- Use one caching plugin.
- Resize, compress and lazy load your images.
- Remove third-party scripts you don’t need, and keep background tasks in check.
- Minify code, enable compression and set a long browser cache.
- Test with PageSpeed Insights before and after every change.
Start with the step that fixes your biggest bottleneck, change one thing at a time, and test again. Small gains add up, and a fast site only stays fast if you keep checking it. If your site also needs security and user experience work, see our WordPress website optimization guide.
If your site is still slow after these steps, ask for a free site review and we’ll take a look.


