Home

The 14kb Problem

By Joel Dare - Written September 15, 2025

How I craft web pages that load in one round trip, even on flaky mobile connections.

There’s a web performance problem rooted in how browsers fetch web pages

I was designing for this problem even though I had never heard about the mechanics of it before. Then a user emailed me and said:

(Your writing) might’ve benefited from the mention of (the) 14kb problem. (It’s) a minor hack, but nonetheless related to what you’re talking about.

The first round trip must be under 14kb

When a browser makes a TCP connection the browser starts slowly. The server can only send a little bit of data in the first round trip then the connection ramps up.

The first burst of data allowed is about 10 TCP segments or about 14kb of data.

If your HTML fits under that 14kb cap (compressed) it can be delivered in a single round trip. If it’s larger than this then the browser has to wait for another round trip time (RTT).

Each round trip adds delay and some mobile networks have a 400ms RTT

After the first request and response the server must wait for acknowledgments (ACKs) before sending more data. That’s where these extra RTT delays come from.

Here are some standard RTT ranges for different connection types:

Connection Type Typical RTT
Mobile 2G (GPRS/EDGE) 600–1000 ms
Satellite (GEO) 500–600 ms
3G (UMTS/HSPA) 200–500 ms
4G LTE 30–70 ms
5G (SA/NSA) 10–30 ms
Starlink (LEO satellite) 25–50 ms
DSL 15–40 ms
Fiber 5–20 ms

The typical trips look like this

The browser requests your file, say index.html. Then it must wait for the RTT. If that first file is larger than 14kb it must make additional requests. After each ACK it can make an additional, larger, request. So, the requests might look like something like this:

Websites today are quite large by this measure

The first website I checked was a relatively large React application with many inline styles. The HTML size was 55.59kb. That means it needed to make three requests and wait for two ACKs before it could deliver the full HTML file. On a 3G connection it would take an extra 800ms to download the html file.

A second site I checked, a billion dollar entertainment company, had an HTML size of 58.99KB. It took 218ms to retrieve that file on my 1Gb Fiber connection. And that was just one of 103 resources that were requested on that page. The page took 4 or 5 seconds to paint. This seems pretty normal for the web these days. Shaving 3kb from that html file would save an extra round trip.

We don’t need to obsess over this 14kb limit

Maybe we don’t need to obsess over it but we do need to strive for smaller pages.

Build your next site in pure HTML and CSS

Want to build your next site in pure HTML and CSS? Join the free Five-Day Neat Starter Email Course and build a lean, production-ready page before Friday.

Email Me the Crash Course


JoelDare.com © Dare Companies Dotcom LLC

Terms - Privacy