Run a speed test

How we measure

Klyrix/speed measures your connection in your browser, against test servers we run ourselves or against Cloudflare’s global network. There are two sets of rules: version 2 for our own servers and version 1 for Cloudflare. Every result records which one it used, as methodology: "v2" or "v1", so results can be compared over time.

What you get

Where the test runs

When you press START, your browser asks for the list of our test servers nearest to you and sends a few tiny requests to each of them — four to every server, the first one discarded because it also opens the connection. At the same time it pings Cloudflare. Whichever server answered fastest leads the test if it answered within 40 ms and is at most 10 ms slower than the best Cloudflare figure. Otherwise the test runs on Cloudflare under the version 1 rules below. The choice is made once, before anything is measured, and the two sets of rules are never mixed in one result. The result names the server, for example Istanbul (IST).

On Cloudflare, every request goes to the data center Cloudflare routes you to, normally the nearest one. Before the test the page pings two copies of the test files: this site and a second host on Cloudflare Pages. It uses the second one for ping and download only when it is clearly nearer (its median ping under 70% of the site’s). The upload always goes to this site.

At busy times Cloudflare can send traffic to a farther data center. When your country has a Cloudflare data center but the test ran in another country, the result says so: the result may then be lower than your connection’s real speed.

On our own servers (version 2)

Most of our servers give up to about 950 Mbit/s and a few larger ones up to 4.75 Gbit/s, so a faster line is measured across several at once. Ping, jitter and latency under load always come from the nearest server. The download starts there with 4 request loops (6 on a larger one). Every second the test looks at the last full second: while the sources in use are together carrying 80% of what they can give, it adds more, stepping their number up through 1, 2, 3, 5, 8, 12. The upload does the same with 3 loops per server, 5 on a larger one.

Sources are added in a fixed order: the nearest server, then the larger servers, then Cloudflare, then our other servers — in other countries too, if the city has too few. Cloudflare joins as one more source (the download from the test files, the upload to this site), so a very fast line is not held back by how many servers we happen to own nearby.

A step is kept only if it makes the total more than 10% faster. If it does not, exactly those sources are dropped again and the test stops adding any. This is how a line that one server already fills never gets measured across a far server. Sources are added only in the first 6 seconds of each direction.

Every server’s bytes are counted on one shared clock, so the figure is the whole line, not a sum of separate tests. The measurement starts 2 seconds after the first byte, or 1 second after the last time the set of servers changed, whichever is later; from there 8 seconds are measured, and one direction never takes longer than 15 seconds. The windows and the averaging are the same as on Cloudflare.

Our servers speak HTTP/1.1 only, which gives each request loop its own connection. If a source drops out during a measurement, the others carry on and the result is marked server_lost. If the line was still filling everything we had when the sources ran out or the time to add more was up, the result is marked server_limited: your line may be faster than what our servers could show.

The result also carries a per-server breakdown: every server that was asked (up to 20), plus a line for Cloudflare when it joined, in the order the servers were offered, so the one that led is not necessarily first. A server that was asked and not used shows no speed, and each line gives at most one reason it was left out. Those per-server numbers are plain averages, so they do not add up exactly to the headline figure.

Ping and jitter

Download

Upload

From windows to one number

  1. The first 2 seconds are discarded: connections are still warming up.
  2. Of the remaining windows, the slowest 30% and the fastest 10% are dropped.
  3. The average of the rest is the result.

This favours the speed your line sustains over short peaks. With fewer than 4 windows left, no number is given.

Latency under load

During the download and the upload a ping runs every 250 ms. The median of the samples sent while the measurement was running is the latency under load for each direction.

On Cloudflare the ping travels on the same connection as the test traffic, so it also includes queues in the browser and the server. On our own servers it gets its own connection, so the figure is closer to the queueing on your line alone. Comparing the two methods on this number is therefore not exact.

Data used

Everything the test sends and receives is counted and shown. On a fast connection a test can use more than 1 GB, so run it on Wi-Fi if you pay for mobile data.

When a test stops

What the numbers do not tell

The result is your speed to our test servers, or to Cloudflare’s network, not to every website. Wi-Fi, the device, the browser and other traffic on your line can all lower it. On Cloudflare the browser carries the test over one encrypted connection per host, so tools that open many connections can show different numbers; on our own servers the test uses several connections and several servers at once, which is what makes a very fast line measurable in a browser at all.

Nothing about your test is stored: the result is calculated in your browser and stays there. See Privacy.

Methodology versions 1 and 2 · Last updated 10 October 2026