Vegeta
What it is
Vegeta is a free, open-source HTTP load-testing tool that sends requests at a constant rate. It runs as a command-line program or Go library, and its command-line interface is designed for UNIX composability. The project says it avoids coordinated omission and supports distributed load testing. Reports can be produced as text, JSON, histograms, or HDR plots, while results can be encoded as CSV, Gob, or JSON. The attack command offers an optional Prometheus exporter listen address. The CLI supports HTTP/2 when the server does and can send HTTP/2 over TCP without TLS. TLS options include client certificates and keys, custom root certificates, and a flag to ignore invalid server certificates. The documented default request timeout is 30 seconds; setting it to 0 disables timeouts. Vegeta is available for Linux, macOS, Windows, API use, and self-hosting. Installation includes precompiled executables, package managers, system packages, or building from source. The repository lists the MIT license.
For and against
For
- Constant-rate HTTP request generation
- Usable as CLI or Go library
- Supports distributed load testing
- Reports text, JSON, histogram, and HDR formats
- HTTP/2 and configurable TLS controls
Against
- Default request timeout is 30 seconds
- Unlimited rate and high workers can exhaust resources
- Setting timeout to zero disables protection
The verdict
Vegeta provides composable load generation with multiple report formats, protocol options, and library access. Its documentation also warns that aggressive unlimited settings can consume enough resources to crash the tool.
Who it suits
Vegeta suits developers and operators who need constant-rate HTTP load tests from a CLI or Go code. It supports API testing and distributed testing across listed platforms.
Plans and prices
Free
Open-source HTTP load testing tool and Go library
Read 11 Oct 2026 · github.com
On the record
- CLI and library
- Vegeta can be used as a command-line tool or as a Go library.github.com · read 11 Oct 2026
- Composability
- The CLI is designed with UNIX composability in mind.github.com · read 11 Oct 2026
- Distributed testing
- The README describes Vegeta as simple to use for distributed load testing.github.com · read 11 Oct 2026
- Installation
- The README lists precompiled executables, Homebrew and MacPorts for macOS, pacman for Arch Linux, and a FreeBSD package.github.com · read 11 Oct 2026
- License
- The GitHub repository identifies the project as MIT licensed.github.com · read 11 Oct 2026
- Load measurement
- Vegeta avoids coordinated omission and provides reporting functionality.github.com · read 11 Oct 2026
- Load testing
- The project says Vegeta avoids coordinated omission and can be used for distributed load testing.github.com · read 4 Oct 2026
- Maintainer
- GitHub identifies Tomás Senart as the repository owner and maintainer.github.com · read 11 Oct 2026
- Maker
- The repository owner profile identifies tsenart as Tomás Senart.github.com · read 4 Oct 2026
- Output formats
- Vegeta can encode results as CSV, Gob, or JSON, and generate text, JSON, histogram, or HDR plot reports.github.com · read 11 Oct 2026
- Prometheus
- The attack command can expose a Prometheus exporter when a listen address is configured.github.com · read 11 Oct 2026
- Protocols
- The attack command supports HTTP/2 when the server supports it, and can send HTTP/2 over TCP without TLS encryption.github.com · read 11 Oct 2026
- Purpose
- Vegeta is an HTTP load testing tool built to test HTTP services at a constant request rate.github.com · read 11 Oct 2026
- Reports
- Its report command supports text, JSON, histogram, and HDR plot output.github.com · read 4 Oct 2026
- Resource limit
- The README warns that combining an unlimited request rate with a very high maximum worker count can consume too many resources and crash Vegeta.github.com · read 11 Oct 2026
- TLS
- The attack command supports client certificates and keys, custom root certificates, and an option to ignore invalid server certificates.github.com · read 4 Oct 2026
- TLS controls
- The attack command accepts TLS client certificates and keys, custom root certificate files, and a flag to ignore invalid server certificates.github.com · read 11 Oct 2026
- Usage limit
- The documented default request timeout is 30 seconds, and setting it to 0 disables timeouts.github.com · read 4 Oct 2026