Skip to main content

Network speed test — server with web UI and CLI client

Project description

web-speedtest

A network speed test with a web UI and CLI client — measure ping, download, and upload speeds.

web-speedtest provides two modes: a server that hosts a beautiful browser-based speed test, and a CLI client for quick terminal-based measurements. Both use the same API, and the entire tool is a single statically-linked binary — zero runtime dependencies.

Features

  • Server mode — HTTP server with a web UI for browser-based speed testing
  • Client mode — CLI tool for terminal-based speed measurements
  • Ping test — measure round-trip latency
  • Download test — time-based download throughput measurement (configurable duration)
  • Upload test — time-based upload throughput measurement
  • Web UI — dark-themed single-page app with animated gauges and live progress
  • API endpoints — programmatic access for custom integrations
  • Zero dependencies — single statically-linked Go binary
  • Coloured output — TTY-aware ANSI colours for CLI results
  • Cross-platform — works on macOS, Linux, and Windows

Installation

pip install web-speedtest

Or run directly with uv:

uvx web-speedtest

Quick Start

Start the server

# Start on default port 8080
web-speedtest server

# Start on a custom port
web-speedtest server --port 3000

# Bind to a specific address
web-speedtest server --host 127.0.0.1 --port 8080

# Set a custom test duration (default is 8 seconds per phase)
web-speedtest server --duration 15

Then open http://localhost:8080 in your browser to run a speed test.

Run a CLI speed test

# Test against a local server
web-speedtest client localhost:8080

# Test against a remote server
web-speedtest client http://speedtest.example.com:8080

API Endpoints

The server provides these endpoints for programmatic access:

Endpoint Method Description
/api/ping GET Returns a small JSON payload for latency measurement
/api/download?size=N GET Streams N bytes of random data (max 100 MB per request; client loops until time is up)
/api/upload POST Accepts a body of data and returns size/duration
/api/info GET Returns server metadata including test_duration (seconds)

Development

# Set up development environment
make dev

# Run linting and format checking
make check

# Auto-format code
make format

# Build wheel and docs
make build

Licence

Released under the Unlicense — public domain.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

web_speedtest-1.0.0b11-py3-none-win_arm64.whl (2.5 MB view details)

Uploaded Python 3Windows ARM64

web_speedtest-1.0.0b11-py3-none-win_amd64.whl (2.8 MB view details)

Uploaded Python 3Windows x86-64

web_speedtest-1.0.0b11-py3-none-manylinux_2_17_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

web_speedtest-1.0.0b11-py3-none-manylinux_2_17_aarch64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

web_speedtest-1.0.0b11-py3-none-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

web_speedtest-1.0.0b11-py3-none-macosx_10_9_x86_64.whl (2.8 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file web_speedtest-1.0.0b11-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 a74a716ca773d1fccb6c9a9792f1ada048f5a2138d0d6af721bad8bf98a91afc
MD5 bb9b4579871a4f0e1d64ed9f32a7d97e
BLAKE2b-256 73e144f58b5d52612bde4c1ba31fd47076e6fe4f7612202e5a5507ef9e241085

See more details on using hashes here.

File details

Details for the file web_speedtest-1.0.0b11-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e43bbb27348ac9a24565de4653681cd47cd86dac2bcd8de492c0125bce99d248
MD5 6982ca29b42efac5a72869551c9f0876
BLAKE2b-256 162d92e88410010976597be13230b3c93dd36abff862aadabd8ad2b04f609567

See more details on using hashes here.

File details

Details for the file web_speedtest-1.0.0b11-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4bc503570f5e0fcfbc8d0bc4ce1450182bc150996f8ba5608a5b41a94761e043
MD5 a0759a76e361ac6cff781450a2d2b4e3
BLAKE2b-256 0c82df46745f21f1183351859e4eb6aa8b1ac142226e11b16f7cce6109df5968

See more details on using hashes here.

File details

Details for the file web_speedtest-1.0.0b11-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 fd002a978f83720362ec843ff03ac2cf8101e19a7c234f816861e6abb545c77e
MD5 6602447488b618982f80d762582f55a6
BLAKE2b-256 d9b525dc823ace2f13d438bedcefe9501a14026520d5d22ee1219fccc9a8d73c

See more details on using hashes here.

File details

Details for the file web_speedtest-1.0.0b11-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f00a6ea3745e4dd0ec5ea2d3889d260c7cd089d583d5e32579a7dbc8fe8b9f5f
MD5 ce3528e21d7a3719e38513582824f3ca
BLAKE2b-256 52050a04ff7d2e26bc1db2ea89a3315736e2260038d10d791cf9db65c4c4f84f

See more details on using hashes here.

File details

Details for the file web_speedtest-1.0.0b11-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0b11-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4519608f1d39f9edecdf394ad480ce86232d5f50c3048f5975d67bf485ba6ba2
MD5 46af688b0657a56ef8058b7b6b3c0d68
BLAKE2b-256 4cbcac720e13cf2735a62d6ae80e7ee585fe45b7799032ab551669ea415121d5

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