A cross-platform command-line HTTP(S) benchmarking and load-testing tool written in Go, built on fasthttp for high request throughput.
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
Install plow with Go
go install github.com/six-ddc/plow@latest - 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
Open-source Java application for load testing and measuring the performance of web applications and other services.
A command-line tool for benchmarking commands with statistical analysis, warmup runs, and exports to CSV, JSON, Markdown and AsciiDoc.
A simple, tiny, dependency-free JavaScript benchmarking library that runs across multiple JavaScript runtimes.
A Rust profiler that measures CPU, memory, async, SQL, HTTP and I/O bottlenecks, with Prometheus and Grafana export.
A customizable framework for evaluating LLMs, VLMs and AIGC models on benchmarks, plus inference performance stress testing and result dashboards.