wrk review

Curator verified · Hands-on
Micro-benchmark CLI Open Source Self-hosted REVIEWED

The short version

wrk is the tool for one question: how many requests per second can this endpoint take from one box?

It is a single C binary with an event loop, so it saturates hardware that would choke JMeter, and Lua scripts cover custom headers, bodies, and simple response handling. Nothing else is there by design: no ramp profiles, no HTML reports, no distribution, and no HTTPS client tuning. Use it for micro-benchmarks, not user journeys.

Strong
Cost & licensing
Adequate
Scale & distribution, CI/CD & automation
Limited
Scripting & extensibility, Protocol coverage, Reporting & analysis, AI features
Best for
You need maximum HTTP throughput from a single machine
License
Open Source
Pricing
Free; Apache License 2.0.
Deployment
Self-hosted
Scripting / languages
C, Lua
First release
2012

wrk review: the full verdict

Hands-on

What wrk is

wrk is a single purpose HTTP benchmarking tool written in C. It uses an event loop with multiple threads to hold a fixed number of connections open against one URL for a fixed duration, and it reports requests per second and a latency distribution. That is the whole tool, and that is the point.

I keep wrk around for one question: how many requests per second can this endpoint take from one box? For that question nothing in this catalog answers faster or with less overhead.

In practice

Install it with brew or build from source, then run wrk -t4 -c100 -d30s against the URL. In seconds you have throughput, latency percentiles, and error counts. A Lua script lets you set headers, build request bodies, rotate paths, and inspect responses, which covers authenticated APIs and simple POST workloads.

Because it saturates hardware that would choke a JVM tool, wrk is ideal for framework and server micro-benchmarks, for tuning a reverse proxy, or for a quick sanity check on a new build before the real load test.

Where it falls short

Everything that makes a load test realistic is missing by design. No ramp-up, no stages, no think time, no multi-step user journeys. HTTP/1.1 only, so no HTTP/2, WebSocket, or gRPC. The output is text on the console; you parse it yourself if you want it in a dashboard. There is no distribution mode. Upstream releases are infrequent, and if you need a constant request rate rather than open-loop hammering, use the wrk2 fork instead.

AI features

None, and rightly so. wrk is a focused C benchmark and adding AI would be beside the point.

Bottom line: use wrk when you want raw HTTP throughput numbers from one machine in under a minute. For anything that resembles a user scenario, or anything you need to report on, reach for k6, Gatling, or JMeter.

Scorecard

Qualitative, 7 dimensions

Strong, Adequate, or Limited on each dimension. No numeric scores and no averaging, because a Limited rating on the one dimension you depend on outweighs any total.

Scripting & extensibility LIMITED LuaJIT hooks for requests and responses only.
Protocol coverage LIMITED HTTP/1.1 only; no HTTP/2, WebSocket, or gRPC.
Scale & distribution ADEQUATE Extremely efficient per box, but no built-in multi-node mode.
Reporting & analysis LIMITED Console summary with latency percentiles; nothing exportable.
CI/CD & automation ADEQUATE Trivial to script, but you parse the text output yourself.
Cost & licensing STRONG Modified Apache 2.0, free.
AI features LIMITED None by design; a single-purpose C benchmark.

How we rate: methodology. Ratings are refreshed with each hands-on pass, not on a fixed schedule.

Pros & cons

What stood out during testing, and what got in the way.

Pros

  • Highest requests per second per core of common tools
  • Zero dependencies, one binary
  • Lua scripting for headers, bodies, and auth
  • Ideal for framework and server micro-benchmarks

Cons

  • HTTP/1.1 only
  • No ramp-up, stages, or think time
  • Text output only; no JSON or HTML
  • Upstream releases are infrequent; consider wrk2 for constant-rate tests

Who it's for

A ten-second answer for teams shortlisting tools.

Pick wrk when

  • You need maximum HTTP throughput from a single machine
  • You are benchmarking a server or framework, not a user flow
  • A quick latency histogram is all the reporting you need

Skip wrk when

  • Realistic user scenarios with think time and ramps are required
  • The target needs anything beyond HTTP/1.1
  • Results must be shared as reports or trended over time

Getting started

Minutes to first script
$ brew install wrk
$ wrk -t4 -c100 -d30s https://example.com/

Ten minutes. The whole interface is a handful of flags.

Review FAQ

Answer-shaped
Is wrk worth it in 2026?

wrk is the tool for one question: how many requests per second can this endpoint take from one box? It is a single C binary with an event loop, so it saturates hardware that would choke JMeter, and Lua scripts cover custom headers, bodies, and simple response handling. You need maximum HTTP throughput from a single machine

When should you pick wrk?

You need maximum HTTP throughput from a single machine You are benchmarking a server or framework, not a user flow A quick latency histogram is all the reporting you need Together, these are the clearest signals that wrk fits the project.

When should you skip wrk?

Realistic user scenarios with think time and ramps are required The target needs anything beyond HTTP/1.1 Results must be shared as reports or trended over time Treat these constraints as reasons to compare alternatives before committing to wrk. Compare the current documentation, operating model, and total cost with the project requirements before making a final decision.

Does wrk have AI features?

None by design; a single-purpose C benchmark. Check the current product documentation before relying on these capabilities in production. Compare the current documentation, operating model, and total cost with the project requirements before making a final decision.