wrk logo

wrk

Open Source

High-performance HTTP benchmarking tool in C with optional Lua scripting.

Visit websiteGitHub

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

Easy

Maintenance

Low

Learning

Intermediate

Licence

Free / Open source

// 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

ToolChoose it when
VegetaYou want constant-rate testing and clean percentile reports.
k6You need scenarios, thresholds and richer output.
Apache JMeterYou 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

  1. Install/build wrk

  2. Choose threads, connections and duration for the target

  3. Add a Lua script for custom requests/reporting if needed

  4. Run against the endpoint and read throughput + latency

  5. Use it for micro-benchmarks during optimisation

  6. Switch to a scenario framework for user journeys