You've probably run a speed test hundreds of times. Open a site, press the big "Go" button, stare at a spinner for twenty seconds, and get three numbers you immediately screenshot to either complain about or brag about. But have you ever stopped to wonder what's actually happening during those twenty seconds? Because there's quite a bit going on, and understanding it will change how you read the results.

Step 1: Finding a server

Before any data starts flying around, the speed test tool needs to pick a test server. Most services — Speedtest by Ookla, Fast.com, Cloudflare's test — maintain a network of servers scattered across the globe. The tool pings a handful of nearby candidates and picks the one that responds quickest. This is important because the server you test against dramatically affects your results. Testing against a server in your city? You'll usually get great numbers. Testing against one on a different continent? Not so much, and that's not your ISP's fault.

Step 2: The ping test

First up is latency, usually shown as "ping" and measured in milliseconds. The tool sends a tiny packet to the server and measures how long it takes to get a reply. It does this several times and typically reports the lowest value. Think of it as reaction time — it doesn't tell you how fast data can move, just how quickly the connection responds. If you're browsing the web or watching videos, ping barely matters. But if you're gaming online or on a video call, even 20ms of extra latency can feel laggy.

What most people don't realize is that ping can swing wildly depending on when you test. Run a speed test at 3am and you'll see beautifully low ping. Do it at 7pm when the entire neighborhood is streaming Netflix, and that number climbs. The connection itself hasn't changed — the traffic load has.

Step 3: Download speed

This is the number everyone cares about. The tool asks the server to send a large chunk of data — usually several hundred megabytes — and measures how fast it arrives. But it doesn't just open one connection and measure the throughput. It opens multiple parallel TCP connections (usually 4 to 8) and adds up the bandwidth across all of them. Why? Because a single connection can be bottlenecked by things that have nothing to do with your actual internet speed, like TCP window sizes or packet loss on one particular route. Multiple connections paint a more accurate picture of what your link can really do.

The test ramps up gradually, too. It starts with a smaller transfer to warm up the connection (yes, TCP connections literally have a "slow start" phase built into the protocol), then opens the floodgates. If the test is too short, you'll measure the slow-start phase and get an artificially low number. If it runs too long, you're wasting time and bandwidth. Most tests find the sweet spot at about 10 to 15 seconds of peak throughput.

Step 4: Upload speed

Same concept in reverse — your device sends data to the server. For most home connections, upload speed is significantly lower than download speed because ISPs allocate bandwidth asymmetrically. They assume you consume more data than you produce, which was true ten years ago but is increasingly inaccurate in the age of video calls, cloud backups, and TikTok uploads.

One quirk here: your upload test can be affected by your download test if the tool runs them sequentially without a cooldown. The network buffers in your router might still be draining from the download phase, creating temporary congestion that makes your upload look worse than it really is. Better speed test tools add a brief pause between phases for exactly this reason.

Why your results are probably wrong

Here's the uncomfortable truth: speed tests are snapshots, not diagnoses. You're measuring one path, to one server, at one moment in time. Your actual browsing experience involves dozens of servers, different routes, varying levels of congestion, and your own device's processing overhead. Running a speed test over Wi-Fi? You're measuring your Wi-Fi link, not your internet speed. Running it while your kid is downloading a game on the PS5? You're splitting bandwidth and the number is meaningless.

If you want a number you can actually hold your ISP accountable for, test over a wired Ethernet connection, with nothing else using the network, to at least three different servers, at different times of day. Then average the results. Anything less is just a vibe check.