Check Internet Speed with speedtest-cli on Debian and Ubuntu (2024)

On this page

  1. What is speedtest-cli?
  2. How to install speedtest-clion Linux?
    1. Method 1: Installing speedtest-cli using python-pip
    2. Method 2: Installing the latest speedtest-climanually from GitHub
  3. How to test internet connection speed with speedtest-cli?
  4. Creating an internet speed log with speedtest-cli
  5. Conclusion

Internet connection speed is something that we always check at our homes and offices. The most common method that we use is by visiting a speed test website like speedtest.net. On that site, a javascript application is loaded in the web browser which selects the best (nearby) server based on the ping time and then the speed test results for that server are shown. Speedtest.net also uses a flash player to produce the result graphically.

The problem using these web-based speed tests is that it does not allow you to schedule the speed test at regular intervals, e.g. as acronjob and you can't use them on headless servers. One application that can solve this problem is “speedtest-cli”. This application allows you to check your internet speed using the command line.

What is speedtest-cli?

Speedtest-cliis a script written in the Python programming language which measures the internet speed bidirectionally. This application allows you to check your internet speed upon distance in km, it can test against specific servers and it also provides a URL so that you can share your result on the internet.

How to install speedtest-clion Linux?

In order to install the speedtest-cli application, you must have a Python 2.4-3.4 or an upgraded version installed in your system.

You can install thespeedtest-cli tools using two methods. The first method includes the use of python-pip package manager, the second method is to download the Python script manually, make it executable and then run the application.

Method 1: Installing speedtest-cli using python-pip

The next step has to be run as root user, as I don't want to prepend sudo for each command, please run the following command on Ubuntu first to become root user:

sudo su

1. The first step is tomakesure your list of packages from all Ubuntu repositories and PPA's is up to date by running the following command:

apt-get update

Sample output:

2. Nextstep is to install the pip package manager on your system. As you can see, the command will install many dependencies as well.

apt-get install python-pip
root@server1:/# apt-get install python-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libexpat1-dev libpython-all-dev libpython-dev libpython2.7-dev python-all python-all-dev python-asn1crypto python-cffi-backend python-crypto python-cryptography python-dbus python-dev
python-enum34 python-gi python-idna python-ipaddress python-keyring python-keyrings.alt python-pip-whl python-pkg-resources python-secretstorage python-setuptools python-six
python-wheel python-xdg python2.7-dev
Suggested packages:
python-crypto-doc python-cryptography-doc python-cryptography-vectors python-dbus-dbg python-dbus-doc python-enum34-doc python-gi-cairo gnome-keyring libkf5wallet-bin
gir1.2-gnomekeyring-1.0 python-fs python-gdata python-keyczar python-secretstorage-doc python-setuptools-doc
The following NEW packages will be installed:
libexpat1-dev libpython-all-dev libpython-dev libpython2.7-dev python-all python-all-dev python-asn1crypto python-cffi-backend python-crypto python-cryptography python-dbus python-dev
python-enum34 python-gi python-idna python-ipaddress python-keyring python-keyrings.alt python-pip python-pip-whl python-pkg-resources python-secretstorage python-setuptools python-six
python-wheel python-xdg python2.7-dev
0 upgraded, 27 newly installed, 0 to remove and 60 not upgraded.
Need to get 32.1 MB of archives.
After this operation, 53.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Press Yto continue

Sample output:

3. After installing the package, you can install the application using this pip command:

pip install speedtest-cli
Collecting speedtest-cli
Downloading https://files.pythonhosted.org/packages/61/8b/58d1de9a7fff3e91c5ab956ab4ba72b49f42d9f73d5f3e248c740dfcc816/speedtest_cli-2.1.1-py2.py3-none-any.whl
Installing collected packages: speedtest-cli
Successfully installed speedtest-cli-2.1.1

4. If you want to upgrade the speedtest-cli application in the future, you can use this command:

pip install speedtest-cli –-upgrade
Requirement already up-to-date: speedtest-cli in /usr/local/lib/python2.7/dist-packages
Cleaning up...

Method 2: Installing the latest speedtest-climanually from GitHub

1. First you have to download the python script from GitHub using the command

cd /tmp
wget https://github.com/sivel/speedtest-cli/archive/master.zip
--2019-04-25 19:24:47-- https://github.com/sivel/speedtest-cli/archive/master.zip
Resolving github.com (github.com)... 140.82.118.4, 140.82.118.3
Connecting to github.com (github.com)|140.82.118.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/sivel/speedtest-cli/zip/master [following]
--2019-04-25 19:24:47-- https://codeload.github.com/sivel/speedtest-cli/zip/master
Resolving codeload.github.com (codeload.github.com)... 192.30.253.121, 192.30.253.120
Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘master.zip’

master.zip [ <=> ] 27.55K 103KB/s in 0.3s

2019-04-25 19:24:48 (103 KB/s) - ‘master.zip’ saved [28215]

2. The second step is to unpack the file that you have downloaded (master.zip) and extract it using the unzip command:

unzip master.zip
Archive: master.zip
681cdf20a5fe774ba3aefedd0cd88cbff5384439
creating: speedtest-cli-master/
inflating: speedtest-cli-master/.gitignore
inflating: speedtest-cli-master/.travis.yml
inflating: speedtest-cli-master/CONTRIBUTING.md
inflating: speedtest-cli-master/LICENSE
inflating: speedtest-cli-master/MANIFEST.in
inflating: speedtest-cli-master/README.rst
extracting: speedtest-cli-master/setup.cfg
inflating: speedtest-cli-master/setup.py
inflating: speedtest-cli-master/speedtest-cli.1
inflating: speedtest-cli-master/speedtest.py
creating: speedtest-cli-master/tests/
creating: speedtest-cli-master/tests/scripts/
inflating: speedtest-cli-master/tests/scripts/source.py
inflating: speedtest-cli-master/tox.ini

3. When you have extracted the file, make the extracted script executable by going to the extracted directory and using the chown command.

cd speedtest-cli-master/
chmod755 speedtest.py

4. To avoid typing the full path every time, move the executable file to /usr/local/bin by using the following command:

sudo mv speedtest.py /usr/local/bin/speedtest-cli

How to test internet connection speed with speedtest-cli?

Run the speedtest-cli command to test the download and upload speed of your internet connection without any argument:

speedtest-cli
Testing download speed........................................
Download: 916.39 Mbit/s
Testing upload speed..................................................
Upload: 489.57 Mbit/s

If you want to check the speed result in bytes instead of bits, then use this command:

speedtest-cli --bytes
Testing download speed........................................
Download: 114.15 Mbyte/s
Testing upload speed..................................................
Upload: 49.61 Mbyte/s

If you want to share the speed result with your friends, then you can download the image of the result with URL provided after the result.

speedtest-cli --share
Retrieving speedtest.net configuration...
Testing from Hetzner Online GmbH (..........)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by avrx (Limburg an der Lahn) [140.88 km]: 14.379 ms
Testing download speed................................................................................
Download: 309.68 Mbit/s
Testing upload speed................................................................................................
Upload: 316.33 Mbit/s
Share results: http://www.speedtest.net/result/xxxxxxxxxxx.png

Below is the picture of myspeed test result from the testabove.

If you want information only on ping, download and upload then use:

speedtest-cli --simple
Ping: 5.23 ms
Download: 877.56 Mbit/s
Upload: 162.21 Mbit/s

You can also check the list of server based upon the distance in km by using:

speedtest-cli --list
2628) Telstra (Adelaide, Australia) [17098.98 km]
4051) Vodafone Hutchison Australia (AE) (Adelaide, Australia) [17098.98 km]
...........................................................................
3254) Vodafone Hutchison Australia (PH) (Perth, Australia) [18700.26 km]
1931) IX Australia (Perth, Australia) [18700.26 km]

By searching the list in terms of distance, you might have generated a big list of the servers. If you want to check the result for servers of a specific area, then you can check that by piping the result to the grep command (Australia is an example of the area):

speedtest-cli --list | grep –iAustralia
2604) Telstra (Brisbane, Australia) [15501.92 km]
1594) 'Yes' Optus (Brisbane, Australia) [15501.92 km]
...............................................................................................
3254) Vodafone Hutchison Australia (PH) (Perth, Australia) [18700.26 km]
1931) IX Australia (Perth, Australia) [18700.26 km]

To test the connection speedagainsta specific server, you have to use the server ID generated in step 5 and 6.

speedtest-cli --server [server ID]
speedtest-cli --server 2604

Here server ID 2604 is used as an example:

Hosted by Telstra (Brisbane) [15501.92 km]: 452.614 ms
Testing download speed........................................
Download: 28.79 Mbit/s
Testing upload speed..................................................
Upload: 11.71 Mbit/s

If you want to check the help and version number of the speedtest-cli tool, use these commands:

speedtest-cli --version
0.3.4
speedtest-cli --help
usage: speedtest_cli [-h] [--bytes] [--share] [--simple] [--list]
[--server SERVER] [--mini MINI] [--source SOURCE]
[--timeout TIMEOUT] [--secure] [--version]
Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
https://github.com/sivel/speedtest-cli
optional arguments:
-h, --help show this help message and exit
--bytes Display values in bytes instead of bits. Does not affect
the image generated by --share
--share Generate and provide a URL to the speedtest.net share
results image
--simple Suppress verbose output, only show basic information
--list Display a list of speedtest.net servers sorted by
distance
--server SERVER Specify a server ID to test against
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--secure Use HTTPS instead of HTTP when communicating with
speedtest.net operated servers
--version Show the version number and exit

Creating an internet speed log with speedtest-cli

Speedtest-cli can be run as a cronjob to get an internet speed test log. Open the crontab with this command:

crontab -e

And add this line (I'll assume that speedtest_cli.py is installed in /usr/local/bin) to the crontab:

30 00 * * * /usr/local/bin/speedtest-cli >> /tmp/speedlog.txt

Save the changes and exit the crontab editor. This will run a speed test at 0:30 each day and appends the result to the file /tmp/speedlog.txt.

Conclusion

This application is lightweight, easy to use and runs without any issue making it a must-have tool for developers and system administrators.

Check Internet Speed with speedtest-cli on Debian and Ubuntu (2024)
Top Articles
Latest Posts
Article information

Author: Mrs. Angelic Larkin

Last Updated:

Views: 6053

Rating: 4.7 / 5 (47 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Mrs. Angelic Larkin

Birthday: 1992-06-28

Address: Apt. 413 8275 Mueller Overpass, South Magnolia, IA 99527-6023

Phone: +6824704719725

Job: District Real-Estate Facilitator

Hobby: Letterboxing, Vacation, Poi, Homebrewing, Mountain biking, Slacklining, Cabaret

Introduction: My name is Mrs. Angelic Larkin, I am a cute, charming, funny, determined, inexpensive, joyous, cheerful person who loves writing and wants to share my knowledge and understanding with you.