Suggest a tool

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

Performance and load testing tools. Sorted by GitHub stars, descending. Select a column heading to change the sort.
k631,54812026-09-211v2.3.02026-09-221AGPL-3.0Goactive
Lighthouse30,79912026-09-181v13.5.02026-09-181Apache-2.0JavaScriptactive
Locust28,17712026-09-1712.46.62026-09-211MITPythonactive
Vegeta25,20012025-10-311v12.13.02026-02-161MITGoslow
hey20,27612026-01-101v0.1.52026-01-101Apache-2.0Goslow
oha10,55312026-08-231v1.16.02026-09-101MITRustactive
Apache JMeter9,54212024-01-091rel/v5.6.32026-09-121Apache-2.0Javaactive
Artillery9,08112026-08-141artillery-2.0.342026-09-201MPL-2.0TypeScriptactive
Karate8,96512026-08-141v2.1.22026-09-191MITJavaactive
autocannon8,52112024-10-141v8.0.02026-05-161MITJavaScriptslow
Gatling6,95812026-05-251v3.15.12026-09-221Apache-2.0Scalaactive
sitespeed.io5,03012026-09-111v42.7.02026-09-111MITJavaScriptactive
ali3,94012026-01-191v0.8.02026-01-191MITGoslow
Fortio3,72712026-08-291v1.75.32026-08-291Apache-2.0Goactive
ghz3,35412025-12-071v0.121.02026-09-011Apache-2.0Goactive
Tsung2,62812023-03-011v1.8.02026-03-021GPL-2.0Erlangslow

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.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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

Comparisons in this category