Repolode
hatoo

hatoo/oha

A command-line HTTP load generator written in Rust, inspired by rakyll/hey, with a real-time terminal UI.

Stars
10,629
Forks
306
Open issues
59
Last commit
3 days ago

What is it?

oha is a command-line tool that sends HTTP load to a web application and shows results in a real-time terminal UI. It is modeled on rakyll/hey, and its options follow hey's conventions, with some differences such as the -q flag, which sets the overall queries per second rather than per worker.

The tool supports HTTP/1.1, HTTP/2 (with parallel streams per connection), and experimental HTTP/3. It can control request rate, burst patterns, and duration, and it can generate random URLs from a regex or read a list of URLs from a file. Latency correction is available to avoid the coordinated omission problem. Output can be plain text, JSON, CSV, or quiet mode, and successful requests can be written to a SQLite database.

Built on tokio and ratatui, oha also offers TLS options (rustls or native-tls), client certificates, AWS SigV4 signing, proxies, Unix sockets, and VSOCK. Pre-built binaries are available through Cargo, Homebrew, Arch Linux, winget, and Docker.

Key features

  • 01Real-time terminal UI showing throughput and latency while the test runs.
  • 02Supports HTTP/1.1, HTTP/2 and experimental HTTP/3.
  • 03Rate limiting by QPS, burst patterns, and duration-based runs.
  • 04Random URL generation from regex, or URL lists read from a file.
  • 05Output as text, JSON, CSV, or quiet mode, with a documented JSON schema.
  • 06Latency correction option to avoid coordinated omission.
  • 07TLS options, client certificates, proxies, and AWS SigV4 signing.

Use cases

  • Load testing a web service before a release to see how it behaves under concurrency.
  • Comparing HTTP/1.1 and HTTP/2 performance of an endpoint.
  • Replaying URLs from an access log to produce a realistic traffic mix.
  • Running quick benchmarks in CI or scripts with JSON or CSV output.

Quick start

  1. 1

    Install oha with Cargo (requires Rust, make and cmake)

    cargo install oha
  2. 2

    Run oha against a target URL using the options in the README Usage section

Things to know

  • Building from source via Cargo needs make and cmake installed.
  • The HTTP/3 feature is experimental and depends on rustls for TLS.
  • The README lists only tested platforms (Linux, Windows 10, macOS), with no broader support stated.

In collections

Topics

FAQ

What is oha?
A command-line HTTP load generator written in Rust, inspired by rakyll/hey, with a real-time terminal UI. oha is a command-line tool that sends HTTP load to a web application and shows results in a real-time terminal UI. It is modeled on rakyll/hey, and its options follow hey's conventions, with some differences such as the -q flag, which sets the overall queries per second rather than per worker.
Is oha free to use? What license does it have?
oha is open source under the MIT license. Check the license terms before using it in commercial products.
Is oha still maintained?
Actively maintained. The last commit to oha was on Oct 22, 2026.
What can I use oha for?
Load testing a web service before a release to see how it behaves under concurrency. Comparing HTTP/1.1 and HTTP/2 performance of an endpoint. Replaying URLs from an access log to produce a realistic traffic mix. Running quick benchmarks in CI or scripts with JSON or CSV output.
How do I install oha?
Install oha with Cargo (requires Rust, make and cmake): cargo install oha Run oha against a target URL using the options in the README Usage section
Where can I get oha?
The source code and installation instructions are on GitHub: https://github.com/hatoo/oha

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects