Your website looks fine. It looks fine because you are looking at it on a fast laptop, on office wifi, with every asset already sitting in your browser cache from the last time you checked. Almost nobody else sees that website.
The person you actually built it for is on a mid-range Android phone, on patchy 4G, standing somewhere. They tapped your link from a search result or an Instagram bio, and they are giving you a couple of seconds before they go back and tap the next one. That is the real test, and it is the one most sites quietly fail.
Slow is a design decision, not a bug
Speed gets treated as something a developer optimises at the end, once the design is signed off. By then it is too late, because the expensive decisions were already made in the design file: the full-bleed hero photograph, the four font weights, the embedded map, the chat widget, the analytics tag, the second analytics tag nobody remembers adding.
Every one of those is a request. Every request is time. A page is not slow because someone wrote bad code — it is slow because someone said yes to twelve things and nobody counted what they cost.
A page that takes six seconds to load has already lost the person it was built for. They did not read your headline. They never saw it.
The three culprits, in order
- Images. Almost always the biggest single problem. A print-resolution photograph dropped straight into a web page can be five megabytes on its own, displayed in a slot 400 pixels wide. It is the same picture either way — the visitor just paid for the version they cannot see.
- Fonts. Every weight and every style is a separate file. Four weights of a display face, plus a body face, plus a mono face for good measure, and the text on the page cannot render until they arrive.
- Third-party scripts. Chat widgets, tag managers, heatmaps, embedded videos, social feeds. Each one is a script from someone else's server, running at a speed you do not control, on a page you are judged for.
None of these require a rebuild to fix. They require someone to sit down and account for them, which is a less exciting job than redesigning the homepage, which is why it rarely happens.
What Google is now measuring
Search engines stopped taking your word for it some time ago. Page experience is measured from real visits by real people, and it feeds into where you rank. Three numbers carry most of the weight, and they are worth understanding in plain language:
- Largest Contentful Paint — how long until the biggest thing on screen actually appears. Usually your hero image or your headline. This is the one images ruin.
- Interaction to Next Paint — how long the page takes to respond when someone taps. This is the one heavy scripts ruin.
- Cumulative Layout Shift — how much the page jumps around while it loads. This is what happens when an image has no dimensions set and the text below it lurches down the moment it arrives.
These are not abstractions. They are a description of what it feels like to use your site on a bad connection — written down as numbers, and then used to rank you against the competitor whose site does not do that.
The fix is boring, and it works
Serve images at the size they are displayed and in a modern format. Set width and height on every one so nothing jumps. Ship the font weights you actually use and no more. Audit the third-party scripts and delete the ones nobody has opened a report from in six months — there are always some.
Then test on a real phone, on mobile data, with the cache cleared. Not on your laptop. The gap between those two experiences is the gap between the site you think you have and the site your customers actually get.
This is the standard we build every site to — see how we approach websites and the client sites we have shipped. If yours is slow and you are not sure why, send us the link and we will tell you what is eating it.