Collection of open source tools for debugging, benchmarking, load and stress testing your code or services.
NOTE: Unfortunately I've found this original awesome collection too late: awesome-http-benchmark.
Feel free to follow and contribute to it instead of this collection, which remains my personal variation and working copy.
In alphabetical order.
- bat - A curl-like tool for humans, inspired by httpie, written in
Go
. - curl - A command line tool and library for transferring data with URL syntax.
C
- curlie - The power of curl, the ease of use of httpie.
Go
- httpcat - A simple utility for constructing raw HTTP requests on the command line.
Python
- httpie - Modern command line HTTP client, user-friendly curl alternative with intuitive UI, JSON support, syntax highlighting, wget-like downloads, extensions, etc.
Python
- httping - A ping-like utility for HTTP requests.
C
- httpstat - curl statistics visualization in a way of beauty and clarity.
Python
- xh – Yet another httpie clone in
Rust
.
- ali - A load testing tool capable of performing real-time analysis, inspired by vegeta, written in
Go
. - apachebench (ab) - Standalone apachebench (ab), Apache HTTP server benchmarking tool.
C
- autocannon - Fast HTTP/1.1 benchmarking tool written in
Node.js
, greatly inspired by wrk and wrk2, with support for HTTP pipelining and HTTPS. - baton - HTTP load testing witten in
Go
. - beeswithmachineguns - An utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications).
Python
- bender - An easy-to-use library for creating load testing applications.
Go
- bfg - A modular tool and framework for load generation with HTTP/2 support.
Python
- bombardier - Fast cross-platform HTTP benchmarking tool written in
Go
. - boom - A replacement for ab, written in
Python
. - carrot - Distributed WebSocket and HTTP load-testing framework in
Go
. - cassowary - Modern cross-platform HTTP load-testing tool written in
Go
. - chaperon - HTTP service performance & load testing framework.
Elixir
- drill - A HTTP load testing application, written in
Rust
, inspired by Ansible syntax. - f1 - A flexible load testing framework using
Go
for test scenarios. - fortio - Load testing library, command line tool, advanced echo server and web UI in
Go
. - freeloader - Super easy load testing framework, with load scenarios in
JavaScript
. - go-wrk - A small heavy duty HTTP/S benchmark tool, similar to wrk, but written in
Go
. - goad - An AWS Lambda powered, highly distributed, load testing tool.
Go
- gobench - HTTP/S load testing and benchmarking tool.
Go
- gohttpbench - An ab-like benchmark tool run on multi-core cpu.
Go
- goku - HTTP load testing application written in
Rust
. - goose - A
Rust
load testing tool inspired by locust. - hargo -
Go
library and command line utility that parses HAR files, can convert to curl format, and serve as a load test driver. - hey - HTTP load generator, ab replacement.
Go
- htstress - Fast HTTP benchmarking tool, similar to ab but provides multithreading support.
C
- httperf - A tool for measuring web server performance.
C
- httpit - A rapid HTTP/S benchmark tool, written in
Go
. - httpress - High performance HTTP server stress & benchmark utility, inspired by weighttp.
C
- hurl - HTTP server load test and parallel curl utilities.
C++
- iago2 - A load generator, built for engineers.
Scala
- jetty-load-generator - An API to load-test HTTP servers, based on Jetty's HttpClient and
Java
11+. - kboom - The Kubernetes scale & soak load tester, equivalent of boom, written in
Go
. - legion - A
JavaScript
-based load testing tool for HTTP servers and other kinds of software. - mgun - A modern tool for load testing HTTP servers, written in
Go
. - molotov - Simple
Python
3.5+ tool to write load tests. - nbomber - Very simple load testing framework for Pull and Push scenarios, written in
F#
and targeting .NET Core and full .NET Framework. - netling - Load testing client for easy web testing.
C#
- node-vegeta -
Node.js
bindings for the vegeta load-testing library. - oha - HTTP load generator, inspired by hey with tui animation.
Rust
- pandora - A load generator in
Go
, with built-in HTTP/S and HTTP/2 support and load scenarios inGo
. - phantomas - PhantomJS-based web performance metrics collector and monitoring tool.
JavaScript
- ponos - Simple yet powerful load generator written in
Erlang
. - pounce – HTTP benchmark utility, written in
C
. - pronk - A small command line application for load testing web servers.
Haskell
- salvo - Like boom, but based on molotov.
Python
- siege - A HTTP load tester and benchmarking utility.
C
- slapper - Simple load testing tool with real-time updated histogram of request timings.
Go
- slow_cooker - A load tester focused on lifecycle issues and long-running tests.
Go
- sniper - Powerful and high-performance HTTP load tester, written in
Go
. - stress - Simple
Node.js
tool for stress testing HTTP services. - thrash -
Go
HTTP micro benchmarker. - vegeta - HTTP load testing tool and library.
Go
- vex - A small
PHP
app that sends some load to a web application. - weighttp - A lightweight and simple webserver benchmarking tool.
C
- welle - ab-like benchmarking tool written in
Rust
. - wrk - Modern HTTP benchmarking tool.
C
- wrk2 - A constant throughput, correct latency recording variant of wrk.
C
- amoc - A simple framework for running massively parallel XMPP tests in a distributed environment.
Erlang
- bench - A generic latency benchmarking library.
Go
- bomberman - SMTP performance and load testing tool.
Go
- flotilla - Automated message queue orchestration for scaled-up benchmarking.
Go
- massive-attack - Load testing Thrift, made simple.
Scala
- memtier_benchmark - NoSQL Redis and Memcache traffic generation and benchmarking tool.
C++
- mqperf - A benchmark of message queues with data replication and at-least-once delivery guarantees.
Scala
- rabbitmq-perf-test - RabbitMQ performance testing tool.
Java
- rpc-perf - A tool for benchmarking RPC services.
Rust
- rtmp_load - A load testing tool for RTMP servers.
C
- sangrenel - Apache Kafka load testing.
Go
- srs-bench - A HTTP/RTMP/HLS load testing and benchmarking tool.
C++
- ssh-hammer - A SSH load testing tool.
Go
- tcpkali - Fast multi-core TCP and WebSockets load generator.
C
- artillery - A modern load and functional testing toolkit written in
Node.js
, with test scenario scripting inJavascript
. - gatling - A load and performance testing framework based on
Scala
, Akka and Netty. - grinder - A distributed load testing framework written in
Java
, with test scenario scripting inJython
andClojure
. - jmeter - A
Java
tool designed to load test functional behavior and measure performance of a variety of services, with a focus on web applications. - k6 - A modern load testing tool, using
Go
andJavaScript
. - locust - Scalable distributed load testing tool written in
Python
. - multi-mechanize - Performance and load testing framework written in
Python
. - mzbench - Expressive, scalable load testing tool, with multiple protocols support.
Erlang
- ngrinder - Enterprise level performance testing solution based on The Grinder.
Java
- tank - A cloud native load testing platform.
Java
- tsung - A multi-protocol distributed load testing tool, developed in
Erlang
. - yandex-tank - An extendable load testing tool which is especially good as a part of an automated load testing suite.
Python
,C
- ioarena - Embedded storage benchmarking tool.
C
- cosbench - A benchmark tool for cloud object storage service.
Java
- go-ycsb - A Go port of Yahoo! Cloud Serving Benchmark (YCSB).
Go
- mongoose - Distributed storage performance testing tool.
Java
- ycsb - Yahoo! Cloud Serving Benchmark (YCSB), a framework and common set of workloads for evaluating the performance of different "key-value" and "cloud" serving stores.
Java
- hulken - Stress testing tool for everything speaking HTTP.
JavaScript
- pewpew - Flexible HTTP command line stress tester for websites and web services.
Go
- dhammer - DHCP stress tester and benchmark tool.
Go
- dnstress - A DNS stress testing tool.
C
- mqtt-stresser - Load testing tool to stress MQTT message broker.
Go
For educational and stress testing (as part of development) purposes only.
- finshir - A coroutines-driven Low & Slow traffic sender, written in
Rust
. - goloris - Slowloris implementation for nginx DoS written in
Go
. - hulk - Original HULK web server DoS attack tool ported to
Go
with some additional features. - hulk-v3 -
Python
3 compatible async HULK script for DDoS attacks. - lor-axe - A multi-threaded, low-bandwidth HTTP DoS tool, written in
Rust
. - slowhttptest - A highly configurable application layer DoS attack simulator.
C++
- slowloris - Low bandwidth DoS tool, rewrite in
Python
. - wreckuests - Yet another one hard-hitting tool to run DDoS attacks with HTTP-flood.
Python