Skip to content

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
Step-by-step guide: how to use VegetaInstall, first run, examples, tips and FAQs

How to get it

  1. 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 vegeta

    Arch Linux

    pacman -S vegeta

    FreeBSD

    pkg install vegeta

    Build from source

    git clone https://github.com/tsenart/vegeta
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
vegeta (this)25.2kCLIintermediate1 months agoBackend developers checking how an HTTP API behaves under a fixed request rate
locust28.3kAppintermediate4 days agoBackend or QA engineers who want load tests kept in version control as normal code
oha10.7kCLIbeginner4 days agoDevelopers checking how an API or website handles many simultaneous requests
axum27.7kLibraryintermediate4 days agoRust developers building HTTP APIs or web services
kratos26kLibraryintermediate5 days agoGo developers building a set of backend services that talk over HTTP or gRPC
chi23kLibraryintermediate19 days agoGo 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.