InternetSpeedTest command line interface - Python implementation
Project description
InternetSpeedTest Python CLI
A powerful Python library and command-line interface for testing Internet speed, powered by InternetSpeedTest.net - the fast, accurate, and privacy-focused speed test service.
๐ Try InternetSpeedTest.net - Test your connection speed instantly in your browser!
๐ About InternetSpeedTest.net
InternetSpeedTest.net is a modern, open-source speed testing platform that provides:
- โก Lightning-fast tests - Get results in seconds, not minutes
- ๐ Privacy-first - No tracking, no ads, no data collection
- ๐ Global network - Servers worldwide for accurate measurements
- ๐ฑ Cross-platform - Works on any device, any browser
- ๐ Completely free - No registration, no limits, no premium tiers
This Python CLI tool brings the power of InternetSpeedTest.net to your terminal and applications!
Features
- ๐ Fast and accurate speed testing using LibreSpeed protocol
- ๐ Download and upload speed measurements with real-time progress
- ๐ Ping and jitter measurements for connection quality
- ๐ Compatible with internetspeedtest.net and other LibreSpeed servers
- ๐ Multiple output formats (simple, JSON, CSV)
- ๐ง Customizable test parameters and server selection
- ๐ Pure Python implementation with threading optimization
- ๐จ Beautiful progress indicators and clean output
Installation
๐ก Quick Start: Want to test your speed right now? Visit internetspeedtest.net for an instant browser-based test!
From source
cd python
pip install -e .
Using pip (when published)
pip install internetspeedtest
Quick Start
Command Line Usage
Basic speed test:
internetspeedtest-py
Test with specific server:
internetspeedtest-py --server 1
List available servers:
internetspeedtest-py --list
Python Library Usage
from internetspeedtest import SpeedTest
# Initialize SpeedTest
st = SpeedTest()
# Get available servers
servers = st.get_servers()
# Find best server
best_server = st.find_best_server(servers)
# Test ping
ping, jitter = st.ping(best_server)
print(f"Ping: {ping:.2f} ms, Jitter: {jitter:.2f} ms")
# Test download speed
download_speed, bytes_downloaded = st.download(best_server)
print(f"Download: {download_speed:.2f} Mbps")
# Test upload speed
upload_speed, bytes_uploaded = st.upload(best_server)
print(f"Upload: {upload_speed:.2f} Mbps")
Command Line Options
Basic Options
--version- Show version and exit--list- Display a list of LibreSpeed servers--server ID- Specify server ID to test against (can be used multiple times)--exclude ID- Exclude server from selection (can be used multiple times)--server-json URL- Use alternative server list from remote JSON URL--local-json FILE- Use alternative server list from local JSON file
Test Options
--no-download- Do not perform download test--no-upload- Do not perform upload test--concurrent N- Number of concurrent HTTP connections (default: 3)--chunks N- Number of chunks for download test (default: 100)--upload-size N- Size of upload payload in KiB (default: 1024)--duration N- Test duration in seconds (default: 15)
Network Options
--source IP- Source IP address to bind to--timeout N- HTTP timeout in seconds (default: 15)--secure- Use HTTPS instead of HTTP
Output Options
--simple- Suppress verbose output, show basic information only--json- Output results in JSON format--csv- Output results in CSV format--bytes- Display values in bytes instead of bits
Examples
Basic speed test
internetspeedtest-py
Test with JSON output
internetspeedtest-py --json
Output:
{
"server": {
"id": 1,
"name": "Example Server",
"url": "https://example.com/",
"sponsor": "Example ISP"
},
"ping": 25.43,
"jitter": 2.15,
"download": 95230000,
"upload": 48560000,
"bytes_received": 178650000,
"bytes_sent": 91200000,
"ip": "203.0.113.1"
}
Test with CSV output
internetspeedtest-py --csv
Output:
Server,Sponsor,Ping (ms),Jitter (ms),Download (bps),Upload (bps),IP
"Example Server","Example ISP",25.43,2.15,95230000,48560000,"203.0.113.1"
Test with custom server list
internetspeedtest-py --server-json https://example.com/servers.json
Simple output
internetspeedtest-py --simple
Output:
Ping: 25.43 ms Jitter: 2.15 ms
Download: 95.23 Mbps
Upload: 48.56 Mbps
Server List Format
The library supports custom server lists in JSON format:
[
{
"id": 1,
"name": "Example Server",
"server": "https://example.com/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php",
"sponsorName": "Example ISP",
"sponsorURL": "https://example.com"
}
]
Comparison with speedtest-cli
This library provides a similar interface to the popular speedtest-cli by @sivel, but uses the LibreSpeed protocol instead of Ookla's Speedtest.net:
| Feature | speedtest-cli (Ookla) | internetspeedtest-py (LibreSpeed) |
|---|---|---|
| Protocol | Ookla Speedtest | LibreSpeed |
| License | Apache 2.0 | LGPL-3.0 |
| Backend | Speedtest.net | LibreSpeed servers |
| Open Source Backend | โ | โ |
| Self-hosted servers | โ | โ |
| Python API | โ | โ |
| CLI Interface | โ | โ |
Python API Reference
SpeedTest Class
class SpeedTest(source=None, timeout=15, secure=False)
Methods
get_servers(server_list_url=None, exclude=None, specific=None)- Fetch server listping(server, count=10)- Measure ping and jitterdownload(server, duration=15, concurrent=3, chunks=100)- Test download speedupload(server, duration=15, concurrent=3, upload_size=1024)- Test upload speedget_ip_info(server)- Get IP informationfind_best_server(servers)- Find server with lowest ping
Server Class
class Server(server_dict)
Attributes
id- Server IDname- Server nameserver- Server URLdl_url- Download URL pathul_url- Upload URL pathping_url- Ping URL pathget_ip_url- Get IP URL pathsponsor_name- Sponsor namesponsor_url- Sponsor URL
Requirements
- Python 3.7 or higher
- requests >= 2.25.0
License
This project is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgments
- LibreSpeed team for the LibreSpeed protocol and backend
- @sivel for the original speedtest-cli inspiration
- This library is compatible with internetspeedtest.net and other LibreSpeed servers
๐ Why Choose InternetSpeedTest.net?
This Python CLI is proudly powered by InternetSpeedTest.net - the next-generation speed testing platform that puts users first:
๐ vs. Other Speed Test Services:
| Feature | InternetSpeedTest.net | Speedtest.net | Fast.com | Google Speed Test |
|---|---|---|---|---|
| Privacy | ๐ข No tracking/ads | ๐ด Ads & tracking | ๐ก Netflix-focused | ๐ก Google services |
| Speed | ๐ข Ultra-fast | ๐ก Moderate | ๐ข Fast | ๐ก Moderate |
| Accuracy | ๐ข Multi-server | ๐ข Good | ๐ก Single server | ๐ก Limited servers |
| Open Source | ๐ข Yes (LibreSpeed) | ๐ด Proprietary | ๐ด Proprietary | ๐ด Proprietary |
| Global Coverage | ๐ข Worldwide | ๐ข Worldwide | ๐ก Limited | ๐ก Limited |
| Free Forever | ๐ข Always free | ๐ก Freemium | ๐ข Free | ๐ข Free |
๐ฏ Perfect for:
- Developers - Test connection programmatically
- Network Admins - Monitor network performance
- Power Users - Get detailed network metrics
- Privacy-conscious Users - No data collection
- Self-hosters - Deploy your own servers
๐ Try it now:
๐ internetspeedtest.net - Test your speed in seconds!
Support
For issues and questions about this Python CLI, please open an issue on GitHub.
For InternetSpeedTest.net service questions, visit internetspeedtest.net.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file internetspeedtest-1.0.0.tar.gz.
File metadata
- Download URL: internetspeedtest-1.0.0.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a93d93f4de240adbd3810df2ef77e2b39e45ca370d0b3937de2e1b46ec448cdc
|
|
| MD5 |
6eb2b4bc65c6a6724d7805f07718ad71
|
|
| BLAKE2b-256 |
4e3a6281cff01b56304aacd0b0d7ec92c9f924ad5f8362d81212525e733790f4
|
File details
Details for the file internetspeedtest-1.0.0-py3-none-any.whl.
File metadata
- Download URL: internetspeedtest-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0557ab4770b24c9ccb909903c2d309234e684a2803ce8ef26c9c428cf53548ff
|
|
| MD5 |
2a50922a44ad70674501d6477f07f8eb
|
|
| BLAKE2b-256 |
2966ae809f93892f47e853872c0722b50384fce6cd3f4698c30bf7e23e922620
|