explaingit

hatoo/oha

10,244RustAudience · ops devopsComplexity · 1/5Setup · easy

TLDR

oha is a fast, single-binary command-line tool for load testing web applications, point it at a URL, set a request count and concurrency level, and watch live latency and throughput stats in your terminal.

Mindmap

mindmap
  root((oha))
    What it does
      Sends many requests
      Live terminal dashboard
      Latency histograms
    Features
      HTTP 1 2 and 3
      Rate limiting
      Regex URL patterns
      Latency correction
    Installation
      Homebrew on Mac
      Cargo for Rust users
      Docker image
    Audience
      Developers
      DevOps teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Load test a web API to find its maximum requests-per-second capacity before a production release.

USE CASE 2

Benchmark a server's latency distribution under concurrent load to catch performance regressions.

USE CASE 3

Test endpoints with varying paths in a single run by generating target URLs from a regex pattern.

Tech stack

Rust

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

oha is a command-line tool for load testing web applications. You point it at a URL, tell it how many requests to send and how many connections to use at once, and it hammers the server while showing you a live dashboard in the terminal. The dashboard updates in real time as the test runs, showing request rates, latency distributions, response codes, and a histogram of response times. It is written in Rust, which makes it fast and easy to install as a single binary. You can install it via Homebrew on Mac, winget on Windows, pacman on Arch Linux, or a simple cargo command if you have Rust already installed. Pre-built binaries are available on the releases page for all major platforms. The tool supports HTTP/1, HTTP/2, and experimental HTTP/3. You can control the number of requests to send, set a time limit instead of a request count, cap the request rate in queries per second, add custom headers, send request bodies, and use basic authentication. There is an option to generate target URLs from a regular expression pattern, which lets you test endpoints with varying paths in a single run. One feature called latency correction addresses a statistical problem common in load testing where fast responses are underrepresented because slow requests block the sampling. Enabling this flag gives a more accurate picture of actual latency under load. The name comes from the Japanese greeting ohayou, meaning good morning. The project is named in that spirit and is open source. A Docker image is available if you prefer running it in a container rather than installing it directly.

Copy-paste prompts

Prompt 1
Using oha, write the command to send 5000 requests to https://api.example.com/health with 50 concurrent connections and cap the rate at 200 requests per second.
Prompt 2
How do I run a 60-second time-limited load test with oha instead of a fixed request count, and what flags do I need?
Prompt 3
Show me an oha command that adds a custom Authorization header and sends a JSON POST body to my API endpoint.
Prompt 4
How does oha's latency correction flag work and when should I enable it to get more accurate results?
Open on GitHub → Explain another repo

← hatoo on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.