How Speedtesty measures your speed (and why we trust Cloudflare's method)
A look under the bonnet: the open-source engine, the ramp-up method, the statistics, and why the server you test against matters as much as the test itself.
Speed tests are easy to build badly. Download one big file, divide by time, show a number. It works — and it is misleading in a dozen ways. This is how Speedtesty does it differently, and why we chose to build on Cloudflare's work rather than start from scratch.
The engine is open source
Every measurement on Speedtesty is performed by @cloudflare/speedtest, the MIT-licensed TypeScript engine behind Cloudflare's own speed.cloudflare.com. We don't change the engine or its maths. Anyone can read exactly what it does. Our contribution is the screen in front of it: six numbers, plain words, no clutter.
The server is right next to you
A speed test is only as good as the far end. If the test server is slow, distant or overloaded, you measure it, not your connection. Cloudflare operates one of the largest edge networks in the world, with data centres in hundreds of cities; when your browser connects, you are routed to the nearest one — typically within your own metro area. The "Server" line under your results tells you which one.
Step by step
1. Ping. The engine requests a zero-byte file around twenty times and records, for each, the time from request start to the first byte of the reply. Your ping is the median — so one unlucky sample can't skew it. The average gap between consecutive samples is your jitter.
2. Download, ramping up. Rather than one big file, the engine requests rounds of increasing size: 100 KB, 1 MB, 10 MB, 25 MB, 100 MB, 250 MB. As soon as a request takes longer than about a second, larger rounds are skipped. A slow mobile connection therefore finishes in a few seconds with small files, while a gigabit line is given files big enough to actually saturate it. Your download speed is the 90th percentile of all samples — high enough to ignore the slow start of each transfer, low enough to ignore flukes.
3. Upload. The same ramp, posting data to the server.
4. Latency under load. While download and upload are running, small ping requests continue every ~400 ms. Their median is your latency under load — the reaction time of your connection when it is busy, which is what you experience when someone else in the house is streaming.
5. Packet loss. 1,000 small UDP packets go through a Cloudflare relay and are echoed back. Missing ones are counted. More here.
6. The verdict. When everything finishes, the engine computes Cloudflare's Aggregated Internet Measurement scores for streaming, gaming and video calls. We turn those into Excellent / Good / Okay / Likely to struggle and write one sentence you can act on.
What we deliberately leave out
Cloudflare's own page shows timelines, percentile charts and per-request detail. Great for engineers; overwhelming for everyone else. We show the six numbers that decide your experience — download, upload, ping, latency under load, jitter, packet loss — and explain each one in a sentence you can tap to read. If you want the deep charts, speed.cloudflare.com is one click away and will give you the same results, because it is the same engine.
Privacy
The test runs entirely between your browser and Cloudflare's servers. Speedtesty has no accounts, no database and no advertising. We never see or store your results. The only thing saved on your device is whether you prefer dark mode.
See your own numbers
Run the test — it takes about 20 seconds and needs no account.