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.0-py3-none-win_arm64.whl (2.5 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

web_speedtest-1.0.0-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.0-py3-none-manylinux_2_17_aarch64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

web_speedtest-1.0.0-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.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 db0190df61136747dfdf4d20bb0c6a2171d55660b5c415bdaeda61bc893a2c6d
MD5 1d51eaaee2078c7178c267eb97d6c930
BLAKE2b-256 6667d1a3bbe0359ebb63a0766cef6064ce5c8f9b44dc50d85cd5279d4226cde8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e9753ce1c15b3bc9ccaca52b513915f23651507d60c858dd6fa3b773ff8138c6
MD5 1707172a62e373cf87221de7d3994dcb
BLAKE2b-256 475ebe24b1e6aaea31c9662764de128e83318ab09f9eb54e6f494f3a25c57ee6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ada25a95521100f41927636bc060c36d0d09e2d8ff1efb7866653ed46c70c788
MD5 9a4bb71fc678177b68e51b599c23d9b9
BLAKE2b-256 3664ec8267792e82a0bc2b9a8ca462abaaccbda51b00fc59251868b684e80436

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 7f6aabcd0dcc79d97084454072eb7acaa93906a3d4b45054290a11a35a21361a
MD5 1b7e8211091e9bc59b45c736f437665b
BLAKE2b-256 f466a60777d3ee4ef16c298b0b6877c621470592a0c451e543d6f60e521a2a4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46f732509fb86b68849770930a3a0f1a750d812dcddce46f313bf46ecc6b2b74
MD5 a3ee93b884b4c7f5f490d16d0cc9135c
BLAKE2b-256 711b3d7ae41e3e525e2539538bb3782ef3000fb783eaaf4446e9e00cade648cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7cd2d7ad6de100a4eb1b46a41e630441699f6401935e04cf1d2297e6a2720c1d
MD5 7b27e76496fa3ad4e022f69e231647eb
BLAKE2b-256 3dab07145cdbb44021d0aff5e9a4bf2d6fd43fd8e352a181db9822c180e3d6ca

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