Support article
Slow WordPress: 15 Ways to Speed It Up
Find out why WordPress is running slow and apply concrete fixes to cut load times, resource usage, and performance errors.
Introduction
A slow WordPress site can come from hosting, PHP, plugins, the theme, images, the database, caching, or external services. Installing several optimization plugins without measuring first usually makes things worse.
The right way to speed up WordPress is: measure, identify the bottleneck, apply one change, measure again, and only keep the improvements that actually help. Before touching caching, the database, or code, back up (see WordPress backup and restore).
To measure your site properly, see how to measure website speed with PageSpeed and GTmetrix. Distinguish between a high TTFB (the server takes a while to respond), heavy resources (images, CSS, JavaScript), browser-side blocking, and intermittent slowness from traffic spikes or scheduled tasks.
1. Update WordPress, plugins, and themes
Updates can include performance, compatibility, and security improvements. Back up, check requirements, and remove abandoned or incompatible extensions. Don’t keep old plugins just because they “still work” — unsupported code can be slow and vulnerable.
2. Use a modern PHP version
WordPress currently recommends PHP 8.3 or higher, but confirm your theme and plugins are compatible before updating. See how to update PHP without breaking WordPress for a safe procedure.
3. Turn on page caching
Page caching stores an already-generated version of the content, avoiding running WordPress and querying the database on every visit. Don’t enable several layers with conflicting configurations, and exclude dynamic pages like the cart, checkout, or account.
4. Enable OPcache
OPcache stores compiled PHP code in memory, avoiding recompiling it on every request. On many hosts it’s already on — check the PHP info or ask support. It doesn’t replace page caching, but it reduces PHP’s workload.
5. Cut unnecessary plugins
The number of plugins doesn’t explain slowness on its own — a single plugin can use more resources than twenty simple ones. Look for duplicates, features the theme already provides, inactive or abandoned extensions, and heavy analytics or backup plugins. Deactivate one at a time and measure (see how to deactivate WordPress plugins without admin access).
6. Review the theme and the page builder
A theme can load several stylesheets, fonts, icons, animations, and extra queries. Temporarily try a default theme in a staging environment. In visual builders, avoid nesting containers unnecessarily, reuse global styles, and remove hidden modules (see Gutenberg vs Elementor vs Divi: which to choose).
7. Optimize images
Resize before uploading, compress at a suitable quality, use modern formats when supported, enable lazy loading for off-screen images, and serve adapted sizes with srcset. An image can be light once compressed and still consume a lot of memory when processed because of its large dimensions (see memory exhausted in WordPress).
8. Reduce CSS and JavaScript
Check for unused CSS, JavaScript loaded on pages where it isn’t needed, duplicate libraries, and unnecessary tracking code. Minifying can reduce size, but combining files doesn’t always help under HTTP/2 or HTTP/3 — test each option. Deferring JavaScript can break menus or checkout, so exclude critical scripts and verify functionality.
9. Optimize fonts
Use fewer font families, reduce weights and variants, self-host fonts if the license allows it, and set font-display. Don’t preload too many fonts — it can compete with more important resources.
10. Clean up and review the database
Over time, revisions, auto-drafts, expired transients, and tables from deleted plugins pile up. Before cleaning, export the database, identify which plugin created each table, and measure before and after. Optimizing tables doesn’t fix slow queries or an excessive volume of autoloaded data.
11. Control autoload options
WordPress automatically loads certain options on every request. A high volume can increase memory and database time. Check Site Health to spot large options, and don’t delete options without knowing which plugin uses them.
12. Set up persistent object caching
Object caching reduces repeated queries using services like Redis or Memcached, when the server offers them. It’s especially useful for stores, memberships, and query-heavy sites. Don’t just install the plugin if the underlying service isn’t actually running.
13. Review WP-Cron and scheduled tasks
WP-Cron runs on incoming visits; too many tasks or a stuck one can slow down requests. Check wp cron event list (see managing WordPress with WP-CLI) and review backups, syncs, and reports. On high-traffic sites, consider disabling per-visit execution and setting up a real server cron instead.
14. Use a CDN when it adds value
A CDN distributes resources from locations close to visitors and can reduce server load. It’s useful when visitors are geographically spread out or there are lots of images. Configure HTTPS, cache purging, and the visitor’s real IP correctly — a misconfigured CDN can serve stale content or create loops.
15. Review your hosting’s resources and capacity
If the application is optimized but still limited, check CPU, memory, simultaneous processes, database connections, and plan limits. Signs of resource shortage: 503 errors, killed processes, slowness at peak hours, or a locked-up admin area. A higher plan can help when the usage is legitimate, but it won’t fix a broken plugin.
Additional improvements
Turn on compression (Brotli or gzip), set up browser caching with Cache-Control headers for versioned assets, cut external requests (maps, chat widgets, ads), and protect the site from aggressive bots without blocking authorized search engines. See also how to optimize your website’s performance and reducing server response time (TTFB) for general hosting-level improvements.
How to measure the changes
For each test, log the URL, the date, whether the user is logged in or not, whether the cache is cold or warm, the TTFB, load time, number of requests, and any console errors. Repeat several times — a real improvement should be consistent.
Common issues
I installed a caching plugin and the site got worse
There may be another cache active, an incompatible configuration, or dynamic pages being cached. Deactivate, purge, and review the layers.
The homepage is fast, but /wp-admin is slow
Page caching usually doesn’t apply to the admin area. Check plugins, cron, queries, and external calls.
The site is only slow at certain hours
Check scheduled tasks, backups, traffic, bots, and resource saturation.
Frequently asked questions
How many plugins is too many?
There’s no universal number. Quality, scope, and each plugin’s resource use matter more than the count.
Do I need a CDN?
Not always. A local, lightweight site may not see much improvement — it’s more useful with a distributed audience and lots of resources.
Is a VPS always faster?
No. A VPS needs configuration, maintenance, and sufficient resources. A well-optimized professional hosting plan can outperform a poorly managed VPS.
Conclusion
To speed up WordPress, start by measuring, and avoid applying every optimization at once. Update PHP and components, use a consistent caching strategy, optimize images and resources, and review plugins, the database, and scheduled tasks.
If the site keeps hitting limits after optimizing it, it may be time to review a professional hosting plan or a VPS with resources suited to the real traffic.