hey
HTTP load testing tool
TLDR
SYNOPSIS
hey [options] url
DESCRIPTION
hey is a HTTP load testing tool. It sends concurrent requests to a URL and provides statistics including latency distribution, throughput, and status code breakdown.hey is designed to be simple and fast, written in Go. It's useful for quick performance testing and benchmarking web services.
PARAMETERS
-n requests
Number of requests to run. Default is 200.-c concurrency
Number of concurrent workers. Default is 50.-z duration
Duration to send requests (e.g., 10s, 3m). Overrides -n.-m method
HTTP method (GET, POST, PUT, DELETE, HEAD, OPTIONS). Default is GET.-d body
Request body.-D file
Request body from file.-T content-type
Content-Type header. Default is "text/html".-H header
Custom HTTP header. Can be repeated for multiple headers.-t timeout
Timeout for each request in seconds. Default is 20. Use 0 for infinite.-A accept
HTTP Accept header.-a auth
Basic authentication, username:password.-x proxy
HTTP Proxy address as host:port.-q rate
Rate limit in QPS per worker. No limit by default.-o format
Output format: csv.-h2
Enable HTTP/2.-host header
HTTP Host header.-disable-compression
Disable compression.-disable-keepalive
Disable keep-alive, prevents TCP connection reuse.-disable-redirects
Disable following of HTTP redirects.-cpus n
Number of CPU cores to use.
OUTPUT
Displays:- Total time and requests- Requests per second- Latency distribution (10%, 50%, 90%, 99%)- Status code distribution- Error summary
CAVEATS
Can overload target servers; use responsibly. May be blocked by rate limiters. Not suitable for distributed load testing. Single machine limitation.
HISTORY
hey was created by Jaana B. Dogan (rakyll) at Google as a successor to the tool "boom". It's written in Go and designed for simplicity and ease of use.
