All posts

Digital Problem Solving

Website Speed in Nepal: Why It Matters More Than You Think

Arjun Basnet6 min read

Key takeaways

  • Google's threshold is 2.5 seconds for the largest element to paint. Test on a throttled mobile connection, not your office wifi.
  • The usual causes are unglamorous: page-builder scripts, uncompressed images, too many webfonts, and third-party widgets.
  • Static generation removes most of the problem by serving plain HTML rather than assembling pages per request.
  • Speed is not only a ranking factor — visitors leave before they see anything, which no amount of ranking recovers.

Speed advice tends to be written by people testing on fast connections. That produces guidance which is technically correct and practically useless for a business whose customers are on mobile data outside Kathmandu.

Here is what actually matters, and in what order.

The number that counts

Google measures Largest Contentful Paint — how long until the biggest visible element finishes rendering. The threshold for "good" is 2.5 seconds.

That is measured on real visits from real devices, not on your laptop. A site that feels instant on office fibre can be sitting at six or seven seconds for a substantial share of its actual audience.

Six seconds is not a ranking inconvenience. It is a visitor closing the tab before they have seen what you sell. No amount of ranking recovers a bounce, which is why this belongs above SEO in the priority order rather than beside it.

What is usually slowing it down

In rough order of how often I find each one:

Images straight from the camera. A single photo at full resolution can be several megabytes. A page carrying six of them is asking a mobile visitor to download more data than the entire rest of the site. Resizing to the dimensions actually displayed and converting to WebP or AVIF frequently halves page weight in an afternoon.

Page-builder overhead. Drag-and-drop builders load their entire framework on every page, whether or not the page uses the features. The convenience is real; the weight is also real, and it is paid by every visitor on every visit.

Too many fonts. Each weight of each family is a separate file that blocks text from rendering. Two weights of one family covers almost every design. Five families with four weights each is thirty-two files nobody asked for.

Third-party scripts. Analytics, a chat widget, a popup tool, a heatmap recorder, a social feed embed. Individually small, collectively decisive — and each one is a request to a server you do not control, on a connection you cannot improve.

Server-rendering pages that never change. An About page assembled from a database on every single request, when its content changed last in 2024.

The structural fix

That last point is where the largest gain usually sits.

If a page's content only changes when someone edits it, there is no reason to build it fresh for every visitor. Generating it once at build time and serving the result as plain HTML removes database queries, template rendering, and plugin execution from the request path entirely.

This is what static generation means in practice, and it is why a statically generated site loads quickly almost by default rather than through optimisation effort. There is simply less happening between the request and the response.

The trade-off is honest: content changes need a rebuild, which for a site updated a few times a year is nothing, and for a newsroom publishing hourly is a real constraint. Match the architecture to the publishing frequency rather than to fashion.

Testing it properly

Three steps, in order:

  1. PageSpeed Insights, mobile tab. Not desktop. The mobile score simulates a mid-range device on a throttled connection, which is much closer to your actual audience.
  2. A real phone on mobile data. Leave the office wifi. Load your homepage. Count.
  3. Search Console Core Web Vitals. This reports on real visits from real users, which is the only measurement Google actually ranks on.

The gap between step one and step two is where most speed problems live undiscovered.

An order of work that pays off

Do these in sequence — each is cheaper than the one after it, and each makes the next easier to measure:

  1. Compress and resize every image. Serve modern formats.
  2. Remove third-party scripts nobody looks at the data from.
  3. Cut fonts to one family, two weights.
  4. Lazy-load anything below the fold.
  5. Only then consider a platform change.

Most sites reach acceptable numbers by step three. The businesses that jump straight to step five usually spend the most and improve the least, because they carry the same images and the same eight scripts onto the new platform.

Why it compounds

Speed is not a single benefit. A faster site ranks better, converts better, costs less to serve, and — the part people miss — is cheaper to maintain, because a site without twelve plugins has fewer things that can break.

For a business in Nepal specifically, it is also the difference between being usable and being theoretical for the portion of your market that is not on a fibre connection in the valley. That portion is larger than most site owners assume, because they have never tested from outside it.

Questions

How should we test speed properly?

Use PageSpeed Insights and read the mobile score, not the desktop one. Then test on an actual phone on mobile data, away from your office. The gap between what a developer sees on fibre and what a customer experiences on 4G outside the valley is where most speed problems hide.

What is the single biggest quick win?

Images, almost always. Photos uploaded straight from a camera or phone at full resolution are frequently several megabytes each on a page that needed a few hundred kilobytes. Resizing and converting to WebP or AVIF often halves total page weight without touching anything else.

Web PerformanceCore Web VitalsNepal

Let's talk about your project.

Tell me what you're trying to build or fix. I'll tell you honestly whether I'm the right person for it, and what it would take.

Kathmandu, Nepal · Asia/Kathmandu (UTC+5:45) · Typically replies within 24 hours