Open-source Java application for load testing and measuring the performance of web applications and other services.
codesenberg/bombardier
A cross-platform command-line HTTP(S) benchmarking and load-testing tool written in Go, built on fasthttp for high request throughput.
- Stars
- 6,843
- Forks
- 332
- Open issues
- 30
- Last commit
- 13 days ago
What is it?
bombardier is a command-line tool for load-testing HTTP and HTTPS services. You give it a URL, a number of concurrent connections, and either a request count or a duration, and it reports requests per second, latency statistics, HTTP status code counts, errors, and throughput.
By default it uses the fasthttp client instead of Go's standard net/http library for speed. Since v1.1 you can switch to the net/http client with flags, which is useful for testing HTTP/2.x services or when you need a more RFC-compliant client. The project ships prebuilt binaries for Linux, macOS and Windows, and can also be installed with go install.
One known limitation is that setting the Host header correctly does not work with fasthttp; the net/http mode (--http1 or --http2) is the documented workaround.
Key features
- 01Load-tests HTTP and HTTPS endpoints with configurable concurrent connections.
- 02Runs for a fixed number of requests or a fixed duration.
- 03Reports requests per second, latency, status code breakdown and throughput.
- 04Offers a fasthttp client by default and a net/http client for HTTP/2.x testing.
- 05Provides prebuilt binaries for Linux, macOS and Windows.
Use cases
- Measuring how many requests per second a web service or API can handle.
- Checking latency distribution and error rates under concurrent load.
- Comparing server performance before and after a change.
Quick start
- 1
Install with Go 1.18+ using go install
go install github.com/codesenberg/bombardier@latest - 2
Run a benchmark against a URL with 125 connections and 10 million requests
bombardier -c 125 -n 10000000 http://localhost:8080
Things to know
- The default fasthttp client cannot pass the Host header correctly, so use the --http1 or --http2 flags (net/http) as a workaround.
In collections
Topics
FAQ
- What is bombardier?
- A cross-platform command-line HTTP(S) benchmarking and load-testing tool written in Go, built on fasthttp for high request throughput. bombardier is a command-line tool for load-testing HTTP and HTTPS services. You give it a URL, a number of concurrent connections, and either a request count or a duration, and it reports requests per second, latency statistics, HTTP status code counts, errors, and throughput.
- Is bombardier free to use? What license does it have?
- bombardier is open source under the MIT license. Check the license terms before using it in commercial products.
- Is bombardier still maintained?
- Actively maintained. The last commit to bombardier was on Oct 10, 2026.
- What can I use bombardier for?
- Measuring how many requests per second a web service or API can handle. Checking latency distribution and error rates under concurrent load. Comparing server performance before and after a change.
- How do I install bombardier?
- Install with Go 1.18+ using go install: go install github.com/codesenberg/bombardier@latest Run a benchmark against a URL with 125 connections and 10 million requests: bombardier -c 125 -n 10000000 http://localhost:8080
- Where can I get bombardier?
- The source code and installation instructions are on GitHub: https://github.com/codesenberg/bombardier
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Go-based HTTP(S) load testing CLI with a real-time terminal display and web charts, using fasthttp for client requests.
A terminal top-style monitor that shows running eBPF programs with their runtime, events per second, and estimated CPU usage.
A high-performance HTTP web framework for Go with a Martini-like API, built for REST APIs, web apps and microservices.
A Task Manager replacement for Windows and Linux that shows deep per-process detail such as threads, memory, handles, sockets and modules.
A keyboard-driven terminal download manager in Go that splits files into parallel chunks and can download from multiple mirrors.