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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 9aacf4448859811f23eb04ada87c99c18a2ee5ec46577dea4785d58e35fca56e
MD5 76cd585c8cc2624d5481d1c0332fead0
BLAKE2b-256 fb4f72f8e5b4a2c328fef52f4f9aa35fd4ba3316ba6c822d41e6a243f564e21d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f1a3f6cb164d8d920858b0aa30164584c1bc8bfdc81d3fa6166b87909949f28b
MD5 9578951dc56cd1b9e2bd37908d2c0eef
BLAKE2b-256 6ba90c931f8ef4b7a18d14ea16ffb4efacdd7ea9f935321db3a78e5bb8537084

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b48bbc438c6d56a7f2096a482d5ab3a86688e540154e93ab2c650037889ffeea
MD5 77584c96c72e8b2d7318e2df75581f17
BLAKE2b-256 9e4ed585f34c6cc0300d67aa17e6cdd43d1d7209389af209b63297a03c29e801

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 2daa081a6dac6dc5fdef49f744e37d20edcb188edd5407db523e8c5eb62fed2a
MD5 4b97c52b80f69f602d928fc5e4d4984e
BLAKE2b-256 d2293225f8988cb89f1bdb1949185b53fe76bc817fe722972298b5d6bd01530f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f131c1347aaf8d961d905f8bc656b592873123b58e0e6784bf60294e0f9b4af3
MD5 6acd062ac7090f6f2433790a69650b2e
BLAKE2b-256 33c2029f36fa794fd32c2b0e20c2764ee36d5c154a7545976177e5655ade9c1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for web_speedtest-1.0.0b10-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 faa6deacb8ee96b8dabbff0d8668aeabd7611278723e7e50416d1658ae4461ec
MD5 7e9a45a9516065b02e7a24033f2cc75e
BLAKE2b-256 dbe4598471f116e55d325c51a48b00f33541679475651b6e193d002b15dee119

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