Skip to content

oha

A command-line tool that sends many HTTP requests to a web server and shows live results.

Stars
10.7k
Forks
307
Licence
MIT
Language
Rust
Last update
4 days ago
Type
CLI

What it is

oha is a command-line program that sends a large number of HTTP requests to a web address to see how it performs under load. While it runs, it shows a live terminal display with progress and results. It is written in Rust and is inspired by the older hey tool.

  • Run 10,000 GET requests against a local server with 50 connections and see latency results
  • Limit traffic to a set number of queries per second with -q to test steady load
  • Send a POST request with a body from a file using -D
  • Test an HTTP/2 endpoint using the --http2 option
  • Run a timed test for a set duration with -z, such as 3 minutes

Great for

  • Developers checking how an API or website handles many simultaneous requests
  • Backend engineers comparing performance before and after a change
  • People who prefer a terminal tool with a live view over reading raw output
  • Users who want to set a request rate limit or test over HTTP/2

Not ideal for

  • Testing a whole user journey across many steps, since the README describes sending requests to a URL rather than scripted scenarios
  • Anyone needing a graphical interface, since the tool is terminal-based
  • Testing live production systems without permission, because heavy load can cause outages
Step-by-step guide: how to use ohaInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Rust (stable), with make and cmake, if installing via cargo

    Install via Cargo

    cargo install oha

    Install on macOS with Homebrew

    brew install oha

    Install on Arch Linux

    pacman -S oha

    Install on Windows with winget

    winget install hatoo.oha
  2. 2

    Run it

    • Install oha using one of the commands above, or download a binary from the release page
    • Run oha with a target URL, for example: oha https://example.com
    • Use -n to set the number of requests and -c to set concurrent connections
    • Watch the live display, then review the summary when the test finishes
  3. 3

    Get the most out of it

    • Use -z with a duration like 30s to run a timed test instead of a fixed request count
    • Use -q to cap requests per second for steady-rate testing
    • Use --http2 and -p to send parallel requests over HTTP/2
    • Use --no-tui for plain output when running in scripts or CI
    • Use --latency-correction with -q or --burst-delay to address the coordinated omission problem

Downloads

Strengths

  • Live terminal display shows progress while the test runs
  • Many options cover headers, bodies, authentication, TLS certificates and HTTP versions
  • Available through several package managers and as pre-built binaries for major operating systems

Trade-offs

  • The README describes some features as experimental, such as HTTP/3 support
  • Behavior differs from the similar hey tool in places, such as how -q is applied, so existing scripts may need changes
  • Large numbers of connections may require raising the system's open-file limit, as the README notes

How it compares

ProjectStarsTypeLevelUpdatedBest for
oha (this)10.7kCLIbeginner4 days agoDevelopers checking how an API or website handles many simultaneous requests
vegeta25.2kCLIintermediate1 months agoBackend developers checking how an HTTP API behaves under a fixed request rate
locust28.3kAppintermediate4 days agoBackend or QA engineers who want load tests kept in version control as normal code
fx20.7kCLIbeginner15 days agoDevelopers who work with JSON output from APIs or log files in the terminal
http-server14.2kCLIbeginner7 months agoFront-end developers who want to preview a static site or single-page app locally
mitmproxy46.6kDev toolintermediate4 days agoDevelopers debugging how an app talks to a backend API

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.