Network speed testing,
done right.

A fast, zero-dependency network speed testing tool written in Go. 9 test types, A-F quality grades, cross-platform.

$ gospeed -s speed.example.com -all

Test Result Grade
──────────────────────────────────────────────
Path MTU 1500 bytes A
Latency 12.4 ms avg A
TCP Throughput 847.2 Mbps down A
Bufferbloat 523 RPM A
UDP Throughput 412.8 Mbps A
Packet Loss 0.02% A
Jitter 1.8 ms A
DNS Resolution 8.2 ms A
TCP Connect 14.1 ms A
Bidirectional 821/834 Mbps A

Why gospeed?

Built for engineers who need accurate, repeatable network measurements.

0

Zero Dependencies

Pure Go standard library. No external packages. Single binary, drop it anywhere.

9

9 Test Types

TCP/UDP throughput, latency, jitter, bufferbloat (RPM), path MTU, DNS, TCP connect, bidirectional.

A

Quality Grades

A-F letter grades for every metric with color-coded terminal output. Know your network quality at a glance.

{}

Multiple Output Formats

Table, JSON, and CSV output. Pipe to jq, import to spreadsheets, or feed your monitoring stack.

>_

Cross-Platform

Native support for Windows, macOS, Linux, and FreeBSD. No Cygwin, no WSL, no compromises.

//

Multi-Client Server

Concurrent client support out of the box. Unlike iperf3, multiple users can test simultaneously.

~

Test History & Trends

Local JSONL storage tracks results over time. See how your network performance changes with --history.

RFC

Scientifically Grounded

Based on RFC 6349, RFC 2544, ITU-T Y.1564. BDP-aware TCP buffers, RFC 3550 jitter calculation.

TLS

TLS Support

Optional encrypted connections for testing across untrusted networks. Certificate verification included.

Test Suite

Comprehensive network diagnostics in a single run.

TestProtocolWhat it measuresKey metric
LatencyTCPRound-trip time (20 samples)min/avg/p95/max ms
Path MTUUDP (DF bit)Path Maximum Transmission Unitbytes
TCP ThroughputTCPBandwidth with BDP-aware buffersMbps / Gbps
UDP ThroughputUDPBandwidth + packet loss + reorderingMbps, loss %
JitterUDPInter-packet delay variation (RFC 3550)ms
BufferbloatTCP + UDPLatency under load → responsivenessRPM
DNSUDP/53DNS resolution latencyms
TCP ConnectTCPSYN → established handshake timems
BidirectionalTCPSimultaneous upload + downloadMbps each

Grading System

Every metric gets a letter grade so you can quickly assess quality.

Latency

ABCDF
<20ms · <50ms · <100ms · <200ms · ≥200ms

Packet Loss

ABCDF
<0.1% · <0.5% · <1% · <2.5% · ≥2.5%

Jitter

ABCDF
<5ms · <10ms · <20ms · <50ms · ≥50ms

Bufferbloat (RPM)

ABCDF
≥400 · ≥200 · ≥100 · ≥50 · <50

Throughput

ABCDF
≥100 · ≥50 · ≥25 · ≥10 · <10 Mbps

gospeed vs iperf3

A modern alternative built for real-world network testing.

Featuregospeediperf3
Concurrent clientsYesNo (one at a time)
Windows supportNativeCygwin-dependent
JSON outputReliableBroken with parallel/bidir
Bufferbloat detectionBuilt-in (RPM)Not available
Unified metricsSingle runSeparate tools needed
Quality gradingA-F gradesRaw numbers only
Test historyBuilt-in trendsNot available
NAT-friendlyAll client-initiatedRequires reverse mode
DependenciesZerolibssl, etc.

Installation

Get running in under a minute.

Binary Download

Pre-built binaries for all platforms.

Download Latest Release

Go Install

go install github.com/goozt/gospeed/cmd/gospeed@latest
go install github.com/goozt/gospeed/cmd/gospeed-server@latest

Docker (Server)

docker compose up -d

Quick Reference

Common usage patterns to get you started.

Start the Server

Listen on default port 9000.

gospeed-server

Run All Tests

Full test suite against a remote server.

gospeed -s host:9000 -all

Specific Tests

Run only the tests you need.

gospeed -s host:9000 -latency -tcp

JSON Output

Machine-readable output for scripting.

gospeed -s host:9000 --json | jq .

View History

See past results with trend indicators.

gospeed --history

TLS Connection

Encrypted testing over untrusted networks.

gospeed -s host:9000 --tls

Custom Streams

Adjust parallel streams for throughput tests.

gospeed -s host:9000 -streams 8

Environment Variable

Set server address once.

export GOSPEED_SERVER_ADDR=host:9000 gospeed

Server with TLS

Secure server with certificate.

gospeed-server -tls-cert cert.pem -tls-key key.pem

Architecture

Client-server model with dedicated control and data channels.

┌─────────────┐ Control (TCP, JSON-framed) ┌──────────────┐ │ gospeed │◄────────────────────────────────────▶│ gospeed- │ │ (client) │ Data (TCP/UDP streams) │ server │ │ │◄────────────────────────────────────▶│ │ └─────────────┘ └──────────────┘

CLI Reference

All available flags and options.

FlagDescriptionDefault
-sServer address (host:port)localhost:9000
-streamsNumber of parallel streams4
-durationTest duration in seconds10
--jsonOutput as JSON-
--csvOutput as CSV-
--historyShow previous results with trends-
--tlsUse TLS connection-
--tls-skip-verifySkip TLS certificate verification-
-versionPrint version and exit-
-latencyUnloaded latency (RTT)-
-mtuPath MTU discovery-
-tcpTCP throughput-
-udpUDP throughput + packet loss-
-jitterJitter measurement-
-bufferbloatBufferbloat detection (RPM)-
-dnsDNS resolution latency-
-connectTCP connection setup time-
-bidirBidirectional throughput-
-allRun all tests-