Performance
Core Web Vitals: what to fix first on WordPress
Most WordPress performance theater starts with a caching plugin. Most real failures start with images, fonts, and JavaScript the theme loads on every page.
August 26, 2026
Core Web Vitals are field metrics. Lighthouse is a lab. Use the lab to find suspects. Believe the field when you have it. On WordPress, the same three issues show up constantly.
Largest Contentful Paint is usually an image or a late header
Give the hero a real width and height, a modern format, and a preload only if it is the LCP element. Do not lazy-load the first screen. Fonts that swap late make the heading the LCP and then shift it. Hosting matters, but a 2 MB PNG in the header will embarrass a perfectly good server.
INP is JavaScript you did not know you shipped
Page builders, sliders, analytics tags, and chat widgets all compete for the main thread. Mobile INP dies here. The first pass is inventory: what loads on every page, and what can load after idle. Removing one plugin often beats micro-optimizing a theme file you did not write.
CLS is space you never reserved
Cookie banners, announcement bars, webfonts, and ads inject height after paint. Reserve space. Load fonts with a reasonable fallback. If a marketing pixel injects a bar, it is a performance bug even if it is “just a campaign.”
Caching is necessary and not sufficient
Full-page cache, object cache, and a CDN help TTFB. They do not shrink a 400 KB navigation script. Do cache. Then look at the template.
If you only have time for one diagnostic, pick a product or article URL on a phone throttling profile, not the homepage on desktop cable. That is closer to the people who bounce.