Which server does the test use?
The Cloudflare data center nearest to you. Cloudflare's speed test server is anycast: one address, answered by whichever of its data centers your provider's network reaches first. From Sweden that is usually Stockholm, from Germany Frankfurt. The result names the one that answered.
The page asks the server which data center it is (its /cdn-cgi/trace line colo, an airport code such as ARN for Stockholm) before the first byte of the test, so the name is the server that measured you. You cannot pick another: your provider's routing decides. To see how your line does to another country, connect a VPN there and test again; the result then names that country's data center.
A short trip to a big data center measures your own line, which is what a speed test is for. A server inside your provider's network can show more than you will ever get from the rest of the internet; a server far away mostly measures the distance.
How the test works
Ping and jitter
Twenty empty requests, one after another. Each is timed by the browser from the request leaving to the first byte back, without the time the server says it spent, so it is the round trip on the wire. Ping is the median; jitter is the average change from one to the next.
Download and upload
Four requests at a time (six above 200 Mbps over HTTP/2 and 3), each sized to last about a second and a half at the speed so far (three on a long round trip), so they grow from 100 kB as the line shows what it can do. Downloaded bytes are counted as they arrive, ten times a second; an upload counts once the server has answered it, spread over the time it took. A direction stops once three seconds in a row agree within 10 %, after 5 to 12 seconds. The result is every byte after the connection has sped up, over that time.
Ping under load
While each direction runs, a small request every 0.4 seconds. When Cloudflare's 1.1.1.1 answers from the same data center, they go there on a connection of their own, so they wait only in the queues your line builds, not behind the test's own data; otherwise they go to the test's server. How much slower these answer than when the line was quiet is the bufferbloat grade, and one that gets no answer within 5 seconds counts as 5 seconds.
The method follows Cloudflare's open-source speed test, with several downloads and uploads at once so fast lines are filled. Packet loss is not measured: from a browser it needs a TURN relay server with its own credentials, and a guess would be worse than no number.
What each number means
| Download | How fast data reaches you, in megabits per second (8 Mbps is 1 MB a second). Streaming, downloads and web pages use it |
|---|---|
| Upload | How fast data leaves you. Video calls, backups and sending big files use it; many home lines upload far slower than they download |
| Ping | The round trip to the server and back in milliseconds, with the line quiet. Under 20 ms is quick, over 100 ms is felt in games and calls |
| Jitter | How much the ping wanders from one moment to the next. Calls stay smooth under about 30 ms |
| Ping downloading / uploading | The ping while the line is full in that direction. The closer to the idle ping, the better |
| Bufferbloat | A grade from the biggest rise: A+ under 5 ms, A under 30, B under 60, C under 200, D under 400, F above |
What you need for what
| 4K streaming | About 25 Mbps down per stream (Netflix asks 15, YouTube 20) |
|---|---|
| HD video calls | About 3 Mbps each way, a ping under 150 ms while busy and jitter under 30 ms |
| Online games | Little speed, but a ping under about 40 ms that stays low when others use the line |
| Working from home with others | Add up what each person does at the same time, then leave a third spare |
Bufferbloat: why calls stutter when someone downloads
When a line is full, routers and modems queue data instead of sending it on, and every call, game and page waits in the same queue. A line with plenty of speed can still grade D: it is fast, but slow to answer while busy.
- Turn on smart queueing on your router if it has it: often called SQM, Smart Queue, QoS, or Adaptive QoS, with fq_codel or CAKE. Set it a little under your measured speeds.
- Test on a cable to see whether the queue is in your Wi-Fi or in the line.
- Grade B or better is fine for calls and games while others use the line.
Getting a true result
- Pause streams, downloads, cloud backups and game updates on every device first.
- Keep this tab in front while it runs: browsers slow down tabs in the background.
- Turn off a VPN unless you want to test it: the test then measures the VPN's route.
- Test a few times at different hours. Evenings are slower on busy networks; the history below the result keeps them side by side.
Questions
Usually Wi-Fi: through a wall or two it often carries less than the line. Other devices using the line, an older router and a busy evening network do the rest. Test on a cable next to the router; if that is still well under your plan, show your provider the result.
Each direction runs for 5 to 12 seconds at full speed, so it grows with your speed: about 150 MB on a 100 Mbps line, about 1.5 GB on 1 Gbps. A direction never goes past 1 GB, and on a phone or mobile data past 250 MB unless you choose Full test. The result says how much it used.
No. Nothing is sent until you press Start. Then your browser exchanges dummy data with speed.cloudflare.com and times small requests to one.one.one.one. Cloudflare sees your IP address and how much dummy data moved, as any server would (Cloudflare’s privacy policy). The numbers are worked out in your browser, and earlier results are kept in this browser only; Clear removes them.
A browser cannot send loose packets. Measuring loss means sending them through a TURN relay server, which needs credentials and costs money per gigabyte. Rather than guess, this test leaves it out. High jitter and a poor bufferbloat grade usually come with loss.
Not by choosing one: your provider's routing picks the nearest Cloudflare data center. Connect a VPN to the country you want and test again; the result shows which data center answered.
It could. Cloudflare's speed test server answers any website and Cloudflare publishes the code to use it, but it has never promised to keep doing so, and it can turn away requests it takes for automated traffic. If it refuses, the page says so instead of showing a wrong number.