Making a website fast on a Nepali network.

The danphe does not look like a fast bird until it drops off a ridge. Weight is the whole story: everything it does not carry is speed it gets to keep. Web pages work exactly the same way, and almost every slow site we are handed is slow for the same handful of reasons.

The Brilliant Ideas12 min read

Last reviewed

A watercolour of a danphe, the Himalayan monal, in full flight with its iridescent wings outstretched

This is not a general performance article. It is written for the condition your customers are actually in: a mid-range Android phone, on mobile data, somewhere the tower is shared. A site tuned for that is fast everywhere. A site tuned on a laptop on office fibre is a site you have never really tested.

Measure the right thing first

Before changing anything, get a number you trust. Three tools, in this order, and each answers a different question.

  • PageSpeed Insights. Run it and read the field data at the top, not the lab score below it. Field data is what real visitors experienced; the lab score is a simulation and it is the number people mistakenly optimise for.
  • Search Console, Core Web Vitals report. This is the same field data grouped by page type, which tells you whether the problem is site-wide or confined to one template.
  • Chrome DevTools, with the network throttled to Slow 4G and the CPU throttled four to six times. This approximates the device your customer owns and it is where the real culprits become obvious.
MetricWhat it measuresTarget
LCPWhen the biggest thing on screen finishes renderingUnder 2.5s
INPHow quickly the page responds to a tapUnder 200ms
CLSHow much the layout jumps while loadingUnder 0.1

Images, which are almost always the problem

On most sites we audit, images are more than seventy percent of the page weight and the direct cause of a failing LCP. Four fixes, in descending order of return.

  1. Serve the size you actually display. A 4000-pixel-wide photograph rendered into a 600-pixel column wastes roughly ninety-five percent of the bytes it cost. Generate multiple widths and let the browser choose with srcset and sizes.
  2. Use a modern format. WebP is universally supported now and typically saves twenty-five to thirty-five percent over a comparable JPEG. AVIF saves more again where you can produce it.
  3. Set width and height on every image, always. Without them the browser cannot reserve space, so the page reflows as each image arrives, which is most of a bad CLS score.
  4. Lazy-load everything below the fold with loading="lazy", and explicitly do not lazy-load the hero image. Lazy-loading the LCP element delays the exact thing you are being measured on.

One more, less obvious: reduce quality further than feels comfortable on large soft images. Photographs with broad gradients or watercolour washes are visually indistinguishable at quality 60 and materially smaller than at 80. Detailed product shots need more. Judge per image rather than setting one global number.

Fonts, the quiet tax

Custom fonts are worth their cost, but most sites pay several times over for nothing. Three rules cover it.

  • Two families, at most three weights each. Every additional weight is a separate file, and nobody has ever noticed the difference between six weights and three.
  • Subset to the characters you use. A full Devanagari or Latin-Extended face is many times the size of the subset a given page actually needs.
  • Set font-display: swap so text renders immediately in a fallback rather than leaving the page blank while the webfont downloads. Invisible text is worse than the wrong font for a quarter of a second.

Self-host or use a framework font loader that inlines the declarations. A stylesheet fetched from a third-party font host adds a DNS lookup, a TLS handshake, and a round trip before any text can render, on a connection where each of those is expensive.

JavaScript, and what it costs on a real phone

A megabyte of JavaScript is not a megabyte of download problem. It is a download, then a parse, then a compile, then an execute, on a processor several times slower than the one you wrote it on. This is why sites feel worse on a mid-range Android than the numbers suggest they should.

  • Audit what you actually ship. A jQuery plugin for one carousel, a date library for one format string, an icon font for six icons. Each is a common and entirely removable few hundred kilobytes.
  • Defer everything non-essential. Analytics, chat widgets, heat-map tools, and social embeds have no business on the critical path. Load them after the page is interactive.
  • Chat widgets and embedded video are the two heaviest third-party additions in common use. An embedded YouTube player costs hundreds of kilobytes before anyone presses play. Use a static thumbnail that swaps to the real player on click.
  • Render your content in HTML on the server. If the text of the page requires JavaScript to appear, you have made every visitor and every crawler wait for a round trip to see words that could have arrived in the first response.
  • Split by route so a visitor to one page does not download the code for all the others.

A note on tag managers

Tag managers are convenient and they accumulate. We regularly find containers loading six or seven tools nobody at the company remembers commissioning, several of them redundant. Audit the container annually and delete what is not read.

Hosting and delivery

The fastest possible site still waits for the first byte. Two decisions govern that, and both are cheap.

  • Use a CDN. If your server is in Singapore or Frankfurt and your customer is in Biratnagar, every uncached request crosses that distance twice. A CDN puts a copy near them, and for static sites it eliminates most of the latency entirely. Cloudflare’s free tier is sufficient for most businesses in this market.
  • Do not run e-commerce or anything database-backed on the cheapest shared hosting. Shared plans are oversold by design, and time-to-first-byte on a busy shared host regularly exceeds a second before your code has done anything at all.
  • Enable compression. Brotli where available, gzip otherwise. It is a server setting and it typically cuts text payloads by seventy percent.
  • Set long cache headers on assets with hashed filenames, so returning visitors download almost nothing.

The order to work in

If you do nothing else, do these five things in this order. On a typical slow site they account for the large majority of the available improvement, and none of them requires touching the design.

  1. Resize and convert every image to WebP at the dimensions actually displayed, and set explicit width and height on all of them.
  2. Put a CDN in front of the site and turn on Brotli compression.
  3. Cut font families and weights to what the design genuinely uses, and add font-display: swap.
  4. Move analytics, chat, and every other third-party script off the critical path.
  5. Replace embedded video and map iframes with click-to-load placeholders.

Then measure again, in field data, after a few weeks rather than the same afternoon. Field data is a rolling twenty-eight day window, so it moves slowly by design, and reading it the day after a deployment will tell you nothing.

Questions· प्रश्नहरू

Asked around the campfire

Does website speed affect Google rankings?

Yes, but modestly. Core Web Vitals are a confirmed ranking signal and they act mainly as a tie-breaker between pages of comparable relevance. The larger effect is commercial rather than algorithmic: on a slow mobile connection, a large share of visitors abandon a page before it renders, and no ranking helps you with someone who has already left.

What is a good PageSpeed Insights score?

Aim for the field data at the top of the report to pass all three Core Web Vitals rather than chasing a particular lab number. A green lab score on a page whose real visitors experience a four-second LCP is a measurement of your test conditions, not your website. If you want one target, pass Core Web Vitals on mobile.

Why is my WordPress site slow?

Almost always some combination of four things: unoptimised full-size images, a page-builder plugin shipping several hundred kilobytes of CSS and JavaScript to render text, twenty or more active plugins each adding their own assets to every page, and oversold shared hosting. Caching plugins mask the symptoms without addressing any of the four, which is why the improvement they give tends to plateau quickly.

How much does performance optimisation cost?

An audit with a prioritised, specific list of fixes typically runs NPR 20,000 to 50,000. Implementing them on an existing site is usually NPR 40,000 to 150,000 depending on how much of the problem is structural. If the slowness comes from the underlying platform choice rather than from configuration, a rebuild is sometimes genuinely cheaper than repeated optimisation.

Should I use AMP?

No. Google removed the AMP requirement for the Top Stories carousel in 2021 and there is no longer any ranking advantage to it. A well-built responsive page is faster than AMP and does not require maintaining a second version of your site.

Speed is everything you chose not to carry.Let’s find out what your site is carrying.

Tell us where you want to go, and we’ll map the route, free of charge.

Talk to Us