Skip to main content

Back to insights

Web Experiences5 min read

Why Slow Websites Lose Potential Customers

Performance isn't just a technical score. It shapes perceived quality and whether people finish what they came to do.

Norvane Team

Performance usually gets discussed as a score. You run a tool, a number comes out, and if the number is green the conversation ends.

That approach measures the least interesting part of it. A slow site isn't just bad at one metric. It makes it harder for visitors to finish what they came for, it says something quiet about the quality of the product, and it usually loses customers somewhere nobody ever complains about.

Nobody emails to say your site was slow. They just don't come back.

Real speed and perceived speed aren't the same thing

How long a page takes to load and how fast it feels are different things. The second one is often the more decisive.

What visitors find hard isn't waiting — it's uncertainty. Three seconds on a blank white screen feels far longer than three seconds where content is progressively appearing. In the same way, a button that responds the instant it's pressed feels faster than an unresponsive one, even when the work behind it takes exactly as long.

None of which makes real speed irrelevant. It just reframes the job: improving performance isn't only shortening the total, it's managing what happens during the wait.

The weight usually comes from three places

What slows a page down is rarely a surprise.

Images are the most common cause. The space an image occupies on screen and the size of the file behind it don't have to be related. An image rendered 400px wide on a phone might be downloading a 2000px file. Correct sizing and a modern format usually make a large difference without giving up anything in the design.

Fonts are a quieter cost. Every extra weight and every extra style is another file. Loading seven weights across three families doesn't enrich the typography; it delays the first render.

JavaScript is the most expensive, because it isn't only downloaded — it's parsed and executed. A large library pulled in for one small interaction costs considerably more than that interaction is worth.

Nobody else has your machine

A site is almost always fast on the machine it was built on. A good processor, a fast connection, and a warm cache hide most performance problems.

Real conditions look different: a phone that's a few years old, a mobile connection that comes and goes, other apps running, a first visit with an empty cache.

The cost of JavaScript is where that gap shows most clearly. The same script that's imperceptible on a strong machine can visibly delay the interface on a low-powered one. Which is why "it loads fast for me" isn't a measurement.

Shifting layouts and late-responding interfaces

Even when load time is acceptable, a page can still feel bad.

This takes two common forms. The first is content moving as it settles: someone reaches for a link, a late image claims its space, the layout pushes down, and the click lands somewhere else. That usually comes from not reserving space for an image or an embed ahead of time, and it's solvable at the design stage.

The second is an interface that responds late. The page looks ready, but clicks go unanswered for a moment because the main thread is still busy. For a user, that's more irritating than "it hasn't loaded" — something that appears to be ready isn't answering.

Reading Core Web Vitals without the jargon

Google's metrics carry awkward names, but the questions they ask are plain.

LCP asks when the main content appeared — when the visitor can see the thing they came for. CLS asks how much the layout moved while it settled. INP asks how late the interface responds when someone interacts with it.

The numeric thresholds for these can change over time and the definitions get revised, which is why there are no thresholds written here. If you need one, the right source is Google's own current documentation on the day you're measuring.

What's worth keeping in your head is more durable than any number: did it appear, did it stay put, did it answer when touched.

Performance isn't design's opponent

Most performance conversations stall at the same point: "let's make it faster" turns into "let's make it plainer".

That's an unnecessary surrender. What slows a page down is usually the implementation, not the ambition of the design. The same visual effect can often be had more cheaply: an animation can run on transform instead of layout, an effect can come from CSS instead of an image, a heavy component can load only once it's genuinely on screen.

The healthier approach treats performance as a parameter of design decisions rather than an exam sat at the end. That's how we handle it from the start in our web application work.

Before you launch

The list below works as a performance pass before a site goes live.

A performance check

  • Are images produced at the size they'll actually be displayed?
  • Are below-the-fold images deferred rather than loaded upfront?
  • Is space reserved ahead of time for images and embedded content?
  • Is every font family and weight you load actually used?
  • Does each JavaScript package on the page earn what it costs?
  • Has the site been tried on a phone that's a few years old, with an empty cache?
  • Does the first click respond immediately after the page appears?
  • Was the measurement taken under realistic conditions, not on the build machine?

Performance isn't a task you finish once. Every new section, every new script, and every new image takes something from the budget.

The habit that helps most is keeping speed not as a grade measured at the end, but as a quiet question standing next to each decision: what does this cost, and who pays for it?