← All tools

tentse/load-tester

Popularity 65 Updated Testing & Security

A small HTTP load tester written in Go. Test your server load handling strength.

githubauto-collected

Installation

A directly usable install command is not verified yet. Check the project documentation or releases.

load-tester

A small HTTP load tester written in Go. Point it at a URL, tell it how many requests to send and how many to run at once, and it tells you how the target held up — throughput, latency percentiles, and a breakdown of whatever went wrong.

It's a library as well as a command. The public API (Config, Run, Summary) lives in an importable loadtest package, so you can drive load tests from your own Go code instead of shelling out to a binary.

The production code uses nothing but the Go standard library. That's a deliberate constraint, not an accident — the whole point was to learn Go's concurrency model properly rather than lean on someone else's worker pool. It was built test-first, following Learn Go with Tests, with AI guiding the design and reviewing the code rather than writing it.

⚠️ This tool generates real traffic. Only point it at systems you own or have explicit permission to test. Load testing someone else's server without permission is rude at best and illegal at worst — keep it to localhost and your own staging environments.

Install

go install github.com/tentse/load-tester/cmd/loadtester@latest

Or build from source:

git clone https://github.com/tentse/load-tester.git
cd load-tester
go build ./cmd/loadtester

Requires Go 1.26 or newer.

Quick start

loadtester -url http://localhost:8080/ -c 20 -n 500
Load test summary
Total: 500
Succeeded: 500
Failed: 0
Elapsed: 249.2195ms
Throughput: 2006.26 req/s
P50: 4.9175ms
P90: 7.433791ms
P99: 127.457334ms
Errors:
n/a

Press Ctrl+C at any point and the run stops cleanly: in-flight requests are canceled and you still get a summary of everything that completed.

Flags

| Flag | Default | Meaning | |---|---|---| | -url | (required) | Target URL | | -c | 10 | Number of concurrent workers | | -n | 20 | Total number of requests to send | | -method | GET | HTTP method | | -timeout | 1s | Per-request timeout, including reading the response body | | -token | (empty) | Bearer token, sent as an Authorization header | | -body | (empty) | Request body, sent as application/json |

loadtester -url https://api.example.internal/users \
  -method POST \
  -body '{"name":"test"}' \
  -token "$API_TOKEN" \
  -c 50 -n 1000 -timeout 5s

Understanding the output