
Vegeta
Command-line and Go library for sending steady HTTP request loads to test how servers hold up.
- Stars
- 25.2k
- Forks
- 1.4k
- Licence
- MIT
- Language
- Go
- Last update
- 1 months ago
- Type
- CLI
What it is
Vegeta is a tool for load testing HTTP services. You tell it a target URL and a request rate, and it sends requests at that steady pace, then reports on response times and success rates. It works as a command-line program that pipes results into reports and plots, and as a Go library you can call from your own code.
- Send a constant rate of GET requests to an endpoint for 30 seconds and print a text report
- Export attack results as JSON or CSV for further analysis
- Generate an HTML plot of response times from saved results
- Write a histogram of latency buckets from a results file
- Run attacks with targets generated dynamically by another program in JSON format
Great for
- Backend developers checking how an HTTP API behaves under a fixed request rate
- Teams that want a scriptable, UNIX-style load testing command
- Go developers who want to embed load tests in their own programs
- Engineers running distributed load tests across several machines
Not ideal for
- People who need to test non-HTTP protocols, since the README only describes HTTP services
- Users who want a graphical interface, since the README describes only command-line and library usage
- Anyone unfamiliar with basic command-line use, as the workflow relies on piping commands together
How to get it
- 1
Install with a package manager
You'll need: Homebrew, MacPorts, pacman, or pkg for package installs, or Make and Go for building from source
macOS (Homebrew)
brew update && brew install vegetaArch Linux
pacman -S vegetaFreeBSD
pkg install vegetaBuild from source
git clone https://github.com/tsenart/vegeta - 2
Run it
- Install Vegeta using one of the package manager commands or download a pre-compiled binary from the releases page
- Run: echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report
- Review the text report printed to the terminal
- Optionally run vegeta plot > plot.html on saved results to view a chart
- 3
Get the most out of it
- Use -rate and -duration on the attack command to set the load pattern
- Use -format=json with a generator to create targets dynamically
- Use -prometheus-addr to expose metrics to a Prometheus exporter
- Use report types such as json, hist, or hdrplot to analyze results in different ways
- Use -connect-to or -resolvers to control how hostnames are resolved during tests
Downloads
Strengths
- Sends requests at a constant rate, and the README says it avoids Coordinated Omission, a common measurement error
- Works both as a command-line tool and as a Go library
- Simple to install on macOS, Arch Linux, FreeBSD, or via pre-compiled binaries
Trade-offs
- Scope is HTTP only, according to the README
- The README is truncated, so details on distributed setup and some advanced options are unclear from this text
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| vegeta (this) | 25.2k | CLI | intermediate | 1 months ago | Backend developers checking how an HTTP API behaves under a fixed request rate |
| locust | 28.3k | App | intermediate | 4 days ago | Backend or QA engineers who want load tests kept in version control as normal code |
| oha | 10.7k | CLI | beginner | 4 days ago | Developers checking how an API or website handles many simultaneous requests |
| axum | 27.7k | Library | intermediate | 4 days ago | Rust developers building HTTP APIs or web services |
| kratos | 26k | Library | intermediate | 4 days ago | Go developers building a set of backend services that talk over HTTP or gRPC |
| chi | 23k | Library | intermediate | 19 days ago | Go developers building REST API services |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.