Most slow websites have the same few problems. These five fixes are the ones I reach for first, and they work on any site, from hand-coded pages to WordPress.
A fast site keeps visitors, ranks better on Google and feels more trustworthy. You don't need a rebuild to get there. At Devlift, fixes like these cut load times by around 30% on client projects.
Start by measuring, so you know what changed: run your page through PageSpeed Insights (pagespeed.web.dev), or open Chrome's DevTools and use Lighthouse. Google's Core Web Vitals give you three numbers to aim for:
- LCP (largest contentful paint): the main content shows in under 2.5 seconds
- INP (interaction to next paint): the page responds to taps and clicks in under 200 ms
- CLS (cumulative layout shift): things don't jump around, a score under 0.1
1. Shrink your images
Images are usually the heaviest part of a page. Save them as WebP or AVIF instead of PNG or JPEG, and never send a 3000-pixel photo to a phone screen.
<img
src="/images/team-800.webp"
srcset="/images/team-400.webp 400w, /images/team-800.webp 800w, /images/team-1600.webp 1600w"
sizes="(min-width: 900px) 50vw, 100vw"
alt="Our team in the office"
/>
The browser picks the smallest file that still looks sharp on the visitor's screen.
2. Lazy-load what's below the fold
Images further down the page don't need to load straight away.
<img src="/images/gallery-1.webp" alt="…" loading="lazy" width="800" height="600" />
3. Always set width and height
When an image has no size, the browser doesn't know how much room to keep for it, so text jumps down when it loads. That's what CLS measures. Adding width and height (or a CSS aspect-ratio) reserves the space.
4. Load fonts carefully
Custom fonts can hide your text until they arrive.
@font-face {
font-family: 'Brand';
src: url('/fonts/brand.woff2') format('woff2');
font-display: swap;
}
font-display: swap shows a fallback font right away and swaps in yours when it's ready. Use WOFF2, and only load the weights you actually use. Two is often enough.
5. Cut unused JavaScript
Every script has to download, parse and run before the page responds smoothly.
- Add
deferto scripts that don't need to run before the page shows. - Remove tracking tags, chat widgets and sliders nobody uses.
- On WordPress, every plugin adds weight. Remove the ones you don't need, and use a caching plugin.