Skip to content
HowFast

Methodology

How HowFast measures your connection, how each number is calculated, and how the ratings are decided. Everything on this page is generated from, or checked against, the code that runs the test.

Updated

What happens during a test

The test runs in your browser and talks only to HowFast's own test servers. It never sends traffic or results to a third-party speed test service. A Standard test goes through these steps:

  1. Connect. The browser asks the server for your network details and a short-lived test session (valid for 10 minutes).
  2. Warm up. A few small requests open the connection, and one 100 kB download gives a first speed estimate.
  3. Idle latency. 20 tiny requests measure delay while nothing else is using the line.
  4. Download and upload rounds. Requests grow in size, alternating between directions, from 100 kB up to250 MB for download and 50 MB for upload, until the data budget for your chosen mode is reached. Small latency checks run between rounds.
  5. Latency under load. While download and upload rounds run, a separate server is pinged every 400 ms.
  6. Detailed mode only: an extra phase with four parallel connections per direction.
  7. Finish. The samples are filtered and summarised, confidence and ratings are worked out, and the result is saved to the history in your browser (you can turn this off).

All timings come from the browser's Resource Timing data for each request, not from JavaScript timers, so a busy page does not stretch the measured durations. The time the server spends preparing a response is reported back in a Server-Timing header and subtracted.

Download and upload speed

In plain language: how many megabits per second your connection moved. Each request is timed, and the headline is a high but typical value from the valid requests.

Mbps = (8 × bytes transferred) ÷ (adjusted duration in ms × 1,000) adjusted duration = end − start − server processing time
  • Download is timed from the moment the request is sent to the last byte received.
  • Upload is timed from the moment the request starts until the server's first response byte, which arrives once it has received the whole body.
  • A request counts only if its adjusted duration is at least 10 ms and it transferred data. Shorter ones are too quick to time reliably.
  • The first request in each direction is a warm-up and is left out, because a new connection starts slowly (TCP slow start).
  • A request more than 3× faster than the median of requests of the same size is an outlier and is left out. Excluded requests are counted in the Diagnostics panel.
  • The headline is the 90th percentile of the valid requests (nearest-rank method). The Diagnostics panel also shows the median and the number of samples.
  • With fewer than 3 valid requests the tile shows Not enough data instead of a number.
  • In Detailed mode, each round of the parallel phase sends four requests at once; its speed is total bytes ÷ wall-clock time. The multi-connection result is the median of those rounds. It is shown separately and never replaces the single-connection headline.

Latency and jitter

In plain language: latency (often called ping) is how long a tiny request takes to get to the server and back. Jitter is how much that delay jumps around from one request to the next.

latencyᵢ = response start − request start − server time jitter = ( |L₂ − L₁| + |L₃ − L₂| + … + |Lₙ − Lₙ₋₁| ) ÷ (n − 1)
  • The headline latency is the median of the idle requests. Diagnostics also shows the minimum and the 95th percentile (nearest rank).
  • Jitter uses consecutive requests in the order they were sent, the same definition as Cloudflare's open-source engine, so values are comparable.
  • Latency and jitter need at least 5 valid requests. Fewer shows Not enough data.
  • Browser latency includes a little time inside your browser and device, so it is usually a few milliseconds higher than a command-line ping.

Latency under load

In plain language: the same delay measurement, taken while your line is busy downloading or uploading.

  • Probes go to a separate latency server every 400 ms during the download and upload rounds.
  • A probe counts only if it overlapped a transfer of at least 250 ms in that direction. Probes that fall between short requests do not reflect a busy line and are dropped.
  • The latest 20 valid probes per direction are kept (40 in Detailed mode), and at least 5 are needed. On very fast connections the transfers can finish too quickly to load the line, and the result reads Insufficient data.

Bufferbloat grade

In plain language: how much extra delay appears when the line is busy. A big increase means your router or modem is queuing too much data, which makes calls and games lag whenever someone else is downloading or uploading.

increase = max(0, median loaded latency − median idle latency)
GradeLatency increase under loadWhat it means
A+5 ms or lessExcellent queue management
AOver 5 to 30 msVery good
BOver 30 to 60 msNoticeable in competitive gaming
COver 60 to 200 msCalls and games degrade when the line is busy
DOver 200 to 400 msSevere lag under load
FOver 400 msUnusable for real-time apps while transferring
  • Download and upload are graded separately. The overall grade is the worse of the two; if both get the same grade, the direction with the bigger increase is shown.
  • If only one direction could be measured, its grade is shown with Low confidence.
  • A grade appears only when both the idle set and the loaded set have at least 5 valid samples.
  • The grade is an indicator, not a laboratory classification. Some tools load the line continuously for a fixed time; this test loads it in bursts of increasing size, so a short burst may not fill a very large buffer.

Packet loss

In plain language: the share of small messages that never arrive. Even 1–2% can make calls choppy and games stutter.

loss = (messages sent − messages received) ÷ messages sent

Measuring loss from a browser needs a relay server (TURN) that bounces small messages back over UDP. That relay is not switched on yet, so the Packet loss tile reads Not available with the reason "Packet loss test is not enabled yet". We do not estimate or fill in a value. Ratings that use packet loss treat it as optional (see Online gaming below).

Confidence levels

Each number carries High, Medium or Low confidence, based on how many valid samples there were and how much they varied. The coefficient of variation (CV) is the standard deviation divided by the mean.

LevelDownload and uploadLatency
HighAt least 6 valid samples and CV at most 0.25At least 15 samples and 95th percentile minus median at most 20 ms
MediumAt least 3 samples and CV at most 0.5At least 8 samples
LowAnything else that still produced a valueAt least 5 samples

Any of the warnings listed under Warnings about a result lowers every metric of that result to Low.

What your connection can handle

The dashboard rates seven everyday uses as Great, Good, Fair or Poor. These thresholds are product decisions, published here and versioned: this is rubric version 1. If a threshold changes, the version number changes with it.

  • A use case gets the lowest rating that any of its required metrics reaches. The chip names the metric that held it back.
  • If a required metric is missing, the use case reads Not rated with the reason, for example "Upload did not finish".
  • If an optional metric is missing (packet loss for gaming), the rating is worked out without it and capped at Good, with the note "Packet loss not measured".
  • If the metric that decided the rating has Low confidence, the chip says so.

4K streaming

MetricGreatGoodFairPoor
Download50 Mbps or more25 to under 50 Mbps15 to under 25 MbpsUnder 15 Mbps

HD streaming

MetricGreatGoodFairPoor
Download15 Mbps or more8 to under 15 Mbps5 to under 8 MbpsUnder 5 Mbps

Online gaming

MetricGreatGoodFairPoor
Idle latency20 ms or lessOver 20 to 40 msOver 40 to 80 msOver 80 ms
Jitter5 ms or lessOver 5 to 10 msOver 10 to 20 msOver 20 ms
Bufferbloat increase (worse direction)30 ms or lessOver 30 to 60 msOver 60 to 200 msOver 200 ms
Packet loss (optional)Under 0.5%0.5% to 1%Over 1% to 2.5%Over 2.5%

Video calls

MetricGreatGoodFairPoor
Upload10 Mbps or more4 to under 10 Mbps2 to under 4 MbpsUnder 2 Mbps
Download10 Mbps or more4 to under 10 Mbps2 to under 4 MbpsUnder 2 Mbps
Idle latency50 ms or lessOver 50 to 100 msOver 100 to 150 msOver 150 ms
Jitter10 ms or lessOver 10 to 20 msOver 20 to 30 msOver 30 ms
Latency increase while uploading60 ms or lessOver 60 to 150 msOver 150 to 300 msOver 300 ms

Working from home

MetricGreatGoodFairPoor
Video calls ratingGreatGoodFairPoor
Download50 Mbps or more25 to under 50 Mbps10 to under 25 MbpsUnder 10 Mbps
Upload10 Mbps or more5 to under 10 Mbps3 to under 5 MbpsUnder 3 Mbps

Many devices

MetricGreatGoodFairPoor
Download300 Mbps or more100 to under 300 Mbps50 to under 100 MbpsUnder 50 Mbps
Upload30 Mbps or more10 to under 30 Mbps5 to under 10 MbpsUnder 5 Mbps
Bufferbloat gradeA+ or ABCD or F

Large downloads and uploads

MetricGreatGoodFairPoor
Download500 Mbps or more200 to under 500 Mbps50 to under 200 MbpsUnder 50 Mbps
Upload100 Mbps or more20 to under 100 Mbps5 to under 20 MbpsUnder 5 Mbps

The one-line summary

The sentence at the top of a finished result is picked by these rules, checked in order. The first one that matches is shown. If nothing could be rated, no sentence is shown.

#WhenSentence
1Every use case is rated Great.“Excellent for everything you are likely to do online.”
2HD streaming is Good or better, and gaming or video calls is Fair or worse because of bufferbloat.“Great for streaming. Calls and games may lag when someone else is uploading or downloading.”
3HD streaming is rated Poor.“Slower than most streaming services need for HD video.”
4Video calls is rated Poor and upload is the limiting metric.“Upload is too slow for reliable video calls.”
5Gaming is Fair or worse and idle latency is the limiting metric.“Fine for streaming, but the delay is high for fast online games.”
6Gaming or video calls is Fair or worse and jitter is the limiting metric.“Your connection is uneven, so calls and games may stutter. A wired connection often helps.”
7HD streaming is Good or better and video calls is Fair or worse.“Good for streaming. Video calls may sometimes freeze or blur.”
8HD streaming is Good or better and many devices is Fair or worse.“Good for one or two people at a time. A busy household may notice slowdowns.”
9Large downloads and uploads is Great and everything else is Good or better.“Very fast. Large downloads and uploads finish quickly.”
10Every use case is Good or better.“Good for everyday use, including HD streaming and video calls.”
11HD streaming is Good or better and 4K streaming is Fair or worse.“Good for HD video. 4K streaming may buffer.”
12None of the above applies.“Fine for browsing and basic streaming. Demanding tasks may struggle.”

Warnings about a result

Some conditions make a result less trustworthy. When one is detected, the dashboard shows a note and lowers confidence on every metric to Low.

Note shownWhen it appears
The tab was in the background during the test. Results may be low.The page was hidden (another tab or app in front) at any point during the test. Browsers slow down background tabs.
This speed is higher than any home connection. The result may be wrong.Download or upload above 10,000 Mbps.
Latency is lower than physically likely. The result may be wrong.Median idle latency under 1 ms.
Browser or device overhead may be adding delay.The network round trip seen by the server and the median latency measured in the browser differ by more than 30 ms.
Many requests failed or were retried. Results may be low.More than 20% of requests in one direction failed or were retried.
Mobile data: results vary with signal.The browser reports a cellular connection (only some browsers expose this).
You may be on a VPN or proxy.Your network (AS) name matches a bundled list of VPN and hosting providers. Results then describe the tunnel, not your line.
Your device was busy during the test. Results may be low.The page's main thread was blocked for more than 200 ms at a time while the test ran.

Test modes and data use

A speed test has to move real data to measure your speed. The dashboard tells you the maximum before you start and counts the bytes as they go.

ModeDataLargest requestLoaded-latency pointsParallel phase
StandardUses up to 200 MB250 MB down, 50 MB up20 per directionNo
Reduced dataUses up to 25 MB10 MB down, 10 MB up20 per directionNo
DetailedUses up to 600 MB250 MB down, 50 MB up40 per directionYes, 4 connections

Reduced data is selected for you when your browser reports Data Saver, a cellular connection, or a slow connection type. Slower connections use less than the maximum because the rounds stop growing once requests take long enough to time well.

Your network details

  • IP address: read by the test server so it can show it to you. Our code does not write it to logs, analytics or a database. See the Privacy policy.
  • Provider: the network (autonomous system) your connection comes from, with its registered name, taken from the hosting network's request metadata.
  • Location: approximate, city level, derived from your IP address. The browser's location permission is never requested. Where the server has no such data, the card says so.
  • Server: the test location that handled your test.

Limitations

  • Results describe the path between your device and our nearest test location at the moment of the test. They do not predict the performance of a specific app, game or website, and they are not a guarantee.
  • Wi-Fi, other devices on your network, browser extensions, VPNs and a busy device all affect the result. A wired test on an otherwise idle network is the best measure of your plan.
  • A single browser connection can fall short of very fast plans (roughly above 1 Gbps). Detailed mode adds a multi-connection figure for that reason.
  • Upload timing relies on the server's first response byte, so it can read slightly high on some proxies and networks.
  • Bufferbloat is tested with bursts, not a sustained full load, so it may understate very large buffers.
  • Packet loss is not measured until the relay server is switched on.
  • Provider and location come from IP-address data and can be wrong, especially on mobile networks and VPNs.

Learn more