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!
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!
- 🚀 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
💡 Quick Start: Want to test your speed right now? Visit internetspeedtest.net for an instant browser-based test!
cd python
pip install -e .
pip install internetspeedtest
Basic speed test:
internetspeedtest-py
Test with specific server:
internetspeedtest-py --server 1
List available servers:
internetspeedtest-py --list
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")
--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
--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)
--source IP
- Source IP address to bind to--timeout N
- HTTP timeout in seconds (default: 15)--secure
- Use HTTPS instead of HTTP
--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
internetspeedtest-py
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"
}
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"
internetspeedtest-py --server-json https://example.com/servers.json
internetspeedtest-py --simple
Output:
Ping: 25.43 ms Jitter: 2.15 ms
Download: 95.23 Mbps
Upload: 48.56 Mbps
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"
}
]
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 | ✅ | ✅ |
class SpeedTest(source=None, timeout=15, secure=False)
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
class Server(server_dict)
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
- Python 3.7 or higher
- requests >= 2.25.0
This project is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
This Python CLI is proudly powered by InternetSpeedTest.net - the next-generation speed testing platform that puts users first:
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 |
- 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
👉 internetspeedtest.net - Test your speed in seconds!
For issues and questions about this Python CLI, please open an issue on GitHub.
For InternetSpeedTest.net service questions, visit internetspeedtest.net.