A fast, zero-dependency network speed testing tool written in Go. 9 test types, A-F quality grades, cross-platform.
Built for engineers who need accurate, repeatable network measurements.
Pure Go standard library. No external packages. Single binary, drop it anywhere.
TCP/UDP throughput, latency, jitter, bufferbloat (RPM), path MTU, DNS, TCP connect, bidirectional.
A-F letter grades for every metric with color-coded terminal output. Know your network quality at a glance.
Table, JSON, and CSV output. Pipe to jq, import to spreadsheets, or feed your monitoring stack.
Native support for Windows, macOS, Linux, and FreeBSD. No Cygwin, no WSL, no compromises.
Concurrent client support out of the box. Unlike iperf3, multiple users can test simultaneously.
Local JSONL storage tracks results over time. See how your network performance changes with --history.
Based on RFC 6349, RFC 2544, ITU-T Y.1564. BDP-aware TCP buffers, RFC 3550 jitter calculation.
Optional encrypted connections for testing across untrusted networks. Certificate verification included.
Comprehensive network diagnostics in a single run.
| Test | Protocol | What it measures | Key metric |
|---|---|---|---|
| Latency | TCP | Round-trip time (20 samples) | min/avg/p95/max ms |
| Path MTU | UDP (DF bit) | Path Maximum Transmission Unit | bytes |
| TCP Throughput | TCP | Bandwidth with BDP-aware buffers | Mbps / Gbps |
| UDP Throughput | UDP | Bandwidth + packet loss + reordering | Mbps, loss % |
| Jitter | UDP | Inter-packet delay variation (RFC 3550) | ms |
| Bufferbloat | TCP + UDP | Latency under load → responsiveness | RPM |
| DNS | UDP/53 | DNS resolution latency | ms |
| TCP Connect | TCP | SYN → established handshake time | ms |
| Bidirectional | TCP | Simultaneous upload + download | Mbps each |
Every metric gets a letter grade so you can quickly assess quality.
A modern alternative built for real-world network testing.
| Feature | gospeed | iperf3 |
|---|---|---|
| Concurrent clients | Yes | No (one at a time) |
| Windows support | Native | Cygwin-dependent |
| JSON output | Reliable | Broken with parallel/bidir |
| Bufferbloat detection | Built-in (RPM) | Not available |
| Unified metrics | Single run | Separate tools needed |
| Quality grading | A-F grades | Raw numbers only |
| Test history | Built-in trends | Not available |
| NAT-friendly | All client-initiated | Requires reverse mode |
| Dependencies | Zero | libssl, etc. |
Get running in under a minute.
go install github.com/goozt/gospeed/cmd/gospeed@latest
go install github.com/goozt/gospeed/cmd/gospeed-server@latest
docker compose up -d
Common usage patterns to get you started.
Listen on default port 9000.
gospeed-server
Full test suite against a remote server.
gospeed -s host:9000 -all
Run only the tests you need.
gospeed -s host:9000 -latency -tcp
Machine-readable output for scripting.
gospeed -s host:9000 --json | jq .
See past results with trend indicators.
gospeed --history
Encrypted testing over untrusted networks.
gospeed -s host:9000 --tls
Adjust parallel streams for throughput tests.
gospeed -s host:9000 -streams 8
Set server address once.
export GOSPEED_SERVER_ADDR=host:9000
gospeed
Secure server with certificate.
gospeed-server -tls-cert cert.pem -tls-key key.pem
Client-server model with dedicated control and data channels.
All available flags and options.
| Flag | Description | Default |
|---|---|---|
-s | Server address (host:port) | localhost:9000 |
-streams | Number of parallel streams | 4 |
-duration | Test duration in seconds | 10 |
--json | Output as JSON | - |
--csv | Output as CSV | - |
--history | Show previous results with trends | - |
--tls | Use TLS connection | - |
--tls-skip-verify | Skip TLS certificate verification | - |
-version | Print version and exit | - |
-latency | Unloaded latency (RTT) | - |
-mtu | Path MTU discovery | - |
-tcp | TCP throughput | - |
-udp | UDP throughput + packet loss | - |
-jitter | Jitter measurement | - |
-bufferbloat | Bufferbloat detection (RPM) | - |
-dns | DNS resolution latency | - |
-connect | TCP connection setup time | - |
-bidir | Bidirectional throughput | - |
-all | Run all tests | - |