Speed problems on WordPress rarely have a single cause. Working through the stack in a fixed order keeps the effort focused on the changes that matter most.
1. Measure before changing anything
Record field data (the Core Web Vitals report in Search Console or the Chrome UX Report) and lab data (Lighthouse or WebPageTest) for your most important templates: the homepage, a typical article and, for stores, a product and the checkout.
2. Server response time
A slow time to first byte limits everything after it. Check the PHP version, enable an object cache where the host supports it, and add full-page caching for anonymous visitors.
3. Images
- Serve correctly sized images with
srcset— WordPress does this for you when themes use the image functions. - Use modern formats such as WebP or AVIF.
- Lazy-load images below the fold, but never the main hero image.
4. CSS and JavaScript
Audit what each plugin loads on every page. Defer non-critical scripts, remove unused libraries, and avoid loading jQuery when nothing depends on it.
5. Fonts and layout shifts
Self-host fonts, preload the one or two files used above the fold, and reserve space for images and embeds with width and height attributes so the page does not jump while loading.
6. Re-measure and monitor
Compare against the baseline from step one and keep monitoring field data — lab scores are a guide, real-user data is the goal.

Comments