Repolode
six-ddc

six-ddc/plow

A Go-based HTTP(S) load testing CLI with a real-time terminal display and web charts, using fasthttp for client requests.

Stars
4,515
Forks
154
Open issues
20
Last commit
5 days ago

What is it?

Plow is a command-line HTTP(S) benchmarking tool written in Go. It sends requests at a set number of concurrent connections and records latency statistics, histograms and percentiles while the test runs, showing them in the terminal and on a live web page. A test can run for a fixed duration, a fixed number of requests, or until interrupted with Ctrl-C.

Plow uses the fasthttp client library instead of Go's standard net/http package. Its streaming algorithms for histograms and quantiles are designed to keep memory and CPU overhead low during a benchmark. Optional tracing breaks request time into DNS, connect, TLS, write, wait and read phases.

Requests can be customized with methods, headers, request bodies (including files, optionally streamed), and client TLS certificates. The tool also supports rate limiting, ramp-up, SOCKS5 and HTTP proxies, Unix domain sockets, and JSON output.

Key features

  • 01Real-time latency statistics, histograms and percentiles in the terminal and a web UI.
  • 02Fixed concurrency, fixed request count, or fixed duration test modes.
  • 03Per-phase latency tracing for DNS, connect, TLS, write, TTFB and read.
  • 04Custom methods, headers, request bodies from files, and client TLS certificates.
  • 05Rate limiting, ramp-up, SOCKS5 and HTTP proxy support, and JSON output.

Use cases

  • Load testing an HTTP API or web service before a release.
  • Comparing response latency across endpoints or server configurations.
  • Diagnosing which request phase (DNS, connect, TTFB) contributes most to slow responses.

Quick start

  1. 1

    Install plow with Go

    go install github.com/six-ddc/plow@latest
  2. 2

    Run a load test against a URL with 20 connections

    plow http://127.0.0.1:8080/ -c 20 -n 10000 -d 10s

Things to know

  • Only supports HTTP(S) load testing, not other protocols.

In collections

Topics

FAQ

What is plow?
A Go-based HTTP(S) load testing CLI with a real-time terminal display and web charts, using fasthttp for client requests. Plow is a command-line HTTP(S) benchmarking tool written in Go. It sends requests at a set number of concurrent connections and records latency statistics, histograms and percentiles while the test runs, showing them in the terminal and on a live web page. A test can run for a fixed duration, a fixed number of requests, or until interrupted with Ctrl-C.
Is plow free to use? What license does it have?
plow is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is plow still maintained?
Actively maintained. The last commit to plow was on Oct 17, 2026.
What can I use plow for?
Load testing an HTTP API or web service before a release. Comparing response latency across endpoints or server configurations. Diagnosing which request phase (DNS, connect, TTFB) contributes most to slow responses.
How do I install plow?
Install plow with Go: go install github.com/six-ddc/plow@latest Run a load test against a URL with 20 connections: plow http://127.0.0.1:8080/ -c 20 -n 10000 -d 10s
Where can I get plow?
The source code and installation instructions are on GitHub: https://github.com/six-ddc/plow

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

Related projects