Speed is not a technical luxury. A visitor waiting more than three seconds usually closes the tab, and across the region we serve most sites open on a phone over an unsteady connection — so a heavy page does not just load slowly, it may not load at all.
First cause: images
This is what we see most and the easiest to fix. A 4000px-wide image shown in a 400px slot downloads in full and is then shrunk by the browser, meaning the visitor paid for data they never saw. Images should be exported at the size shown, in WebP or AVIF, with off-screen images loaded later rather than immediately.
Second cause: fonts
Every weight of a font is a separate file. A site calling six weights downloads six files before text appears. Stick to two or three, and host the font with the site rather than fetching it from an external server, which saves an entire connection to another domain.
Third cause: what you cannot see
- Tracking and analytics tools: each is an external script that delays the page.
- Accumulated WordPress plugins, many of them unused.
- Whole icon and font sets loaded to use two icons.
- Video that starts downloading automatically in the background.
Measuring it yourself
Open Google's PageSpeed Insights, enter your URL, and read the mobile result rather than desktop. Focus on two numbers: LCP, the time until the largest visible element appears, which should be under 2.5 seconds; and CLS, how much the page shifts while loading, which should be under 0.1. The tool also lists your heaviest files, usually images.
What to fix first
Start with images, typically half the problem and the cheapest fix. Then fonts. Then delete every tracking script whose reports you do not actually read. Those three cover most cases that reach us, before any talk of upgrading hosting.
And hosting?
Upgrading the server is the last resort, not the first. A heavy site on a powerful server stays heavy, because the problem is the size of what is sent rather than the speed of sending it. Fix the content first, then see whether a need remains.