I don't have a lot of time to work on this code anymore. I may post updates from time to time, but at the moment this software is mostly abandonded. I am working on a Rust implementation and will post more details here in the future. See https://github.com/zpeters/speedtestr
Thank you for all of the fun and support over the years.
Initial testing release of v2.0 is out for the testing. See "releases" for downloads. The current "test" is hard coded and there are no options at the moment. Please send me any feedback at [email protected] or through the issues.
The Unofficial Speedtest CLI is a command-line program to test bandwidth in situations where you don't have access to a full GUI environment and web browser.
In 2013 I was feeling guilty about using Open Source software for most of my life without giving anything back in return. I decided to create this project to my part to help the IT community.
Licensed under GPLv3 (See COPYING and LICENSE)
See github issues tracker - https://github.com/zpeters/speedtest/issues
speedtest.exe -- normal run, will automatically select the closests/fastest server to test against
$ bin/speedtest.exe Finding fastest server.. 1752 | 5NINES (Madison, WI, United States) Testing download speed...... Testing upload speed...... Ping: 53.613233ms | Download: 13.34 Mbps | Upload: 3.89 Mbps
speedtest.exe -l -- List servers
$ bin/speedtest.exe -l 1724 | CityNet (Zaporizhzhya, Ukraine) 2966 | FUSION MEDIA Kft. (Budapest, Hungary) 3634 | Paul Bunyan Communications (Bemidji, MN, United States ...
speedtest.exe -s 1724 -- Run against a specific server
$ bin/speedtest.exe -s 1724 1724 | CityNet (Zaporizhzhya, Ukraine) Testing latency... Testing download speed...... Testing upload speed...... Ping: 982.913566ms | Download: 0.91 Mbps | Upload: 1.25 Mbps
speedtest.exe -b 1234 -b 5678 -- Run the test blacklisting servers 1234 and 5678 speedtest.exe -r -- Runs speedtest in "reporting" mode (useful for Labtec, Excel spreadsheets, etc) speedtest.exe -r -rc="," -- Use a different separator (default is '|') Report Fields: Server ID, Server Name (Location), Ping time in ms, Download speed in kbps, Upload speed in kbps
1752|5NINES(Madison, WI,United States)|36.18|19452|4053
COMMANDS: help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --algo value, -a value Specify the measurement method to use ('max', 'avg') --debug, -d Turn on debugging --list, -l List available servers --update, -u Check for a new version of speedtest --ping, -p Ping only mode --quiet, -q Quiet mode --report, -r Reporting mode output, minimal output with '|' for separators, use '--rc' to change separator characters. Reports the following: Server ID, Server Name (Location), Ping time in ms, Download speed in kbps, Upload speed in kbps --downloadonly, --do Only perform download test --uploadonly, --uo Only perform upload test --reportchar value, --rc value Set the report separator. Example: --rc=',' --server value, -s value Use a specific server --blacklist value, -b value Blacklist a server. Use this multiple times for more than one server --mini value, -m value URL of speedtest mini server --useragent value, --ua value Specify a useragent string --numclosest value, --nc value Number of 'closest' servers to find (default: 3) --httptimeout value, -t value Timeout (seconds) for http connections (default: 15) --numlatency value, --nl value Number of latency tests to perform (default: 5) --interface value, -I value Source IP address or name of an interface --help, -h show help --version, -v print the version
The calculation that is used for testing download speeds is literally measuring the amount of data we are downloading (we request a "random" image and count how many bytes are received) and how long it takes to download. We multiply by the correct factors to get from bytes to megabits. I consider this to be an honest and accurate measurement.
In speedtest.net's reference documentation they describe doing a lot of manipulation to the results to return an "ideal" measurement (https://support.speedtest.net/entries/20862782-How-does-the-test-itself-work-How-is-the-result-calculated-). This, to me, is trading accuracy for speed and not what I'm looking for out of a testing tool.
For confirmation that my download calculations are correct I have tested against a few other speed testing sites, specifically http://testmy.net ("What makes TestMy.net better") who appear to use an "unfiltered" method of calculating bandwidth speeds. These results typically match up with speedtest.net cli