rakyll/hey

▲ 246 stars today★ 20,645⑂ 1,319

HTTP load generator, ApacheBench (ab) replacement

About rakyll/hey

rakyll/hey is an open-source project on GitHub, mainly written in Go. HTTP load generator, ApacheBench (ab) replacement It currently holds 20,645 stars and 1,319 forks with 190 open issues, and was last pushed on 2026-01-10 (repository created 2016-09-02).

Project Overview

Git Homed tracks it on the Today's Trending board.

GitHub Repository Details

Repository rakyll/hey · default branch master · size 1086 KB · watchers 182 · source: GitHub REST API and repository README

README

hey

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

Package Managers

macOS:

Usage

hey runs provided number of requests in the provided concurrency level and prints stats.

It also supports HTTP2 endpoints.

Usage: hey [options...]

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&param2=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

GitHub Stars & Activity

20,645Stars
1,319Forks
190Open issues
GoLanguage

GitHub Popularity

GitHub stars20,645
Forks1,319
Open issues190
Primary languageGo
LicenseApache-2.0
Stars gained today246
Created2016-09-02
Last pushed2026-01-10

Trending History

Weekly boardrank #91 · ▲ 246 stars

Related GitHub Projects

1

ollama / ollama

Go★ 182,486⑂ 18,138▲ 131 stars
→
2

golang / go

Go★ 139,317⑂ 21,510▲ 33 stars
→
3

caddyserver / caddy

Go★ 77,476⑂ 5,096▲ 90 stars
→
4

aquasecurity / trivy

Go★ 38,287⑂ 741▲ 28 stars
→
5

gitleaks / gitleaks

Go★ 29,781⑂ 2,269▲ 43 stars
→
6

Autumn-27 / ARTEX

Go★ 1,940⑂ 491▲ 244 stars
→
7

mattpocock / skills

Shell★ 279,381⑂ 23,406▲ 1,406 stars
→
8

ohmyzsh / ohmyzsh

Shell★ 190,219⑂ 28,638▲ 41 stars
→

More Trending Repositories