Skip to content

gospeedtest

An open-source, self-hosted internet speed test, written in Go. Inspired by speedtest.net — keeps the fancy gauge in the browser and adds a rich terminal UI for headless boxes.

A single binary serves both the speed-test endpoints and the web UI, and the same binary ships a CLI mode that runs the test from a terminal.

Get started View on GitHub

Features

  • Browser UI at / — animated SVG gauge, live ping / download / upload, ISP and IP info, served from assets embedded in the binary. No Node, no build step.
  • CLI mode with a Bubble Tea TUI — animated gauge, live numbers, works over SSH. --json for machine-readable output.
  • Default-mode CLI: running the bare binary (no subcommand) launches the CLI against http://localhost:8080.
  • Single Go binary, no runtime dependencies. Cross-compiled to linux / darwin / windows × amd64 / arm64 by CI.
  • HTTP-based protocol (LibreSpeed-style): parallel GET /download and POST /upload streams plus a /ping endpoint. No proprietary protocol — any reverse proxy / load balancer works without special handling.
  • MIT licensed.

Where to next

  • Getting started

    Install, run the server, run a test in 30 seconds.

  • gospeedtest server

    Every flag, every endpoint, reverse-proxy notes, safety caps.

  • gospeedtest cli

    Default-mode dispatch, flags, JSON output schema, keybindings.

  • How the test works

    Wire protocol, measurement methodology, ramp-up trim, jitter math.

  • Privacy

    What stays local, what goes to ipinfo.io, when lookups are skipped.

  • Contributing

    Build, test, send a PR.