Skip to content
Command line client for written in Go
Go Makefile Shell
Latest commit ad916a5 Apr 16, 2016 @zpeters Merge pull request #53 from l2dy/patch-1
Update usage in readme

The Unofficial Speedtest CLI

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.

A lot of the initial algorithms here are based on different scripts I found when I was studying how works. Mainly, @sivel's speedtest-cli, thanks for your work!

Github All Releases Build Status Issue Stats Issue Stats


Licensed under GPLv3 (See COPYING and LICENSE)


Bugs and Features

See github issues tracker -


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.ext -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 -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
   speedtest - Unofficial command line interface to (

   speedtest [global options] command [command options] [arguments...]


   Zach Peters - -

   help, h  Shows a list of commands or help for one command

   --algo, -a           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, --rc       Set the report separator. Example: --rc=','
   --server, -s         Use a specific server
   --mini, -m           URL of speedtest mini server
   --numclosest, --nc "3"   Number of 'closest' servers to find
   --numlatency, --nl "5"   Number of latency tests to perform
   --help, -h           show help
   --version, -v        print the version

Feedback / Contributing

Contact for general feedback

For Bug reports please use the Github issue tracker for this project

To contribute please see

Thank You

  • Jacob McDonald - jmc734 - Cleaned up printing and formatting. Added parameter passing to -
  • Cory Lievers - Testing and feedback. Suggestions for formatting to make this more useful for labtec -
  • Paul Baker (Network Manager - BMS Telecorp) - Located a bug in the server list generation and found the correct 'static' url
  • Graham Roach (Contact Info?) - Extensive user testing to help determine issues with latency and accuracy of upload and download speeds - #11 (and others)
  • @larray - slightly obscure issues with http caches interfering with test results - #20
  • Noric - reporting and help with testing issues with report formatting - #32
  • @jannson - submitting patch to reduce memory usage on download test - #37

Why don't my speeds match those reported from the website?

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's reference documentation they describe doing a lot of manipulation to the results to return an "ideal" measurement ( 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 ("What makes better") who appear to use an "unfiltered" method of calculating bandwidth speeds. These results typically match up with cli


Something went wrong with that request. Please try again.