Praxium Labs ships this for Nepali clients — here is what works. Performance is the silent conversion killer for Nepali e-commerce and SaaS. A site that loads in 1.5 seconds on a developer's laptop in Kathmandu can take 8 seconds on a 2-bar 4G connection in Pokhara. Real-network testing changes priorities.
Real Nepali network conditions
In 2026 the country-wide picture (rough estimates):
- Kathmandu valley fiber / 4G: 20-100 Mbps, 50-150ms latency
- Kathmandu mobile 4G under load (evenings, festival days): 1-5 Mbps, 200-500ms latency
- Tier-2 cities (Pokhara, Biratnagar) 4G: 5-25 Mbps, 100-300ms latency
- Rural / hill districts: 0.5-5 Mbps where coverage exists; many no-signal pockets
- Wifi at offices and cafés: highly variable; often slower than mobile under load
Design for the median: 4G under load, ~3 Mbps, ~200ms latency. A site that works there works everywhere.
Image weight — the #1 lever
- Use WebP or AVIF with JPG fallback. WebP is 25-35% smaller than equivalent JPG; AVIF another 20-30% smaller than WebP
- Responsive images:
srcset+sizesso phones get phone-sized assets, not desktop ones - Lazy-load below the fold:
loading="lazy"attribute (supported everywhere now) - Hero images: preload only the critical one; others lazy-load
- Compress aggressively: q=75 is almost indistinguishable from q=95 and 40% smaller
Font loading
Web fonts are the most-overlooked performance hit in Nepali sites. A single Google Fonts include can add 100-300ms to first paint. Three fixes:
- Self-host fonts via woff2 in your /assets directory — removes the cross-origin handshake
- Subset fonts to only the characters you use (Latin + Devanagari subset). Often cuts font weight by 60-80%
font-display: swap— show text immediately with system fallback, swap when web font loads
JavaScript budget
A 250 KB minified gzipped JS bundle is the loose budget for "fast on 3G". Above that you start paying meaningful TBT. Concrete tactics:
- Route-level code splitting: users on /about/ should not load the cart component
- Audit dependencies: a single emoji-picker library can add 80 KB. Run
bundle-analyzerregularly - Defer non-critical scripts: analytics, A/B testing, support widgets — all defer or async
- Prefer islands architecture (Astro) for content sites — ship JS only where it is needed
Critical CSS and the render path
Inline ~14 KB of critical CSS (above-the-fold styles) so the browser can render without waiting for the main stylesheet. Tools: Critters (PostCSS), Critical (npm package). Skip if your site is < 50 KB CSS total — the overhead is not worth it.
Cloudflare and CDN positioning
Cloudflare in front of everything — free tier covers most Nepali SMEs. Wins: TLS, DDoS protection, global edge caching of static assets, image optimisation (Polish), HTTP/3, Brotli compression. Setup: 10 minutes. Performance lift: noticeable, especially for users outside Kathmandu valley.
Real-network testing
Chrome DevTools "Slow 3G" preset is a good proxy for Nepali 4G under load. Test there before claiming the site is fast. WebPageTest with a Mumbai or Singapore endpoint gives realistic numbers for international visitors to your Nepali site.
Service worker caching
For repeat visits, a service worker that caches the app shell (HTML, critical CSS, JS, fonts) turns subsequent loads into instant ones — works even when the user is offline temporarily. Workbox makes this trivial in Next.js / Astro. The catch: cache invalidation. Version your cache key so a deploy busts stale assets. For richer offline-first patterns useful in rural Nepal, see our offline-first guide.
Third-party script budget
- Google Analytics 4: ~50 KB. Acceptable but lazy-load after first paint
- Facebook Pixel: ~70 KB. Audit whether you actually need it
- Live chat (Tawk.to, Intercom): 100-400 KB. Defer until user shows intent (scroll past hero)
- A/B testing (VWO, Optimizely): 100-200 KB + render-blocking. Reconsider before adding
- YouTube embeds: 600+ KB per embed. Use a click-to-play poster image and load iframe on demand
- Fonts from Adobe Typekit: additional handshake; prefer self-hosted woff2
A Core Web Vitals improvement playbook
When we audit a slow Nepali site, the order of operations that yields the biggest wins fastest:
- Week 1 — image audit: convert raster images to WebP/AVIF, regenerate responsive variants, add
loading="lazy"below the fold. Often cuts 40-60% of page weight - Week 1 — font subset: subset Devanagari + Latin to the characters used; self-host woff2; preload only the most critical face. Cuts 100-300 ms from LCP on cold visits
- Week 2 — JS audit: bundle analyzer, remove unused libraries, defer non-critical scripts, split routes. Typical 30-50% JS reduction
- Week 2 — CDN: Cloudflare with caching rules tuned for HTML and asset versions. Free-tier wins here
- Week 3 — render path: inline critical CSS, preload critical hero asset, eliminate render-blocking scripts in
<head> - Week 4 — measure on RUM: set up Cloudflare Web Analytics or a similar privacy-respecting tool to measure real user performance, not just lab
When to stop optimising
Sub-1.5 s LCP on 3G is the diminishing-returns line for most Nepali sites. Beyond that, marginal speed gains rarely shift conversion meaningfully. Focus shifts to: feature delivery, conversion-rate work, content quality. Performance is an enabler, not the product. Track Lighthouse + RUM monthly; alert on regressions rather than chasing every-ms gains.
Frequently asked questions
What Lighthouse score should I target?
For mobile: 75+ Performance score on Lighthouse Mobile preset. 90+ is excellent. Below 50 means real users are abandoning — fix immediately. Test against your homepage and one product page; the average matters less than the worst.
Does Cloudflare slow things down for Nepali users?
No. Cloudflare's edge network includes points-of-presence near Nepal (Singapore, Mumbai). For most Nepali users, Cloudflare adds < 50ms of network round-trip while cutting much more from caching.
How much can I improve a slow site?
Practically: a site at 2.5s LCP can usually reach 1.5s with 1-2 weeks of focused work (image optimisation, font subsetting, JS audit). Beyond that, marginal improvements get expensive.
Are PWAs worth it for Nepali users?
Yes for repeat-visit-heavy products. Offline support + add-to-homescreen drive engagement on flaky networks. See our PWA guide.
What's the single biggest mistake I see in Nepali sites?
Hero videos loaded from Vimeo or Mixkit (3-15 MB) on the homepage. They wreck LCP and TBT simultaneously. Use a poster image or self-host a heavily-compressed video.
Should I use AMP?
No — Google has deprioritised AMP-only ranking signals since 2021. The performance discipline AMP enforces is achievable in regular HTML. Build fast pages directly; skip AMP.
What about HTTP/3?
Cloudflare and major hosts support HTTP/3 in 2026. Performance lift is real on lossy networks (rural Nepali mobile). Enable it; it is one toggle.
Who can build this in Nepal?
Praxium Labs — Nepal's AI and automation consultancy, based in Lalitpur — designs and builds the systems described in this guide for Nepali businesses and for international teams hiring from Nepal. Start a project or see all services.