Command line interface for testing internet bandwidth using speedtest.net
Go to file
VisualPlugin 0621c29189
Update README.rst
2024-10-16 02:39:22 +00:00
tests/scripts Add a few additional tests, specifically around --source 2018-01-02 17:16:52 -06:00
.gitignore Initial commit 2012-09-10 12:17:53 -07:00
.travis.yml Add support for py38 without deprecation warnings (#585) 2019-03-13 15:56:00 -05:00
CONTRIBUTING.md Some additional coding guidelines 2014-05-20 16:34:17 -05:00
LICENSE LICENSE 2013-04-26 22:37:03 -05:00
MANIFEST.in Add MANIFEST.in 2013-10-08 07:15:42 -05:00
README.rst Update README.rst 2024-10-16 02:39:22 +00:00
setup.cfg Support building wheels. Fixes #126 2015-02-26 10:51:32 -06:00
setup.py Python 3.10 support 2021-07-07 14:50:15 -05:00
speedtest-cli.1 Update usage 2019-03-11 09:57:19 -05:00
speedtest.py 2024-04-12T22:19Z 2024-04-12 22:19:18 +00:00
tox.ini Add a few additional tests, specifically around --source 2018-01-02 17:16:52 -06:00

README.rst

speedtest-cli
=============

Command line interface for testing internet bandwidth using
speedtest.net

.. image:: https://img.shields.io/pypi/v/speedtest-cli.svg
        :target: https://pypi.python.org/pypi/speedtest-cli/
        :alt: Latest Version
.. image:: https://img.shields.io/travis/sivel/speedtest-cli.svg
        :target: https://pypi.python.org/pypi/speedtest-cli/
        :alt: Travis
.. image:: https://img.shields.io/pypi/l/speedtest-cli.svg
        :target: https://pypi.python.org/pypi/speedtest-cli/
        :alt: License

Versions
--------

speedtest-cli works with Python 2.4-3.12

.. image:: https://img.shields.io/pypi/pyversions/speedtest-cli.svg
        :target: https://pypi.python.org/pypi/speedtest-cli/
        :alt: Versions

Installation
------------

pip / easy\_install
~~~~~~~~~~~~~~~~~~~

::

    pip install speedtest-cli

or

::

    easy_install speedtest-cli

Github
~~~~~~

::

    pip install git+https://github.com/sivel/speedtest-cli.git

or

::

    git clone https://github.com/sivel/speedtest-cli.git
    cd speedtest-cli
    python setup.py install

Just download (Like the way it used to be)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

    wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
    chmod +x speedtest-cli

or

::

    curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
    chmod +x speedtest-cli

Usage
-----

::

    $ speedtest-cli -h
    usage: speedtest.py [-h] [--no-download] [--no-upload] [--single] [--bytes] [--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}] [--share]
                        [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI]
                        [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version]
    
    Command line interface for testing internet bandwidth using speedtest.net. --------------------------------------------------------------------------
    https://github.com/sivel/speedtest-cli
    
    options:
      -h, --help            show this help message and exit
      --no-download         Do not perform download test
      --no-upload           Do not perform upload test
      --single              Only use a single connection instead of multiple. This simulates a typical file transfer.
      --bytes               Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv
      --units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}
                            Determines which units to display values in. Does not affect the image generated by --share, nor output from --json or --csv
      --share               Generate and provide a URL to the speedtest.net share results image, not displayed with --csv
      --simple              Suppress verbose output, only show basic information
      --csv                 Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes or --units
      --csv-delimiter CSV_DELIMITER
                            Single character delimiter to use in CSV output. Default ","
      --csv-header          Print CSV headers
      --json                Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes or --units
      --list                Display a list of speedtest.net servers sorted by distance
      --server SERVER       Specify a server ID to test against. Can be supplied multiple times
      --exclude EXCLUDE     Exclude a server from selection. Can be supplied multiple times
      --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
      --no-pre-allocate     Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with
                            insufficient memory, use this option to avoid a MemoryError
      --version             Show the version number and exit


Python API
----------

See the `wiki <https://github.com/sivel/speedtest-cli/wiki>`_.


Inconsistency
-------------

It is not a goal of this application to be a reliable latency reporting tool.

Latency reported by this tool should not be relied on as a value indicative of ICMP
style latency. It is a relative value used for determining the lowest latency server
for performing the actual speed test against.

There is the potential for this tool to report results inconsistent with Speedtest.net.
There are several concepts to be aware of that factor into the potential inconsistency:

1. Speedtest.net has migrated to using pure socket tests instead of HTTP based tests
2. This application is written in Python
3. Different versions of Python will execute certain parts of the code faster than others
4. CPU and Memory capacity and speed will play a large part in inconsistency between
   Speedtest.net and even other machines on the same network

Issues relating to inconsistencies will be closed as wontfix and without
additional reason or context.