wrk
High-performance HTTP benchmarking tool in C with optional Lua scripting.
Pricing
Free / Open source
Type
Automation
Languages
Lua
// VERDICT
Reach for wrk when you want to generate maximum HTTP load from one box to find an endpoint's throughput ceiling, with Lua for light customisation. Skip it when you need user journeys, detailed reports, or distributed/enterprise load.
Best for
Very high-throughput HTTP benchmarking from a single machine - a small, fast C tool with optional Lua scripting, ideal for pushing maximum load at an endpoint to find its ceiling.
Avoid when
You need multi-step journeys, rich reporting, distributed load, or a non-scripting GUI workflow.
CI/CD fit
wrk CLI · shell / Makefile · GitHub Actions · GitLab CI
Languages
Lua
Team fit
Engineers/SREs benchmarking endpoints · Teams finding raw throughput limits · Performance tinkerers
Setup
Maintenance
Learning
Licence
// BEST FOR
- Generating very high request throughput from a single machine
- Finding an endpoint's raw throughput ceiling quickly
- Light customisation via Lua scripts (headers, bodies, reports)
- A tiny, fast tool with minimal overhead
- Quick micro-benchmarks during optimisation work
- Multi-threaded load that saturates a target efficiently
// AVOID WHEN
- You need multi-step user journeys or scenario logic
- You want rich HTML reports and dashboards
- You need distributed load across many machines
- A GUI or business-tester-friendly tool is required
- You want assertions/thresholds built in (k6)
- Enterprise protocol coverage and support are needed
// QUICK START
# 4 threads, 100 connections, 30s against the target:
wrk -t4 -c100 -d30s https://test.example.com/
# add -s script.lua for custom requests/reporting// ALTERNATIVES TO CONSIDER
| Tool | Choose it when |
|---|---|
| Vegeta | You want constant-rate testing and clean percentile reports. |
| k6 | You need scenarios, thresholds and richer output. |
| Apache JMeter | You want a full GUI load tool with broad protocol support. |
// FEATURES
- Multi-threaded with epoll/kqueue for high concurrency
- Lua scripting for request generation and response checks
- Latency percentiles in default output
- Lightweight C binary
- Single-host benchmarking focus
// PROS
- Extremely high throughput per machine
- Tiny resource footprint
- Industry reference for raw HTTP throughput
// CONS
- No distributed mode
- Sparse documentation — Lua hooks require reading examples
- No built-in support for HTTPS performance tuning
// EXAMPLE QA WORKFLOW
Install/build wrk
Choose threads, connections and duration for the target
Add a Lua script for custom requests/reporting if needed
Run against the endpoint and read throughput + latency
Use it for micro-benchmarks during optimisation
Switch to a scenario framework for user journeys
// RELATED QA.CODES RESOURCES
Cheat sheets
Glossary
Practice