How we measure your speed
No cherry-picked servers. No thumb on the scale. Here's exactly what happens when you click “Run a speed test.”
The infrastructure
Transfer tests run through a Cloudflare Worker, not our server. The Worker runs at the Cloudflare location geographically closest to you, typically within 50 miles. This matters because the test measures the connection between you and the internet, not between you and a machine we happen to rent.
Ookla's model lets ISPs host their own test servers. A well-placed ISP server can make a throttled connection look faster than it is. We don't give ISPs that option.
Warmup phase
Before timing starts, we open 12 parallel connections and read as much data as the server will send for up to 5 seconds, without recording anything toward your result. This saturates TCP slow-start and gives your connection time to ramp to its real capacity. We also measure how fast data arrived during warmup; that estimate determines how many streams to open for the actual download test.
Without warmup, the first few seconds of a test show artificially low speeds; TCP is still negotiating how fast to go. Most speed tests skip this step. We don't.
Download measurement
We open 8 to 48 parallel download streams; the count is chosen from the warmup speed estimate. Faster connections need more parallel streams to overcome TCP congestion window limits and fully saturate the pipe. We sample throughput every 500 ms for up to 15 seconds.
Early exit: after a minimum of 5 seconds, if the last 4 samples are within 15% of each other, the result has stabilised and we stop early. You don't wait the full 15 seconds for a result that's already clear.
Sample trimming: we discard the bottom 25% of samples, the ones collected while TCP was still ramping up. The remaining samples are averaged to produce your download speed.
Why your number may differ from Ookla
If you've run Ookla before running this test, our number is probably lower. That's not a bug.
The biggest reason is server placement. Ookla lets ISPs host their own test servers, often inside the ISP's own network. Traffic to those servers never touches the open internet; it gets the red-carpet treatment your normal traffic doesn't. Our tests run through Cloudflare's edge network, the same path your actual downloads and video calls use.
Our number is what your connection delivers to the internet. Ookla's number is often what your connection delivers to your ISP's own equipment. Neither is wrong. They're measuring different things.
If you want to know whether your ISP is holding up their end of the deal for real-world usage (streaming, remote work, video calls), our number is the one that tells you.
Upload measurement
We send 4 to 24 parallel upload streams of 1 MB each, for up to 12 seconds. The stream count scales with connection speed, the same tiers as download, at half the count. Throughput is sampled every 500 ms and the bottom 25% of samples are trimmed, the same as download.
Latency and jitter
We send 3 ping requests to our server and record the round-trip time for each.
- Latency is the median of the 3 samples, more stable than a single reading and not skewed by an outlier.
- Jitter is the mean of the absolute differences between consecutive samples, the same method defined in RFC 3550. It captures how much your latency bounces around from one request to the next. A connection with 20 ms latency and 18 ms jitter is far worse for video calls than one with 40 ms latency and 2 ms jitter. Jitter is the number most tools don't show you.
What we don't do
- We don't let ISPs host test servers that make their own networks look faster.
- We don't adjust or weight results based on your ISP or location.
- We don't store your raw IP address. It's SHA-256 hashed before it touches our database.
- We don't sell your results, individually or in aggregate.
Questions about the methodology: sloth@internetsloth.com