With my ongoing tests with my new 2.5gbps network card, I have been complaining for a few days about the speedtests not reaching the promised rates.
I use Speedtest by Ookla CLI. And sometimes, I get what I expect, and sometimes only a few hundred megabits/seconds. With the NIC I use, I should get stable 2300mbps. But most of the times, my download speed was tested around 400~500 mbps, which is very disappointing.
So I deceided to check the speedtest documentation:
speedtest -h
Speedtest by Ookla is the official command line client for testing the speed and performance of your internet connection.
Version: speedtest 1.2.0.84
Usage: speedtest [options]
-h, --help Print usage information
-V, --version Print version number
-L, --servers List nearest servers
-s, --server-id=# Specify a server from the server list using its id
-I, --interface=ARG Attempt to bind to the specified interface when connecting to servers
-i, --ip=ARG Attempt to bind to the specified IP address when connecting to servers
-o, --host=ARG Specify a server, from the server list, using its host's fully qualified domain name
-p, --progress=yes|no Enable or disable progress bar (Note: only available for 'human-readable'
or 'json' and defaults to yes when interactive)
-P, --precision=# Number of decimals to use (0-8, default=2)
-f, --format=ARG Output format (see below for valid formats)
--progress-update-interval=# Progress update interval (100-1000 milliseconds)
-u, --unit[=ARG] Output unit for displaying speeds (Note: this is only applicable
for ‘human-readable’ output format and the default unit is Mbps)
-a Shortcut for [-u auto-decimal-bits]
-A Shortcut for [-u auto-decimal-bytes]
-b Shortcut for [-u auto-binary-bits]
-B Shortcut for [-u auto-binary-bytes]
--selection-details Show server selection details
--ca-certificate=ARG CA Certificate bundle path
-v Logging verbosity. Specify multiple times for higher verbosity
--output-header Show output header for CSV and TSV formatsValid output formats: human-readable (default), csv, tsv, json, jsonl, json-pretty
Machine readable formats (csv, tsv, json, jsonl, json-pretty) use bytes as the unit of measure with max precision
Valid units for [-u] flag:
Decimal prefix, bits per second: bps, kbps, Mbps, Gbps
Decimal prefix, bytes per second: B/s, kB/s, MB/s, GB/s
Binary prefix, bits per second: kibps, Mibps, Gibps
Binary prefix, bytes per second: kiB/s, MiB/s, GiB/s
Auto-scaled prefix: auto-binary-bits, auto-binary-bytes, auto-decimal-bits, auto-decimal-byte
So it is possible to specify which server is used for the test. I therefore ran speedtest -L to get the list of available test server, then try each of them.
And it seems I was complaining for no good reason. Some servers give me what I expect (about 2300mbps), and some are completely out of range (400 mbps).
A good server:
Server: Appliwave - Croissy-Beaubourg (id: 45202)
ISP: Free SAS
Idle Latency: 3.44 ms (jitter: 0.40ms, low: 3.19ms, high: 4.12ms)
Download: 2349.46 Mbps (data used: 1.2 GB)
An average server
Server: ORANGE FRANCE - Paris (id: 24215)
ISP: Free SAS
Idle Latency: 2.29 ms (jitter: 0.43ms, low: 2.22ms, high: 3.07ms)
Download: 869.33 Mbps (data used: 970.5 MB)
A server out of touch with current internet speeds
Server: iBakerServer - Fontenay-sous-Bois (id: 48892)
ISP: Free SAS
Idle Latency: 12.71 ms (jitter: 1.31ms, low: 11.20ms, high: 14.29ms)
Download: 479.70 Mbps (data used: 733.8 MB)
Attention! I am not saying that the servers are bad. I know nothing about them and their network architecture. I am merely stating that in my case, the results go from 1 to 5, and you need to check before complaining (well, first I complained then I checked, but still...)
Conclusion: If your speedtests are not up to expectations, check which server is used!