Skip to main content

InternetSpeedTest command line interface - Python implementation

Project description

InternetSpeedTest Python CLI

InternetSpeedTest.net Python LibreSpeed

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 list
  • ping(server, count=10) - Measure ping and jitter
  • download(server, duration=15, concurrent=3, chunks=100) - Test download speed
  • upload(server, duration=15, concurrent=3, upload_size=1024) - Test upload speed
  • get_ip_info(server) - Get IP information
  • find_best_server(servers) - Find server with lowest ping

Server Class

class Server(server_dict)

Attributes

  • id - Server ID
  • name - Server name
  • server - Server URL
  • dl_url - Download URL path
  • ul_url - Upload URL path
  • ping_url - Ping URL path
  • get_ip_url - Get IP URL path
  • sponsor_name - Sponsor name
  • sponsor_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

internetspeedtest-1.0.1.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

internetspeedtest-1.0.1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file internetspeedtest-1.0.1.tar.gz.

File metadata

  • Download URL: internetspeedtest-1.0.1.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

Hashes for internetspeedtest-1.0.1.tar.gz
Algorithm Hash digest
SHA256 7f36e743ca5d9791d96760505152cd99cb53016e8933aea941c7e525eee05b3c
MD5 85e00e05d0e222657ff78e682e35e343
BLAKE2b-256 63c5227bf5ba6acac91457b73663445e61ac5b476dfd2476f476cb2e778bb5f9

See more details on using hashes here.

File details

Details for the file internetspeedtest-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for internetspeedtest-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 90c2335c7e177a6d30d76ee70c2c003705e16ca132749a26417a8469fa3122a1
MD5 39d1409c0127cc3921657f033bb1a6ca
BLAKE2b-256 a3414a81b0b4a8f7f27ffc732b7f837fe1faa934d285eb16ca2f499a5f153ebd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page