A versatile HTTP load testing tool and library designed to drill HTTP services with a constant request rate.
Vegeta is an open-source HTTP load testing tool and library written in Go. It is designed to generate a constant rate of HTTP requests against target services, enabling developers to measure performance, identify bottlenecks, and validate system reliability under load. It solves the problem of inaccurate load testing by avoiding coordinated omission and providing detailed latency metrics.
Backend engineers, DevOps professionals, and performance testers who need to stress-test HTTP APIs, microservices, or web applications with precise control over request rates and comprehensive reporting.
Developers choose Vegeta for its accuracy in load testing, ease of use via a composable CLI, and flexibility as both a standalone tool and a Go library. Its ability to avoid coordinated omission and support distributed testing makes it a reliable choice for production-grade performance validation.
HTTP load testing tool and library. It's over 9000!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows defining exact request rates per time unit, enabling realistic traffic simulation as highlighted in the attack command options.
Avoids coordinated omission, a common flaw in load testing, ensuring reliable latency measurements even during request bursts.
CLI designed for easy integration into scripts and pipelines, supporting tools like jq for dynamic target generation as shown in examples.
Provides multiple report formats including JSON, histograms, and HDR plots for comprehensive performance analysis.
Only supports HTTP/HTTPS, so it cannot be used for testing other protocols like gRPC or WebSockets without significant workarounds.
Distributed testing requires external orchestration tools like pdsh, adding complexity compared to tools with built-in cluster management.
Prometheus support has limitations such as inaccurate timestamps and out-of-band configuration, as admitted in the README's limitations section.