rakyll/hey — a trending Go project
HTTP load generator, ApacheBench (ab) replacement
rakyll/hey — Go · 20,372 stars · 1,310 forks · +31 today
HTTP load generator, ApacheBench (ab) replacement

hey is a tiny program that sends some load to a web application.
hey was originally called boom and was influenced from Tarek Ziade's tool at tarekziade/boom. Using the same name was a mistake as it resulted in cases where binary name conflicts created confusion. To preserve the name for its original owner, we renamed this project to hey.
Installation
#- Linux (amd64): https://storage.googleapis.com/hey-releases/hey_linux_amd64
- macOS (amd64): https://storage.googleapis.com/hey-releases/hey_darwin_amd64
- Windows (amd64): https://storage.googleapis.com/hey-releases/hey_windows_amd64
Package Managers
#macOS:
- Homebrew users can use
brew install hey.
Usage
#hey runs provided number of requests in the provided concurrency level and prints stats.
It also supports HTTP2 endpoints.
Usage: hey [options...] <url>
Options:
-n Number of requests to run. Default is 200.
-c Number of workers to run concurrently. Total number of requests cannot
be smaller than the concurrency level. Default is 50.
-q Rate limit, in queries per second (QPS) per worker. Default is no rate limit.
-z Duration of application to send requests. When duration is reached,
application stops and exits. If duration is specified, n is ignored.
Examples: -z 10s -z 3m.
-o Output type. If none provided, a summary is printed.
"csv" is the only supported alternative. Dumps the response
metrics in comma-separated values format.
-m HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.
-H Custom HTTP header. You can specify as many as needed by repeating the flag.
For example, -H "Accept: text/html" -H "Content-Type: application/xml" .
-t Timeout for each request in seconds. Default is 20, use 0 for infinite.
-A HTTP Accept header.
-d HTTP request body.
-D HTTP request body from file. For example, /home/user/file.txt or ./file.txt.
-T Content-type, defaults to "text/html".
-a Basic authentication, username:password.
-x HTTP Proxy address as host:port.
-h2 Enable HTTP/2.
-host HTTP Host header.
-disable-compression Disable compression.
-disable-keepalive Disable keep-alive, prevents re-use of TCP
connections between different HTTP requests.
-disable-redirects Disable following of HTTP redirects
-cpus Number of used cpu cores.
(default for current machine is 8 cores)
Examples
#Make requests with default settings:
hey https://google.com
Make 1000 requests with 100 concurrent workers:
hey -n 1000 -c 100 https://google.com
Run load test for 30 seconds:
hey -z 30s https://google.com
Make POST request with custom body:
hey \
-m POST \
-d "param1=value1¶m2=value2" \
https://google.com
Add custom headers:
hey \
-H "Accept: application/json" \
-H "Authorization: Bearer token" \
https://google.com
Test with HTTP/2:
hey -h2 https://google.com
Rate limit to 10 queries per second per worker:
hey -q 10 -c 5 -z 30s https://google.com
Content above is the README of rakyll/hey, reproduced from GitHub’s trending list. All rights remain with the original authors.
Newsletter
New posts in your inbox. Confirm by email, unsubscribe any time.
More in DevOps
View allDonchitos/Claude-Code-Game-Studios — a trending Shell project
Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.
via GitHub · 7 min
expo/skills — a trending Shell project
A collection of AI agent skills for working with Expo projects and Expo Application Services
via GitHub · 4 min
strelov1/freehire — a trending Go project
freehire — the open-source search engine for job seekers
via GitHub · 6 min
nvm-sh/nvm — a trending Shell project
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions.
via GitHub · 2 min
Comments
Posting as a guest