rakyll/hey

▲ 316 stars today★ 20,441⑂ 1,310

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,441 stars and 1,310 forks with 188 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,441Stars
1,310Forks
188Open issues
GoLanguage

GitHub Popularity

GitHub stars20,441
Forks1,310
Open issues188
Primary languageGo
LicenseApache-2.0
Stars gained today316
Created2016-09-02
Last pushed2026-01-10

Trending History

Weekly boardrank #84 · ▲ 316 stars

Related GitHub Projects

1

infiniflow / ragflow

Go★ 91,554⑂ 10,871▲ 52 stars
→
2

QuantumNous / new-api

Go★ 49,148⑂ 11,809▲ 76 stars
→
3

MHSanaei / 3x-ui

Go★ 47,239⑂ 11,952▲ 75 stars
→
4

seaweedfs / seaweedfs

Go★ 35,138⑂ 3,023▲ 55 stars
→
5

gastownhall / beads

Go★ 27,544⑂ 1,872▲ 38 stars
→
6

yorukot / superfile

Go★ 23,567⑂ 865▲ 120 stars
→
7

temporalio / temporal

Go★ 23,390⑂ 1,952▲ 34 stars
→
8

Billionmail / BillionMail

Go★ 15,790⑂ 1,733▲ 32 stars
→

More Trending Repositories