Fire a quick test from the terminal, or open the web dashboard to watch live charts, find your capacity limit, and rehearse launch day. One Go binary, web UI included.
docker run -p 8080:8080 -v gload-data:/home/app/.gload ghcr.io/mertgundoganx/gload:latest --web
Beyond raw numbers
Most load testers hand you a wall of metrics and wish you luck. gload turns measurements into decisions.
One click auto-ramps traffic to your system's saturation knee and reports — in plain language — the max sustainable RPS and how many instances you need.
Rehearse a TV-ad or viral traffic surge by entering a single number: peak requests per second. Get a clear verdict before the real spike hits.
A sharded, lock-light metrics core records each request in ~56 ns with zero allocations — CPU goes into actual requests, not bookkeeping. Everything shown is measured, never faked.
Web UI
Manage services, stream live metrics over SSE/WebSocket, keep result history, compare runs side by side, and export print-ready reports. No frontend framework — it loads instantly.
Feature set
Smooth linear ramps between stages — closed-model concurrency or open-model arrival rate.
Smoke, Steady, Ramp Up, Spike, Stress, and Soak — ready to run on any service.
Multi-step flows with body/header/cookie extractors and weighted steps.
{{gen.*}} placeholders, environment variables, and JSON data sources.
Auto-scale workers to hold a target P95 latency.
Split load evenly across worker nodes; each runs its share independently.
Cron-based recurring tests, managed from the web UI or API.
Slack, Teams, Discord, email, and generic webhooks on completion.
How it compares
Every tool here is excellent at what it targets. gload's angle is a batteries-included UI plus capacity and launch-day answers — not raw minimalism or scripting depth.
| gload | k6 | vegeta | hey | wrk | Locust | |
|---|---|---|---|---|---|---|
| Language | Go | Go | Go | Go | C | Python |
| Single binary | ✓ | ✓ | ✓ | ✓ | build | — |
| Built-in web UI | ✓ | exp. | — | — | — | ✓ |
| Live dashboard | ✓ | Grafana | — | — | — | ✓ |
| Result history & compare | ✓ | — | — | — | — | ~ |
| Capacity-knee finder | ✓ | — | — | — | — | — |
| Launch/spike verdict | ✓ | — | — | — | — | — |
| Protocols beyond HTTP | WS · GraphQL · gRPC · TCP | WS · gRPC | — | — | — | code |
| No-code scenarios | ✓ | JS | — | — | Lua | Python |
| Distributed | ✓ | ✓ | — | — | — | ✓ |
| CI (JUnit / PR comments) | ✓ | ✓ | ~ | — | — | ~ |
| License | MIT | AGPL-3 | MIT | Apache-2 | Apache-2* | MIT |
k6 is more scriptable · wrk is faster at the raw level · hey and vegeta are simpler by design. Pick what fits the job. *wrk ships a modified Apache-2.0 license.
Quick start
# Multi-arch image (amd64 + arm64), published on each release docker run -p 8080:8080 -v gload-data:/home/app/.gload \ ghcr.io/mertgundoganx/gload:latest --web # Then open http://localhost:8080
# Requires Go 1.26+ git clone https://github.com/mertgundoganx/gload.git cd gload make build ./gload --web # web dashboard on :8080
# Basic GET test — 50 workers for 30 seconds gload -u https://api.example.com/health -c 50 -d 30s # POST with headers, generated body, and a 500 RPS cap gload -u https://api.example.com/users -m POST \ -H 'Content-Type: application/json' \ -b '{"name": "{{gen.name}}", "email": "{{gen.email}}"}' \ -c 100 -d 60s -r 500 # Headless mode for CI gload -u https://api.example.com/health -c 10 -d 10s --no-ui
# gload + Prometheus + Grafana with a pre-built dashboard make compose # gload → http://localhost:8080 # Prometheus → http://localhost:9090 # Grafana → http://localhost:3000
Prefer the terminal? The CLI has a live TUI by default and a --no-ui flag for CI pipelines.
Find out before your users do. Open source, MIT licensed, and a single binary away.