Internet Speed Test

Server assisted New Internet & Network

Moves random data between your browser and the Cloudflare data centre that serves this page, in requests that grow from 100 KB to 25 MB, and reports the sustained download and upload rate, idle latency and jitter from 20 pings, the latency while the line is busy and a bufferbloat grade. It measures that one path, not the speed your internet plan promises or your speed to other websites.

Privacy: The test moves random data between your browser and the Cloudflare edge that serves this site to you. The result is shown only to you and is not stored; a one-way hash of your address is used only for per-minute request limits.
Loading tool…

What does an internet speed test actually measure?

A speed test times how fast data moves between your device and one test server, in each direction, and how long small packets take to make the round trip, idle and while the line is busy. The result describes that path at that moment: a single TCP stream is limited by the round-trip time and its window (RFC 6349), and a large rise in latency under load, called bufferbloat (RFC 7567), often hurts calls and games more than a lower top speed does (RFC 9318).

How to use Internet Speed Test

  1. Close other downloads, video and cloud backups on this line; for the most telling result, use a network cable or sit near the router.
  2. Choose Standard, or Light if your data is metered, then press Start the test.
  3. Wait about half a minute while the test measures idle latency, then download speed, then upload speed; the status line shows the latest figure.
  4. Read the result cards, then the connection details and the request table; press Copy results to keep the figures with the date and edge code.

Internet Speed Test features

  • Download and upload throughput measured with random, incompressible data, so no compression or cache can flatter the result
  • A ramp of request sizes from 100 KB to 25 MB that stops growing once a request lasts 1.5 seconds, so slow lines are not flooded and fast lines are still filled
  • Idle latency as the median of 20 pings and jitter as the average change between consecutive pings, with the server's own processing time subtracted from every sample
  • Latency under load: pings keep running during the download and the upload, and the rise over idle latency is graded from A+ to F for bufferbloat
  • The Cloudflare edge that answered (its location code), your public address and network, and every request with its size, time, server time and rate
  • A light setting for metered connections and a Stop button that keeps what was already measured

Inputs and outputs

Inputs

  • Data use: Standard (at most about 108 MB down and 97 MB up on a fast line) or Light (at most about 32 MB down and 22 MB up).
  • Start and Stop: nothing is sent until you press Start; Stop ends the test and keeps the samples already taken.

Outputs

  • Result cards: download and upload rate (90th percentile, marked incomplete and a lower bound when Stop, the limit or failures cut that direction short), idle latency, jitter, latency under load and the bufferbloat grade.
  • Connection details: the Cloudflare edge measured, your public address and network, the HTTP protocol, pings answered, loaded latency per direction, data transferred and requests made.
  • A plain reading of the result and a table of every request with its direction, size, time, server time and rate.

Internet Speed Test example

A fibre line in Riyadh tested over Wi-Fi with the Standard setting (figures vary with the line, the device and the time)

Input:

Data use: Standard · Start the test

Output:

Download: 94.6 Mbps · Upload: 38.2 Mbps · Latency (idle): 9.8 ms · Jitter: 1.4 ms · Latency under load: 61.3 ms · Bufferbloat grade: B (+51.5 ms)
Cloudflare edge measured: RUH · Network: Example Telecom (AS64500) · Pings answered (idle): 20 / 20 · Data downloaded: 108.1 MB · Data uploaded: 32.1 MB
Reading: Latency rises noticeably under load: calls may stutter while something downloads; a router with SQM (fq_codel/cake) fixes it.

How to read the Internet Speed Test results

Compare the download and upload rates with what you need at the same time on this line (several video streams, a call, a backup), not with the maximum printed on the plan. An upload far below the download is normal on ADSL, cable and most mobile lines.

Idle latency to a nearby edge is usually a few milliseconds to a few tens on fixed lines and more on mobile networks. Hundreds of milliseconds point to a satellite link, a distant VPN exit or a congested path.

Jitter of a few milliseconds goes unnoticed; tens of milliseconds make calls and games uneven because packets arrive at irregular intervals.

The bufferbloat grade is the extra latency while the line is busy: A+ and A mean calls survive a large download; B and C mean they stutter; D and F mean the connection becomes unresponsive whenever it is busy. Enabling SQM (fq_codel or cake) on the router is the usual cure.

A missing figure (shown as a dash) was not measured, for example because every request of that direction failed or hit the limit; it is never a zero.

When to use Internet Speed Test

  • Finding out whether choppy video calls come from the line itself or from the Wi-Fi, by testing once over Wi-Fi and once over a cable.
  • Measuring bufferbloat before and after turning on SQM or QoS on a home or office router.
  • Comparing a fixed line with a mobile hotspot at the same desk before choosing which one to work on.
  • Giving a support team reproducible numbers with the time, the edge code and the network name when you report a slow connection.

Troubleshooting

  • A limit message: one address may make 12 download requests, 8 upload requests and 60 pings per minute. A full test uses most of that; wait a minute before the next run.
  • Much lower than expected: repeat over a cable, pause other devices and cloud sync, switch off a VPN or proxy, and try another browser. If only Wi-Fi is slow, the router position, band (2.4 or 5 GHz) or interference is the cause.
  • The upload fails or stops early: some corporate proxies, security software and captive portals block or inspect large uploads. Try another network or the Light setting.
  • No bufferbloat grade: the first reading under the result says which pings are missing. If the idle pings were refused by the limit, wait a minute and test again. If the pings during the transfers got no answer, run the test again; if it keeps happening, the line drops small packets while busy, which is itself a sign of congestion.

Frequently asked questions about Internet Speed Test

Why is my result lower than the speed my provider sells?

A plan is sold as "up to" a rate on the provider's own network, while this test measures the whole path from your browser to the Cloudflare edge that serves this site: your Wi-Fi or cable, every other device using the line at that moment, your router, the provider's network and its link to Cloudflare. Run the test over a cable with other devices idle to see what the line itself delivers.

Which server does the test measure against?

The Cloudflare data centre that answers this site for you, chosen by Cloudflare's anycast routing, usually the nearest one. The result shows its three-letter location code (for example RUH, JED, DXB or BOM). You cannot pick another server, and a speed to that edge says nothing certain about your speed to a game server or a video service elsewhere.

How much data does one test use?

The standard test downloads at most about 108 MB and uploads at most about 97 MB; on slower lines it uses much less, because the requests stop growing once one takes 1.5 seconds and each direction ends after about 20 seconds. The light setting is capped at about 32 MB down and 22 MB up, which suits metered mobile data.

What is latency under load, and what does the bufferbloat grade mean?

While the download and upload run, the test keeps sending small pings. If their time rises sharply compared with the idle pings, packets are waiting in an oversized buffer, usually in the router or modem: that is bufferbloat, and it is why calls and games stutter while something large downloads. The grade runs from A+ (under 5 ms extra) to F (400 ms or more).

Why does the headline speed use the 90th percentile?

The first requests are slowed by TCP slow start, so averaging every request would understate a fast line. Like Cloudflare's own speed test, the headline is the 90th percentile of the per-request rates: the sustained speed once the connection is up to speed, with the single best request left out. The table lists every request so you can check it.

Why did the test stop with a limit message?

To keep the server fair for everyone, one address can make 12 download requests, 8 upload requests and 60 pings per minute, and only two transfers at the same time. A full test uses most of that, so a second test straight away runs into the limit. Wait a minute and start again.

Technical notes

GET /api/v1/internet/speed/down?bytes=N streams N random bytes with a fixed Content-Length and Cache-Control: no-store; POST /api/v1/internet/speed/up reads the uploaded random bytes, discards them and answers with the byte count and its own processing time; GET /speed/ping is an empty 204. The ping and download responses carry Server-Timing: cf;dur=…, the server time since the request entered the Worker, which is subtracted from the browser's measurement.

Each request is timed with the browser's Resource Timing data when available (request start to the last byte) and otherwise with the page clock. Its rate is bytes × 8 divided by that time minus the server time; the headline is the 90th percentile (linear interpolation) of the successful requests in each direction, the approach of Cloudflare's open-source speed test. RFC 6349 explains why a single TCP stream is bounded by the round-trip time and the window, which is why the ramp needs large requests on fast lines.

Idle latency is the median of 20 sequential pings, jitter the mean absolute difference between consecutive successful pings (a simple form of the delay variation of RFC 3393), and loaded latency the median of the pings sent every 0.5 s while a transfer runs (up to 10 per direction). The bufferbloat grade compares the higher loaded median with the idle median: under 5 ms A+, under 30 A, under 60 B, under 200 C, under 400 D, otherwise F. RFC 7567 and RFC 9318 describe why latency under load matters more to users than peak speed.

Each direction makes at most 10 downloads or 8 uploads (6 and 5 with Light), stops growing once one lasts 1.5 s and ends after three such long samples, after about 20 s, or after two failed requests in a row; a request still running after 30 s is stopped. The server allows 12 downloads, 8 uploads and 60 pings per address per minute and two transfers at once, and cuts any transfer off after 60 s.

Limitations and methodology

It measures the path between this browser and the Cloudflare edge that serves this site, usually the nearest one. It is not a measurement of the speed in your contract, and speeds to servers elsewhere (a game server, a video service, another country) can differ.

One request at a time on one connection: on multi-gigabit lines or very long paths a single stream may not fill the line, and a slow device or a busy browser tab can limit the result before the line does.

A short snapshot: Wi-Fi conditions, other users of the line and the time of day change the figures from run to run. Through a VPN, the test measures the VPN's path.

The upload time is measured from the browser's side and includes the time the browser needs to hand the data to the network; the server time it reports is subtracted.

Security and privacy

Only random bytes generated by your browser are uploaded, and the downloads are random bytes; no file or data from your device is sent. The results are shown only on this page and are not stored.

Your public address is read from your own request to show you the network and edge you were measured on, and is used in hashed form only for the per-minute request limits.

References