speedtest-cli
Next generation CLI for testing internet bandwidth using speedtest.net
Getting started
Installation
PyPI
You can install speedtest-cli-ng from PyPI using either standard Python packaging tools or uv.
Using pip
If you have pip only. You can also use pipx to run the tool without installing.
pip install speedtest-cli-ng
Using uv
You can run the tool instantly without explicitly managing environments:
uvx speedtest-cli-ng
or install it globally:
uv tool install speedtest-cli-ng
Usage
To view the available options, run the help command:
speedtest-cli --help
usage: speedtest-cli [-h] [-l] [-s SERVER] [--no-download] [--no-upload]
[-t THREADS | --single] [--share] [--bytes] [--json]
[--debug] [--version]
Next generation CLI for testing internet bandwidth using speedtest.net.
options:
-h, --help show this help message and exit
Core Options:
-l, --list Show available speedtest.net servers sorted by distance. (default: False)
-s SERVER, --server SERVER
Specify a server id to test against. (default: None)
Transfer Modifiers:
--no-download Do not perform the download test. (default: False)
--no-upload Do not perform the upload test. (default: False)
-t THREADS, --threads THREADS
Set the number of concurrent connections instead of using downloaded config. (default: None)
--single Use one concurrent connection. Simulates a typical file transfer. (default: False)
Output Options:
--share Generate and provide a URL to the speedtest.net share results image. (default: False)
--bytes Display values in bytes instead of bits. Does not affect image generation or JSON output. (default: ('bit', 1))
--json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s. (default: False)
Miscellaneous Options:
--debug Show verbose debugging output. (default: False)
--version show program's version number and exit
Development
Requirements
- Python 3.14+
- uv 0.13+
- prek 0.5+
Setup pre-commit hooks
You can install hooks to automatically run the validation checks:
uv tool install prek
prek install
Install dependencies
This will install project's dependencies
uv sync
Basic workflow
# Run pre-commit checks for changed files
prek
# Run all pre-commit checks
prek --all-files
# Run format
uv run ruff format --check .
# Run lint
uv run ruff check .
# Run typecheck
uv run ty check
# Run tests
uv run pytest
Building
Build both sdist and wheel package:
uv run build
The output will be in the dist/ directory.
Acknowledgments
This project is a heavily refactored and modernized fork of the original speedtest-cli created by Matt Martz. While the codebase has been completely rewritten to support modern Python standards, concurrent thread pools, and memory-safe streaming, it was built upon the foundational concepts of the original tool.
License
This project is licensed under the terms of the Apache License 2.0.
Made with 🩵 by Michał Korczak
Metadata
Release files for speedtest-cli-ng 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| speedtest_cli_ng-1.0.0.tar.gz | 52.6 kB | Without provenance | Details for speedtest_cli_ng-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| speedtest_cli_ng-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for speedtest_cli_ng-1.0.0-py3-none-any.whl |
Total release size: 78.8 kB
Release files / speedtest_cli_ng-1.0.0.tar.gz
| Download URL | speedtest_cli_ng-1.0.0.tar.gz |
|---|---|
| Size | 52.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2372e38cf64f1a89bb7982783eaacc2961f9ca3a2c7aea7adeab208f7af1c50
|
|
BLAKE2b-256 checksum How to use checksums |
8ffb191149714f20b37176651649da805b68c9262cc4406978d385bb0ffcf17f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / speedtest_cli_ng-1.0.0-py3-none-any.whl
| Download URL | speedtest_cli_ng-1.0.0-py3-none-any.whl |
|---|---|
| Size | 26.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e05969908c296037efb073c3eda1456828e4ba31cfd21e9aebefaf3893a97f7f
|
|
BLAKE2b-256 checksum How to use checksums |
fdb9ffa32211f88d17d6d002bb6b91153b818ff1af978f42213a9183f94b5f79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for speedtest-cli-ng 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.