WordPress is not inherently slow, but it is inherently permissive: it will let you stack forty plugins, a page builder, and un-resized photography on five-dollar hosting, and it will serve the result as slowly as that deserves. Tuning works best in a fixed order, because each layer caps what the layers above can achieve.
First, the foundation
Hosting sets your ceiling. A modern PHP version alone is a large, free speedup, and hosts with server-level caching and adequate resources make everything downstream easier. If your time-to-first-byte is over half a second on a simple page, no plugin will save you; the fix is the host.
Second, cache everything cacheable
- Page caching serves visitors HTML instead of running PHP and MySQL per request; it is the single biggest software win.
- Object caching (Redis) pays off on WooCommerce and membership sites where pages cannot be fully cached.
- A CDN moves your assets close to visitors and shrugs off traffic spikes.
Third, the payload
Images are usually most of the page weight: serve them compressed, properly sized, and in modern formats; lazy-load below the fold, but never the hero image, which is your LCP element. Then audit plugins with a profiler such as Query Monitor, since one badly written plugin routinely accounts for half the server time. Page builders levy their own tax; heavy builder pages that matter for conversion sometimes justify rebuilding in blocks.
Then stop
Measure on a throttled mobile connection, fix the biggest number, and re-measure. When Core Web Vitals are green in field data and pages feel instant on a phone, further tuning is procrastination with a dashboard. Set a quarterly re-check, because WordPress sites regress the way gardens grow weeds: gradually, then noticeably.