Load testing that grows with you

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
MIT License Written in Go Single binary
zsh — gload
HTTP/1.1 & HTTP/2 WebSocket GraphQL gRPC TCP — out of the box

Beyond raw numbers

Answers, not just percentiles

Most load testers hand you a wall of metrics and wish you luck. gload turns measurements into decisions.

🎯

Find Capacity

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.

“Saturates at ~8 concurrent · ~380 req/sec.”
📺

Simulate Launch

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.

READYAT RISKNOT READY
⚙️

Honest engine

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.

~56 ns/op · 0 allocs

Web UI

A real dashboard, not an afterthought

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.

localhost:8080
gload web dashboard showing three services with live RPS, latency, and error-rate metrics

Actual screenshot — the dashboard after three test runs.

Every run, fully dissected

localhost:8080/#/services/1
gload service detail page with total requests, RPS, error rate, latency percentiles and status code breakdown
  • Real latency percentiles — Min / Avg / P50 / P95 / P99 / Max, measured, not estimated.
  • Live per-interval charts — true interval RPS and latency, not cumulative averages.
  • Request timing breakdown — DNS, TCP, TLS, TTFB, and transfer phases.
  • TLS & rate-limit analysis — cipher details plus 429 detection with Retry-After parsing.
  • History & comparisons — annotate runs, compare 2–5 results color-coded side by side.
  • Exports — CSV, JSON, HTML, PDF, and JUnit.

Feature set

Batteries included

🌊

Staged ramping

Smooth linear ramps between stages — closed-model concurrency or open-model arrival rate.

📈

Six load patterns

Smoke, Steady, Ramp Up, Spike, Stress, and Soak — ready to run on any service.

🔗

Scenarios & chaining

Multi-step flows with body/header/cookie extractors and weighted steps.

🎲

Dynamic data

{{gen.*}} placeholders, environment variables, and JSON data sources.

🧠

Adaptive concurrency

Auto-scale workers to hold a target P95 latency.

🌐

Distributed testing

Split load evenly across worker nodes; each runs its share independently.

Scheduling

Cron-based recurring tests, managed from the web UI or API.

🔔

Notifications

Slack, Teams, Discord, email, and generic webhooks on completion.

Quick start

Running in under a minute

# 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

Prefer the terminal? The CLI has a live TUI by default and a --no-ui flag for CI pipelines.

Plays well with others

From laptop to CI to production monitoring

📊 Prometheus /metrics endpoint 📉 Grafana pre-built dashboard 🐙 GitHub PR result comments JUnit XML for CI systems 💬 Slack · Teams · Discord alerts ✉️ Email SMTP notifications 🌀 cURL import from DevTools 🐳 Docker multi-arch images

Will your system survive launch day?

Find out before your users do. Open source, MIT licensed, and a single binary away.