Category guides · published
"Best open source load testing tools": 16 listed, sorted by GitHub stars
Metrics as of , from the GitHub or GitLab API of each repository. Refreshed monthly.
This guide covers the open-source performance and load testing tools listed on FreeQATools and groups them by documented protocols, script formats and distributed execution. The table is sorted by GitHub stars on each tool's fetch date, not by opinion.
What the category covers
The performance category holds tools that generate load and measure response times and throughput, as defined on the category hub. Each tool fact in this guide links one source in the same sentence: a README, a documentation page or the tool's FreeQATools page. A fact that a project does not document appears as "not documented" in its comparison tables.
How load tests are defined
Several load testing entries define tests as scripts or code. k6 runs JavaScript test scripts on an embedded engine. Locust tests are Python locustfiles. Gatling offers SDKs for Java, JavaScript, TypeScript, Kotlin and Scala. Artillery accepts YAML, TypeScript or JavaScript test scripts.
Other load testing entries use a GUI or configuration files. Apache JMeter provides a GUI test IDE that can record test plans. Tsung reads its test setup from an XML configuration file. ghz takes command-line flags or a JSON or TOML config file.
Some load testing entries are configured on the command line for each run. hey accepts the URL, method, headers and body as options. oha can read its target URLs from a file. Vegeta reads targets files in http or JSON format. ali takes a target URL with rate and duration flags.
Protocols and browsers
Documented protocol coverage differs between performance entries. Apache JMeter lists HTTP(S), SOAP and REST, FTP, JDBC, LDAP, JMS, mail protocols and TCP. Tsung covers web protocols such as HTTP and SOAP, databases such as PostgreSQL and MySQL, and messaging protocols such as MQTT and XMPP. Gatling lists HTTP, WebSocket, Server-Sent Events, JMS, gRPC and MQTT. ghz targets gRPC services.
Browser-based testing appears in some performance entries. k6 lists browser testing next to HTTP, WebSockets and gRPC. Artillery runs load tests driven by headless browsers through Playwright. sitespeed.io measures web performance by driving real Firefox, Chrome, Edge or Safari browsers.
Distributed load and reports
Distributed or parallel load is documented through different mechanisms. Locust runs one master process with one or more worker processes. Apache JMeter lets one client control multiple remote engines. k6 distributes tests on Kubernetes with the k6-operator. Artillery runs distributed tests on AWS Lambda, AWS Fargate or Azure ACI.
Documented report output differs across the performance category. Gatling produces static HTML reports. Locust writes CSV stats, an HTML report and JSON stats.
The k6 vs JMeter page sets the documented facts of both tools side by side. The k6 vs Locust page uses the same row set for its pair. The Gatling vs JMeter page is a further comparison in this category. The comparison method explains how each cell is sourced.
How this list is sorted
The quoted title is a search query, not a verdict. FreeQATools does not rank tools by opinion. The list below is sorted by GitHub stars, descending, as fetched from the repository host API on the date shown with each value.
Stars count how many accounts have starred a repository. They say nothing about fit for a given project, so the documented facts under each tool are the part to compare.
Every tool here meets the inclusion rules: an OSI-approved license, a public repository, software testing or quality as its primary purpose and at least one release or tag. Each status badge follows the status rules on the methodology page.
Open-source performance and load testing tools by GitHub stars
| k6 | 31,5481 | 2026-09-211v2.3.0 | 2026-09-221 | AGPL-3.0 | Go | active |
|---|---|---|---|---|---|---|
| Lighthouse | 30,7991 | 2026-09-181v13.5.0 | 2026-09-181 | Apache-2.0 | JavaScript | active |
| Locust | 28,1771 | 2026-09-1712.46.6 | 2026-09-211 | MIT | Python | active |
| Vegeta | 25,2001 | 2025-10-311v12.13.0 | 2026-02-161 | MIT | Go | slow |
| hey | 20,2761 | 2026-01-101v0.1.5 | 2026-01-101 | Apache-2.0 | Go | slow |
| oha | 10,5531 | 2026-08-231v1.16.0 | 2026-09-101 | MIT | Rust | active |
| Apache JMeter | 9,5421 | 2024-01-091rel/v5.6.3 | 2026-09-121 | Apache-2.0 | Java | active |
| Artillery | 9,0811 | 2026-08-141artillery-2.0.34 | 2026-09-201 | MPL-2.0 | TypeScript | active |
| Karate | 8,9651 | 2026-08-141v2.1.2 | 2026-09-191 | MIT | Java | active |
| autocannon | 8,5211 | 2024-10-141v8.0.0 | 2026-05-161 | MIT | JavaScript | slow |
| Gatling | 6,9581 | 2026-05-251v3.15.1 | 2026-09-221 | Apache-2.0 | Scala | active |
| sitespeed.io | 5,0301 | 2026-09-111v42.7.0 | 2026-09-111 | MIT | JavaScript | active |
| ali | 3,9401 | 2026-01-191v0.8.0 | 2026-01-191 | MIT | Go | slow |
| Fortio | 3,7271 | 2026-08-291v1.75.3 | 2026-08-291 | Apache-2.0 | Go | active |
| ghz | 3,3541 | 2025-12-071v0.121.0 | 2026-09-011 | Apache-2.0 | Go | active |
| Tsung | 2,6281 | 2023-03-011v1.8.0 | 2026-03-021 | GPL-2.0 | Erlang | slow |
1 Fetched from the GitHub or GitLab API on . Hover a value for its own date.
Filters for language, license and status are on the performance and load testing category page.
Tools in this list
Each entry gives the tool's one-line summary from its README and the facts its documentation states for this category, each with its source. Facts that are not documented are left out here and marked on the comparison pages.
k6
Load-testing tool that runs JavaScript test scripts from the CLI, in CI or on Kubernetes. README, read 2026-09-22
- Protocols
- HTTP, WebSockets, gRPC, browser; more through extensions source: README
- Test authoring format
- Code (JavaScript test scripts run by an embedded engine) source: README
- Distributed or parallel load
- Distributed tests on Kubernetes with the k6-operator (TestRun parallelism) source: Docs: Running distributed tests
- CI integration
- Integration guides for GitHub Actions, GitLab, Jenkins, CircleCI, Azure Pipelines, TeamCity and others source: Docs: Integrations and tools
- Report formats
- End-of-test summary; CSV and JSON files; streaming to InfluxDB, Prometheus remote write, Datadog, OpenTelemetry and others source: Docs: Real time
- Install method
- Packages for Linux, macOS and Windows (apt, dnf, brew, winget); Docker image grafana/k6; standalone binary source: Docs: Install k6
Lighthouse
Web page auditing tool for performance, accessibility and SEO, run from Chrome DevTools, a Node CLI or module. README, read 2026-09-22
- Test authoring format
- Config file via --config-path; custom audits and gatherers written as extensions source: README
- CI integration
- Lighthouse CI, listed as the official project for running Lighthouse on every commit source: README
- Report formats
- JSON, HTML, CSV (HTML by default) source: README
- Install method
- npm (npm install -g lighthouse) or yarn; also a Chrome DevTools panel source: README
Locust
Load testing tool for HTTP and other protocols with scenarios written in Python and a web UI. README, read 2026-09-22
- Protocols
- HTTP; other protocols and systems through user-written clients source: README
- Test authoring format
- Code (Python locustfiles) source: README
- Distributed or parallel load
- Distributed runs with one --master process and one or more --worker processes, on one or several machines source: Docs: Distributed load generation
- CI integration
- Headless mode in CI/CD pipelines, with a GitHub Actions example source: Docs: Running without the web UI
- Report formats
- CSV stats files (--csv), HTML report (--html), JSON stats (--json) source: Docs: Configuration
- Install method
- pip (pip install locust) source: Docs: Installation
Vegeta
HTTP load testing CLI and Go library that sends requests at a constant rate with text, JSON and histogram reports. README, read 2026-09-22
- Protocols
- HTTP, with HTTP/2 to servers that support it and h2c source: README
- Test authoring format
- Command-line tool reading targets files (http or JSON format), or Go code using the library source: README
- Distributed or parallel load
- Distributed attacks across several machines, each sending part of the rate (pdsh example) source: README
- Report formats
- Text, JSON, histogram and HdrHistogram plot reports; HTML latency plot; CSV, gob and JSON encodings source: README
- Install method
- Pre-compiled executables; Homebrew (brew install vegeta), MacPorts, pacman, FreeBSD pkg source: README
hey
Command-line HTTP load generator that sends requests at a set concurrency and prints response statistics. README, read 2026-09-22
- Protocols
- HTTP, including HTTP/2 endpoints source: README
- Test authoring format
- Command-line options per run (URL, method, headers, body) source: README
- Distributed or parallel load
- Concurrent workers set with -c source: README
- Report formats
- Summary printed to stdout; CSV (-o csv) source: README
- Install method
- Binaries for Linux, macOS and Windows (amd64); Homebrew (brew install hey) source: README
oha
HTTP load generator written in Rust with a realtime terminal UI, inspired by rakyll/hey. README, read 2026-09-22
- Protocols
- HTTP 0.9, 1.0, 1.1, 2 and 3 (HTTP/3 behind an experimental build feature) source: README
- Test authoring format
- Command-line options per run; target URLs can be read from a file source: README
- Distributed or parallel load
- Concurrent connections (-c) and parallel HTTP/2 requests per connection (-p) source: README
- Report formats
- Text, JSON and CSV output; succeeded requests to a SQLite database source: README
- Install method
- cargo install oha; pre-built binaries; pacman, Homebrew, winget, Debian repository; Docker image ghcr.io/hatoo/oha source: README
Apache JMeter
Java application for load and performance testing of web applications, services and many network protocols. README, read 2026-09-22
- Protocols
- HTTP(S), SOAP/REST, FTP, JDBC, LDAP, JMS, SMTP/POP3/IMAP, TCP, Java objects, native commands source: README
- Test authoring format
- GUI test IDE with test plan recording from browsers or native applications source: README
- Distributed or parallel load
- Remote testing: one JMeter client controls multiple remote JMeter engines source: Docs: Remote Testing
- CI integration
- Maven, Gradle and Jenkins through third-party open source libraries source: README
- Report formats
- CSV result files; HTML dashboard report generated from them source: Docs: Generating Report Dashboard
- Install method
- Binary release archive, unpacked into a directory source: README
Artillery
Load testing tool for HTTP, WebSocket, gRPC and other protocols, with Playwright browser tests and distributed runs on AWS. README, read 2026-09-22
- Protocols
- HTTP, WebSocket, Socket.io, gRPC, Kinesis and more source: README
- Test authoring format
- YAML, TypeScript or JavaScript test scripts source: Docs: Test Script Reference
- Distributed or parallel load
- Distributed load tests on AWS Lambda, AWS Fargate or Azure ACI source: Docs: Artillery package README
- CI integration
- Guides for GitHub Actions, Azure DevOps, Jenkins, AWS CodeBuild, GitLab CI/CD and CircleCI source: Docs: Artillery in CI/CD
- Report formats
- JSON report (--output); HTML report from it with the report command source: Docs: report
- Install method
- npm (npm install -g artillery) source: Docs: Artillery package README
Karate
Test automation framework for API, UI and performance tests and mocks, written as feature files. README, read 2026-09-22
- Protocols
- REST over HTTP, GraphQL, SOAP, WebSocket source: Docs: Why Karate?
- Test authoring format
- Plain-text feature files with Karate keywords source: Docs: Why Karate?
- Distributed or parallel load
- Parallel runner using Java 21+ virtual threads; features and scenarios run in parallel source: Docs: Parallel Execution
- CI integration
- CI/CD guide with a GitHub Actions reference workflow source: Docs: CI/CD
- Report formats
- HTML (default), JUnit XML, Cucumber JSON source: Docs: Parallel Execution
- Install method
- VS Code extension, Karate CLI, Maven, Gradle or standalone JAR source: Docs: Quick Start
autocannon
HTTP/1.1 benchmarking tool for Node.js with a CLI and JavaScript API, supporting pipelining and HTTPS. README, read 2026-09-22
- Protocols
- HTTP with pipelining; HTTPS source: README
- Test authoring format
- Command-line options, or JavaScript through the programmatic API source: README
- Distributed or parallel load
- Worker threads (--workers) using Node.js Worker instances source: README
- Report formats
- Result tables in the terminal; newline-delimited JSON (-j) source: README
- Install method
- npm (npm i autocannon -g) source: README
Gatling
Load testing tool with test-as-code SDKs for Java, JavaScript, TypeScript, Kotlin and Scala. README, read 2026-09-22
- Protocols
- HTTP, WebSocket, Server-Sent Events, JMS, gRPC, MQTT source: README
- Test authoring format
- Code (Java, JavaScript, TypeScript, Kotlin or Scala SDKs) source: README
- CI integration
- Integration with CI/CD pipelines source: README
- Report formats
- Static HTML reports source: Docs: Static HTML reports
- Install method
- Maven starter project with the Maven Wrapper (./mvnw clean install); Gradle starter project source: Docs: Java installation guide
sitespeed.io
Web performance tool that drives real browsers and reports Core Web Vitals, visual metrics and HAR waterfalls. README, read 2026-09-22
- Test authoring format
- JavaScript script files (.js, .cjs, .mjs) using the Browsertime commands API; plain URL lists source: Docs: Configuration
- CI integration
- Guides for GitHub Actions, Jenkins, CircleCI and GitLab CI; Grunt and Gulp plugins; budgets fail the build source: Docs: Continuous Integration
- Report formats
- HTML report; JUnit XML and TAP for budget results source: Docs: Continuous Integration
- Install method
- Docker image sitespeedio/sitespeed.io; npm (npm i -g sitespeed.io) source: README
ali
Terminal-based HTTP load testing tool that plots latency and percentiles in real time while the test runs. README, read 2026-09-22
- Protocols
- HTTP, including HTTP/2 where the server supports it source: README
- Test authoring format
- Command-line flags with a target URL (rate, duration, method, headers, body) source: README
- Distributed or parallel load
- Configurable worker count (--workers, --max-workers) source: README
- Report formats
- CSV (results.csv) and JSON summary via --export-to source: Docs: Exporting results
- Install method
- Release binaries; Homebrew, MacPorts, APT, RPM, Pacman, APK; go install; Docker image nakabonne/ali source: README
Fortio
Go load testing library, CLI and server for HTTP and gRPC with latency histograms and a web UI. README, read 2026-09-22
- Protocols
- HTTP, gRPC, TCP, UDP source: README
- Test authoring format
- Command-line flags, web UI or REST API; grol scripts via fortio script source: README
- Distributed or parallel load
- Parallel simultaneous connections, each with a goroutine (-c flag) source: README
- Report formats
- JSON results; graphs in the web UI and with fortio report source: README
- Install method
- Docker image fortio/fortio; go install fortio.org/fortio@latest; Homebrew; deb, rpm and release binaries source: README
ghz
Command-line tool and Go package for benchmarking and load testing gRPC services. README, read 2026-09-22
- Protocols
- gRPC source: README
- Test authoring format
- Command-line flags or a JSON or TOML config file; Go package (runner.Run) source: README
- Distributed or parallel load
- Concurrent request workers (-c), spread across connections (--connections) source: README
- Report formats
- Summary, CSV, JSON, pretty, HTML, InfluxDB line formats source: README
- Install method
- Release binaries; Homebrew (brew install ghz); go install; Docker build source: README
Tsung
Distributed load testing tool in Erlang for HTTP, WebDAV, SOAP, database, LDAP, MQTT, AMQP and XMPP servers. README, read 2026-09-22
- Protocols
- HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT, AMQP, Jabber/XMPP source: README
- Test authoring format
- XML configuration file (tsung.xml) source: Docs: Installation
- Distributed or parallel load
- Users distributed across a cluster of machines source: Docs: Introduction
- Report formats
- Tsung stats log format or JSON backend; HTML reports from tsung_stats.pl source: Docs: Statistics and Reports
- Install method
- Source build (configure, make, make install); Homebrew on macOS (brew install tsung); make deb or make rpm source: Docs: Installation