The three WordPress performance problems I find every time
Every WordPress site I inherit has the same three performance problems, in roughly the same order. None of them require a developer to diagnose, and fixing them usually moves Core Web Vitals further than any caching plugin will.
Problem one: the plugin you forgot you installed
The average site I audit runs somewhere between 24 and 40 active plugins. A meaningful fraction were installed to solve a problem that no longer exists, and most of them load their CSS and JavaScript on every single page rather than only where they’re used.
Open your homepage in DevTools, look at the network waterfall, and sort by size. You’ll usually find a slider library on a page with no slider, or a form plugin’s assets on pages with no form.
The fix is deactivate-and-measure, one at a time, on staging. It’s tedious and it works. Anything you can’t justify keeping, delete rather than deactivate — deactivated plugins still carry update and security overhead.
Problem two: images uploaded at camera resolution
Someone uploads a 4,000-pixel-wide photo straight from a phone, WordPress dutifully serves a scaled version, and the browser still downloads far more bytes than the 800-pixel slot needs.
Three things to check:
- Format. WebP is typically 25–35% smaller than an equivalent JPEG at the same visual quality, and support is universal now.
- Dimensions. Resize before upload. Nothing on a normal site needs to exceed 1,600 pixels wide.
- Above-the-fold loading. Your hero image should not be lazy-loaded. Lazy-loading the largest contentful element delays the exact metric you’re trying to improve.
Problem three: render-blocking fonts
A typical theme loads three or four web font weights from an external host. Each one is a DNS lookup, a connection, and a download that happens before text can paint.
The options, in descending order of impact:
- Use a system font stack and load nothing at all. Modern system fonts are genuinely good, and this eliminates the problem rather than mitigating it.
- If you need a brand typeface, self-host it, subset it to the characters you use, and serve WOFF2 only.
- Set
font-display: swapso text renders immediately in a fallback. - Cut the number of weights. Two is almost always enough.
Why this matters beyond the score
Core Web Vitals are a ranking signal, but a modest one — they rarely outrank genuinely better content. The real argument is conversion. Slow pages lose people before they read anything, and the traffic you already paid for is the most expensive traffic to waste.
Fix the three above before you buy a performance plugin. In most cases you won’t need one.