Why Your Mobile Checkout Breaks on Bangladesh Networks (And How to Fix It)
85% of Bangladesh ecommerce traffic is mobile, but most checkout pages fail on 2G/3G networks. Learn how to optimize mobile checkout for slow connections and increase conversions.

Customer clicks "Proceed to Checkout" on their phone.
Loading... loading... loading...
15 seconds pass. Page still loading.
They close the browser. Order lost.
In Bangladesh, 85% of ecommerce traffic comes from mobile devices. But most checkout pages are optimized for desktop on fiber internet, not mobile on 2G/3G.
If your mobile checkout takes more than 3 seconds to load, you're losing 40-60% of potential sales. Let me show you exactly how to fix this.
The Bangladesh Mobile Reality
Here's what you're dealing with:
Network Speed Distribution:
- 4G LTE: 20-25% of users (major cities only)
- 3G: 40-45% of users
- 2G / Edge: 30-35% of users (still!)
Average Mobile Speeds:
- 4G: 10-15 Mbps (when it works)
- 3G: 2-4 Mbps
- 2G: 50-100 Kbps (yes, KILOBITS)
User Behavior:
- 60% turn off mobile data to save money
- They only turn it on when needed
- Connection frequently drops mid-session
- They're on the cheapest data plans (500MB/month)
Your 5MB checkout page? That's 1% of their entire monthly data allowance.
Why Desktop-Optimized Checkouts Fail on Mobile
Problem 1: Page Size Too Large
Typical ecommerce checkout page:
- HTML: 50 KB
- CSS: 200 KB
- JavaScript: 1.5 MB
- Images: 800 KB
- Fonts: 300 KB
- Total: 2.8 MB
On 3G (3 Mbps):
2.8 MB ÷ 3 Mbps = 7-10 seconds load time
On 2G (80 Kbps):
2.8 MB ÷ 80 Kbps = 4-5 MINUTES load time
Customer waits 10 seconds → Closes tab → You lose the sale.
Problem 2: Too Many HTTP Requests
Every resource (image, CSS file, JavaScript file) requires a separate connection.
Your checkout page might load:
- 15 CSS files
- 20 JavaScript files
- 30 images/icons
- 5 fonts
- 10 tracking scripts
Total: 80+ HTTP requests
On mobile with high latency (300-500ms per request), this is BRUTAL.
Problem 3: Blocking JavaScript
Your checkout uses React/Vue/Angular. The page is blank until JavaScript loads and executes.
On desktop:
JavaScript loads in 0.5 seconds → Page appears
On 2G mobile:
JavaScript loads in 45 seconds → User already left
Problem 4: Unoptimized Images
You have a beautiful product image in the cart: product.jpg - 2MB, 3000×3000px
On mobile:
- Screen width: 375px
- Image displayed at: 100×100px
- But full 2MB image still downloads
You're loading 30x more data than needed.
Problem 5: Heavy Fonts
You're loading custom fonts (3 weights × 2 styles = 6 font files × 100 KB = 600 KB just for fonts).
On 2G, that's 60 seconds of loading just to display text in the "right" font.
How to Optimize Mobile Checkout for Bangladesh
Fix 1: Reduce Page Weight to Under 500 KB
Target: Total page size < 500 KB
How:
1. Minimize JavaScript
- Remove unnecessary libraries
- Code-split (load only what's needed for checkout)
- Defer non-critical scripts
Before: 1.5 MB JavaScript
After: 200 KB (critical) + 300 KB (deferred)
2. Optimize Images
- Use WebP format (60% smaller than JPEG)
- Serve appropriate sizes (
srcset) - Lazy-load images below fold
Before: 800 KB images
After: 100 KB images
3. Inline Critical CSS
- Inline above-the-fold CSS
- Defer non-critical CSS
Before: 200 KB external CSS
After: 30 KB inline + 50 KB deferred
4. Use System Fonts
- Skip custom fonts on checkout
- Use
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto
Before: 600 KB fonts
After: 0 KB (system fonts)
Total page size:
Before: 2.8 MB
After: 330 KB
Load time on 3G:
Before: 10 seconds
After: 1.5 seconds
Fix 2: Reduce HTTP Requests to Under 20
Techniques:
1. Bundle Resources
- Combine CSS files into one
- Combine JavaScript into one bundle
- Use CSS sprites for icons
2. Inline Small Resources
- Inline small images as base64
- Inline SVG icons directly in HTML
3. Remove Third-Party Scripts
- Defer Google Analytics
- Remove unnecessary tracking pixels
- Load chat widgets AFTER checkout complete
Before: 80 requests
After: 12 requests
Load time improvement: 40-50%
Fix 3: Server-Side Render Critical Content
Instead of blank page until JavaScript loads:
Bad (Client-Side Rendering):
1. HTML loads (blank page)
2. JavaScript loads (still blank)
3. JavaScript executes (finally shows content)Good (Server-Side Rendering):
1. HTML loads with content already rendered
2. JavaScript enhances interactivityCustomer sees content immediately, even on slow connections.
Fix 4: Implement Progressive Enhancement
Build your checkout to work even if JavaScript fails to load.
Baseline: Plain HTML form that submits to server
Enhanced: JavaScript adds validation, auto-save, etc.
This way, even if JavaScript takes 30 seconds to load, the customer can still complete checkout using the basic HTML form.
Fix 5: Add Offline Support
Network drops mid-checkout? Save form data locally.
Implementation:
// Save form data to localStorage on every change
formInput.addEventListener('input', (e) => {
localStorage.setItem('checkoutData', JSON.stringify(formData));
});
// Restore on page load
const savedData = localStorage.getItem('checkoutData');
if (savedData) {
// Pre-fill form
}Customer loses connection → Refreshes page → Form data still there.
Fix 6: Optimize for Touch Targets
On mobile, fat fingers miss small buttons.
Minimum touch target size: 44×44 px (Apple) or 48×48 px (Android)
Bad:
- Checkbox: 16×16 px
- "Remove item" link: 10 px text
Good:
- Checkbox: 44×44 px clickable area
- "Remove item" button: 48 px height
Fix 7: Simplify the Mobile Checkout Flow
Desktop: All fields visible at once
Mobile: One step at a time
Step 1: Contact Info
- Name
- Phone
[Next]
Step 2: Delivery Address
- Address
- City
[Next]
Step 3: Confirm
- Review order
- Place order
Why this works:
- Less overwhelming on small screen
- Faster page loads (smaller forms)
- Clear progress indicator
- Can save after each step
Fix 8: Use Mobile-Friendly Input Types
Help users with the right keyboard.
Bad:
<input type="text" placeholder="Phone">Shows full QWERTY keyboard. User has to switch to numbers.
Good:
<input type="tel" placeholder="Phone">Shows number pad immediately.
Other useful types:
type="email"→ Shows @ and .com keystype="number"→ Number padinputmode="numeric"→ Number keyboard without spinner
Fix 9: Add Loading States
Don't leave users guessing if something's happening.
When they click "Place Order":
Bad:
Button does nothing. User clicks 5 more times. Multiple orders submitted.
Good:
Button shows "Processing..." and disables. User knows to wait.
Even better:
Show progress: "Validating order... Creating order... Sending confirmation..."
Fix 10: Test on Real Devices with Real Networks
Don't just test on:
- Latest iPhone on office WiFi
- Chrome DevTools "Slow 3G" simulation
Actually test on:
- Budget Android phone (৳8,000-12,000 range)
- Real 3G connection (turn off WiFi, use mobile data)
- 2G connection (enable 2G only mode)
Visit your checkout page. Try to complete an order.
If you can't complete it in under 2 minutes on 2G, your customers can't either.
Mobile Checkout Optimization Checklist
Page Speed
- [ ] Total page size < 500 KB
- [ ] Load time < 3 seconds on 3G
- [ ] HTTP requests < 20
- [ ] Images optimized (WebP, correct sizes)
- [ ] JavaScript deferred/minified
- [ ] CSS inlined (critical) / deferred
User Experience
- [ ] Form works without JavaScript
- [ ] Touch targets ≥ 44×44 px
- [ ] Correct input types (tel, email, number)
- [ ] Loading states for all actions
- [ ] Offline form data persistence
- [ ] One-column layout
- [ ] Large, clear buttons
Testing
- [ ] Tested on budget Android phone
- [ ] Tested on real 3G connection
- [ ] Tested with JavaScript disabled
- [ ] Tested with images blocked
- [ ] Tested with network interruption
The Impact: Before & After
Before optimization:
- Page size: 2.8 MB
- Load time (3G): 10 seconds
- HTTP requests: 80
- Mobile conversion rate: 1.5%
After optimization:
- Page size: 400 KB
- Load time (3G): 2 seconds
- HTTP requests: 15
- Mobile conversion rate: 4.2%
Result: 2.8x more mobile sales from the same traffic.
Special Note for Bangladesh: Data Usage Matters
In Bangladesh, data costs are a real concern for customers.
Heavy checkout page:
5 MB × ৳0.02/MB = ৳0.10 per checkout attempt
Over 10 attempts (browsing, cart, rechecking):
10 × ৳0.10 = ৳1.00 spent on data
That's a psychological barrier. "I spent ৳1 just trying to buy a ৳200 product?!"
Optimized checkout:
400 KB × ৳0.02/MB = ৳0.008 per load
Customers notice this. They'll come back to the fast, light site.
Tools for Testing Mobile Performance
1. Google PageSpeed Insights
pagespeed.web.dev- Shows mobile performance score
- Gives specific recommendations
2. WebPageTest
webpagetest.org- Test from different locations
- Choose "3G" or "2G" connection
- Shows filmstrip of page loading
3. Chrome DevTools
- Press F12 → Network tab
- Choose "Slow 3G" throttling
- Disable cache
4. Real Device Testing
- Use your own phone
- Turn on mobile data
- Test in areas with poor signal
The Bottom Line: Mobile-First for Bangladesh
Desktop optimization: Nice to have
Mobile optimization: CRITICAL
In Bangladesh:
- 85% traffic is mobile
- 70% are on 3G or worse
- Data is expensive
- Patience is limited (3 seconds max)
If your checkout doesn't work smoothly on a budget Android phone over 3G, you're losing the majority of your potential customers.
Optimized your mobile checkout but still losing orders?
Try FollowUp — Automatic SMS/WhatsApp follow-up for customers who abandon mobile checkout.

