WordPress still powers a huge share of the web, but "it's WordPress, it's slow" is a reputation earned mostly by bloated themes, unoptimized plugins, and default configurations — not by the platform itself. Over the past several years optimizing high-traffic WordPress sites — including Coin Edition, scaled from 10K to 700K monthly visitors, and more recently a Core Web Vitals pass on AMBCrypto and The Coin Headlines — a handful of changes have consistently moved the needle more than anything else.
Start with what's actually being measured
Core Web Vitals boils down to three metrics: LCP (Largest Contentful Paint — how fast the main content appears), INP (Interaction to Next Paint — how responsive the page feels when clicked or tapped), and CLS (Cumulative Layout Shift — how much content jumps around while loading). Google Search Console and PageSpeed Insights report on all three using real-world field data, not just lab scores, so fixes need to hold up under actual visitor conditions — flaky mobile networks included.
Largest Contentful Paint
LCP is almost always a hero image, a web font, or render-blocking CSS/JS sitting between the browser and the first paint.
- Preload the hero image with
<link rel="preload" as="image">instead of waiting for the browser to discover it inside the CSS. - Self-host fonts rather than pulling from Google Fonts at request time — every external font request is a DNS lookup, a connection, and a round trip the browser has to complete before text renders.
- Defer non-critical CSS and JS. Most WordPress themes load every stylesheet and script on every page, whether that page needs it or not. Auditing and conditionally loading only what a given template requires routinely cuts several hundred milliseconds off LCP alone.
- Use a proper caching layer (page cache plus object cache) so PHP and MySQL aren't re-executing the same queries for every visitor.
Interaction to Next Paint
INP replaced FID as a Core Web Vital because it captures responsiveness across the entire page lifetime, not just the first interaction. The biggest offenders on WordPress are usually third-party scripts — chat widgets, analytics, ad tags — all fighting for the main thread at once.
// Defer non-critical third-party scripts until the browser is idle
window.addEventListener("load", () => {
requestIdleCallback(() => {
loadThirdPartyWidget();
});
});
Breaking up long JavaScript tasks, lazy-loading anything below the fold, and auditing plugins that hook into wp_enqueue_scripts without a real need are usually enough to bring INP back under 200ms.
Cumulative Layout Shift
CLS is almost always solved with two habits: always set explicit width and height attributes on images (or use aspect-ratio in CSS) so the browser reserves space before the image loads, and reserve space for ads and embeds rather than letting them inject content after the surrounding layout has already settled.
The compounding effect
None of these changes are dramatic on their own, but they compound. On projects where this list was applied systematically — caching, font strategy, script auditing, image dimensions — the result was consistently 90+ PageSpeed Insights scores on both mobile and desktop, alongside measurable gains in user retention and organic rankings. Core Web Vitals aren't a one-time checklist; they're a baseline every theme update and every new plugin should be checked against.


