HTTP framework benchmark platform.
24 test profiles. 64-core dedicated hardware. Same conditions for every framework.
View Leaderboard | Documentation | Add a Framework
Tag @BennyFranciscus on your PR for help with implementation or benchmark questions.
| Command | Description |
|---|---|
/validate -f <framework> |
Run the 18-point validation suite |
/benchmark -f <framework> |
Run all benchmark tests |
/benchmark -f <framework> -t <test> |
Run a specific test |
/benchmark -f <framework> --save |
Run and save results (updates leaderboard on merge) |
/benchmark -f <framework> -t <test> --save |
Run specific test and save results |
Always specify -f <framework>. Results are automatically compared against the current leaderboard.
| Category | Profiles | Description |
|---|---|---|
| Connection | baseline, pipelined, limited-conn |
Mixed GET/POST with query parsing (512/4K conns), 16× batched pipelining, short-lived connections that close after 10 requests |
| Workload | json, json-comp, json-tls, upload, static |
JSON serialization, gzip/brotli compression, HTTP/1.1 over TLS, 20 MB body ingestion, 20-file static asset serving |
| Database | async-db, crud |
Async Postgres sequential scan; realistic REST API with cached reads, list, upsert, update, and optional Redis cache |
| Multi-endpoint | api-4, api-16 |
Mixed baseline + JSON + async-db at CPU-budget cliffs (4 and 16 CPUs) |
| H/2 | baseline-h2, static-h2 |
Baseline and static over TLS with HTTP/2 stream multiplexing |
| H/3 | baseline-h3, static-h3 |
Baseline and static over QUIC with TLS 1.3 |
| gRPC | unary-grpc, unary-grpc-tls, stream-grpc, stream-grpc-tls |
Unary and server-streaming gRPC over plaintext HTTP/2 and TLS |
| Gateway | gateway-64, gateway-h3 |
Reverse proxy + server stack over HTTP/2 and HTTP/3 with mixed workload |
| Production Stack | production-stack |
Four-service architecture: edge + Redis + JWT auth sidecar + server, 10K-item cache-aside, concurrent reads + writes |
| WebSocket | echo-ws |
WebSocket echo throughput across connection counts |
git clone https://github.com/MDA2AV/HttpArena.git
cd HttpArena
./scripts/validate.sh <framework> # correctness check
./scripts/benchmark.sh <framework> # all profiles
./scripts/benchmark.sh <framework> baseline # specific profile
./scripts/benchmark.sh <framework> --save # save results- Add a new framework
- Improve an existing implementation — open a PR modifying files under
frameworks/<name>/ - Open an issue
- Comment on any open issue or PR
Add your GitHub username to the maintainers array in your framework's meta.json to get notified when someone opens a PR that touches your framework:
"maintainers": ["your-github-username"]