“I have enough trouble with useful information, never mind being burdened with what is useless.”
― Erlend Loe, Naïve. Super
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.
- Debugging & API testing
- Benchmarking & load testing
- DoS/DDoS penetration testing
- Traffic replay
- Latency simulation
- baloo - Expressive and versatile end-to-end HTTP API testing made easy in Go.
- 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
- curlx - Supercharge curl with history, collections and more. JavaScript
- hitt - File based HTTP testing tool focused on speed and simplicity. Rust
- hopp-cli - An HTTP CLI client for hoppscotch, an alternative to curl, 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
- httpie-go - httpie-like HTTP client written in Go.
- httping - A ping-like utility for HTTP requests. C
- httpstat - curl statistics visualization in a way of beauty and clarity. Python
- hurl - A command line tool to perform HTTP requests defined in a simple plain text format. Rust
- wuzz - Interactive command line tool for HTTP inspection. Go
- xh – Yet another httpie clone in Rust.
- ab - ApacheBench, single-threaded Apache HTTP server benchmarking tool. C
- ali - A load testing tool capable of performing real-time analysis, inspired by vegeta, written in Go.
- apachebench-ab - Standalone version of ab, Apache HTTP server benchmarking tool. C
- apib - A simple, fast HTTP and API 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.
- ballast - A simple API load testing tool to compare performance snapshots of your API. Rust
- baton - HTTP load testing written in Go.
- beast - Stress testing for RESTful APIs. Go
- beeswithmachineguns - An utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications). Python
- benchttp - HTTP server benchmarking tool, implements the most commonly used features of ab. Go
- 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
- blast - A simple, protocol agnostic tool for API load testing and batch jobs. Go
- 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
- clobbr - A tool to check the speed and resilience of API endpoints against multiple parallel or sequence requests. JavaScript
- curl-loader - A load generating tool written in C, simulating HTTP/S, FTP/S and TLS/SSL clients each with own IP-address.
- drill - A HTTP load testing application, written in Rust, inspired by Ansible syntax.
- encarno - Load generator for HTTP with high throughput and high precision. Go
- f1 - A flexible load testing framework using Gofor test scenarios.
- fasthttploader - HTTP benchmark (kinda ab) with autoadjustment and charts based on fasthttp library. Go
- fbender - A load testing command line tool for generic network protocols, originally based on bender library. Go
- 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-meter - A HTTP benchmark tool written in Go.
- 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
- gocannon - A lightweight HTTP benchmarking tool, intended to measure changes in backend application performance over time. Go
- gohttpbench - An ab-like benchmark tool run on multi-core cpu. Go
- goku - HTTP load testing application written in Rust.
- goku-bench - An HTTP load testing tool built out of a need to drill HTTP services inspired by drill and vegeta. Rust
- goose - A Rustload testing tool inspired by locust.
- gopayloader - HTTP/S benchmark/load testing cross-platform tool with optional JWT generation, inspired by bombardier. Go
- goperf - Gobased load tester with a simple intuitive command line syntax.
- hargo - Golibrary 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
- http_bench - An HTTP(/1/2/3) and WebSockets stress testing tool, with both single and distributed modes. Go
- 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
- hulken - Stress testing tool for everything speaking HTTP. JavaScript
- hurl - HTTP server load test and parallel curl utilities. C++
- iago2 - A load generator, built for engineers. Scala
- jbender - A port of bender to the JVM platform with Quasar lightweight threads (fibers) and channels. Java
- jetty-load-generator - An API for load testing HTTP servers, based on Jetty's HttpClient and Java11+.
- legion - A JavaScript-based load testing tool for HTTP servers and other kinds of software.
- loadtest - A JavaScriptpackage for load testing with HTTP/S and WebSockets support and API for easy integration.
- loadtesttoolbox - Lightweight tools for load testing web applications, written in C#.
- mgun - A modern tool for load testing HTTP servers, written in Go.
- minigun - Simple Kubernetes native HTTP benchmark tool, written in Go.
- molotov - Simple Python3.7+ 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-ab - A command line tool to test the performance of HTTP services. Node.js
- node-vegeta - Node.jsbindings 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.
- pewpew - Flexible HTTP command line stress tester for websites and web services. Go
- plow - A high-performance HTTP benchmarking tool with real-time web UI and terminal displaying. Go
- 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
- reqstress - A benchmarking & stressing tool that can send raw HTTP requests, written in Go.
- rewrk - A modern HTTP framework benchmarking utility supporting HTTP/1 and HTTP/2 benchmarks. Rust
- rlt - A universal load testing framework for Rust, with real-time TUI support.
- salvo - Like boom, but based on molotov. Python
- sb - SuperBenchmarker, ApacheBench (ab) on steroids. C#
- 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.
- spiko - A fast, Rust-based load testing tool with a beautiful TUI for real-time insights.
- stress - Simple Node.jstool for stress testing HTTP services.
- terjang - Scalable HTTP load testing tool built on vegeta. Go
- thrash - GoHTTP micro benchmarker.
- vegeta - HTTP load testing tool and library. Go
- vex - A small PHPapp that sends some load to a web application.
- weighttp - A lightweight and simple webserver benchmarking tool. C
- welle - An 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
- dhammer - DHCP stress tester and benchmark tool. Go
- massive-attack - Load testing Thrift, made simple. Scala
- rpc-perf - A tool for benchmarking RPC services. Rust
- rtmp_load - A load testing tool for RTMP servers. C
- srs-bench - A HTTP/RTMP/HLS load testing and benchmarking tool. C++
- ssh-hammer - A SSH load testing tool. Go
- bulldohzer - A performance measurement tool for DNS. JavaScript
- dnsblast - A DNS performance testing utility. Go
- dnsblast - A simple and stupid load testing tool for DNS resolvers. C
- dnsmeter - A tool for testing performance of nameservers and the infrastructure around it. C++
- dnsperf - DNS performance testing tools. C
- dnspyre - A command-line DNS benchmark tool built to stress test and measure the performance of DNS servers. Go
- dnstress - A DNS stress testing tool. C
- flamethrower - A DNS performance and functional testing utility, originally built as an alternative to dnsperf. C++
- ghz - Simple gRPC benchmarking and load testing tool. Go
- strest-grpc - A load tester for stress testing gRPC intermediaries. Go
- kafka-stress - CLI tool to stress Apache Kafka clusters. Go
- sangrenel - Apache Kafka load testing. Go
- emqtt-bench - A simple MQTT v5.0 benchmark tool written in Erlang.
- flotilla - Automated message queue orchestration for scaled-up benchmarking. Go
- mqperf - A benchmark of message queues with data replication and at-least-once delivery guarantees. Scala
- mqtt-benchmark - A simple MQTT (broker) benchmarking tool. Go
- mqtt-stresser - Load testing tool to stress MQTT message broker. Go
- mqttloader - Load testing tool for MQTT, capable of benchmark test for both MQTT v5.0 and v3.1.1 brokers. Java
- mqttwrk - A wrk/wrk2-inspired tool for scale and performance testing MQTT brokers. Rust
- rabbitmq-perf-test - RabbitMQ performance testing tool. Java
- artillery - A modern load and functional testing toolkit written in Node.js, with test scenario scripting inJavaScript.
- ddosify - High-performance load testing and DDOS attack simulation tool, written in Go.
- 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 inJythonandClojure.
- jagger - An open-source framework for Continuous Performance Testing written in Java.
- jmeter - A Javatool 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 GoandJavaScript.
- 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
- predator - A distributed open-source platform for load testing APIs using custom version of artillery as load testing engine. Node.js
- 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
- memtier_benchmark - A high-throughput benchmarking tool for Redis & Memcached. C++
- redisbench - Redis & Redis cluster benchmarking tool. Go
- ntpperf - Tool for measuring performance of NTP servers and PTP masters.
- go-ycsb - A Go port of Yahoo! Cloud Serving Benchmark (YCSB). Go
- ndbench - Netflix Data Store Benchmark, a pluggable cloud-enabled benchmarking tool that can be used across any data store system. 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
- diskspd - A storage performance testing tool from the Windows, Windows Server and Cloud Server Infrastructure engineering teams at Microsoft. C++
- fio - Flexible I/O tester. C
- ioarena - Embedded storage benchmarking tool. C
- cosbench - A benchmark tool for cloud object storage service. Java
- gosbench - Distributed S3 performance benchmark tool with Prometheus exporter, Goreimplementation of cosbench.
- mongoose - Distributed storage performance testing tool. Java
- os-benchmark - Handy tool for object storage performance benchmarking. Python
- ostorebench - A benchmark tool for distributed object storage systems. Go
- s3-benchmark - S3 benchmarking tool. Go
- warp - S3 benchmarking tool. Go
- prometheus-benchmark - Benchmark for Prometheus-compatible systems on production-like workload. Go
- tsbs - Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data. Go
- k8s-bench-suite - Simple scripts to benchmark Kubernetes cluster features. Shell
- k8s-netperf - Running networking performance tests against Kubernetes. Go
- k-bench - Workload benchmark for Kubernetes. Go
- kboom - The Kubernetes scale & soak load tester, equivalent of boom, written in Go.
- kube-burner - A tool aimed at stressing Kubernetes clusters by creating or deleting a high quantity of objects. Go
- kubestr - A collection of tools to discover, validate and evaluate Kubernetes storage options. Go
- perf-tests - Kubernetes-related performance testing tools and benchmarks. Go
- easygraphql-load-tester - A Node.jslibrary created to make load testing on GraphQL based on the schema.
- graphql-bench - A versatile tool for benchmarking and load testing GraphQL services, as a CLI application or via programmatic API. TSQL
- caliper - A blockchain benchmark framework to measure performance of multiple blockchain solutions. JavaScript
- chainbench - Flexible blockchain infrastructure benchmarking and load testing tool, uses locust under the hood. Python
- gohammer - A blockchain test tool designed to get performance metrics of the nodes and operation system by deploying a smart contract and calling smart contract's methods. Go
For educational and security/stress testing (as part of development) purposes only.
- finshir - A coroutines-driven Low & Slow traffic sender, written in Rust.
- golden-eye - HTTP DoS test tool using HTTP Keep Alive + NoCache as attack vector. Python
- goloris - Slowloris implementation for nginx DoS written in Go.
- hulk - Original HULK web server DoS attack tool ported to Gowith some additional features.
- hulk-v3 - Python3 compatible async HULK script for DDoS attacks.
- lor-axe - A multi-threaded, low-bandwidth HTTP DoS tool, written in Rust.
- rip - An HTTP load testing and UDP flood attack tool. Go
- 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
- goreplay - A network monitoring tool which can record live traffic, and use it for shadowing, load testing, monitoring and detailed analysis. Go
- ripley - HTTP traffic replay tool at multiples of the original rate. Go
- shadowreader - Serverless load testing tool for replaying website traffic by collecting traffic patterns from access logs, powered by AWS Lambda, S3 and ELB. Python
- tcpcopy - A TCP stream replay tool to support real testing of server applications. C
- clumsy - Makes your network condition on Windows significantly worse, but in a controlled and interactive manner. C
- comcast -  A tool designed to simulate common network problems like latency, bandwidth restrictions, and dropped/reordered/corrupted packets. Go
- speedbump - A TCP proxy for simulating variable, yet predictable network latency. Go
- toxiproxy - A TCP proxy to simulate network and system conditions for chaos and resiliency testing. Go
Contributions are welcome!
Read the CONTRIBUTING guidelines first.