"Fast" is one of those words everyone uses about websites without agreeing on what it means. A site can score well in a speed testing tool and still feel sluggish to use, and the reverse is also true. What actually matters is perceived speed — how quickly a visitor feels like something useful is happening.
The single biggest factor is how soon meaningful content appears on screen. A blank white page for two seconds followed by everything loading at once feels worse than content appearing progressively, even if the total load time is identical. This is why modern frameworks like Next.js render content on the server and stream it to the browser, rather than making visitors wait for JavaScript to build the page from scratch.
Image weight is the next biggest culprit. A single unoptimised hero photo can be heavier than the rest of the page combined. Modern image formats, proper sizing for different screens, and lazy-loading anything below the fold make a dramatic difference without any visible trade-off in quality.
Interaction speed matters just as much as load speed. A button that visibly responds to a tap within a tenth of a second feels instant; one that waits half a second before doing anything feels broken, even if it eventually works. This is often a matter of showing a loading state immediately rather than staying silent while a request completes.
Fast sites aren't an accident — they come from deliberate choices at every layer: hosting, image handling, code splitting and font loading. It's also one of the areas where the return on investment is easiest to prove, because speed improvements show up directly in bounce rate and conversion numbers within days of shipping.
The good news is that speed work is rarely all-or-nothing. Auditing a site's largest images, checking how content appears on a throttled mobile connection, and reviewing what loads before anything else becomes visible usually surfaces two or three fixes that account for most of the perceived slowness — and those tend to be the fastest wins to ship.