“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.
- 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 - 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. - 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 - tcpkali - Fast multi-core TCP and WebSockets load generator.
C
- 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 - 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
- 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 - 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
Contributions are welcome!
Read the CONTRIBUTING guidelines first.