HTTP/1.1 web server benchmarks
Normalized score summed across all HTTP/1.1 profiles (each profile worth 100 to its leader in the full field, so filtering does not change the numbers), per framework type. Higher is better. How it works →
| # | Framework | Language | Composite |
|---|---|---|---|
| 1 | genhttp-11-ioxide | C# | 898 |
| 2 | bun | TS | 761 |
| 3 | simplew-tuned | C# | 752 |
| 4 | true-async-server | PHP | 726 |
| 5 | fulmine-tuned | JS | 712 |
| 6 | actix | Rust | 699 |
| 7 | genhttp-11 | C# | 696 |
| 8 | fulmine | JS | 696 |
| 9 | trillium-tuned | Rust | 626 |
| 10 | simplew | C# | 619 |
| 11 | elysia | TS | 612 |
| 12 | hyper-express | JS | 606 |
| 13 | swoole | PHP | 605 |
| 14 | trillium | Rust | 602 |
| 15 | ultimate-express | JS | 592 |
| 16 | genhttp-11-kestrel | C# | 540 |
| 17 | vertx | Java | 539 |
| 18 | genhttp-kestrel | C# | 513 |
| 19 | quarkus-jvm | Java | 501 |
| 20 | oxpecker | F# | 495 |
| 21 | aspnet-minimal | C# | 477 |
| 22 | userver | C++ | 474 |
| 23 | fastendpoints | C# | 463 |
| 24 | hono-bun | TS | 456 |
| 25 | ktor-ghost | Kotlin | 427 |
| 26 | mq-bridge | Rust | 425 |
| 27 | ring-http-exchange | Clojure | 416 |
| 28 | aleph | Clojure | 382 |
| 29 | ktor | Kotlin | 369 |
| 30 | fiber | Go | 368 |
| 31 | express | JS | 341 |
| 32 | echo | Go | 339 |
| 33 | chi | Go | 329 |
| 34 | gin | Go | 323 |
| 35 | go-stdlib | Go | 321 |
| 36 | go-fasthttp | Go | 314 |
| 37 | roadrunner | Erlang | 297 |
| 38 | fastify | JS | 291 |
| 39 | fletch | Dart | 246 |
| 40 | phoenix-bandit | Elixir | 244 |
| 41 | spring-boot | Java | 240 |
| 42 | aiohttp | Python | 240 |
| 43 | drogon | C++ | 239 |
| 44 | litestar | Python | 236 |
| 45 | starlette | Python | 225 |
| 46 | mq-bridge-py | Python | 222 |
| 47 | micronaut | Java | 208 |
| 48 | node-h3 | JS | 203 |
| 49 | sisk | C# | 202 |
| 50 | lute | Luau | 199 |
| 51 | roda | Ruby | 193 |
| 52 | fastapi | Python | 190 |
| 53 | sinatra | Ruby | 188 |
| 54 | ring | Clojure | 171 |
| 55 | rocket | Rust | 171 |
| 56 | php-fpm | PHP | 170 |
| 57 | rage | Ruby | 166 |
| 58 | ring-jetty9-adapter | Clojure | 163 |
| 59 | sanic | Python | 158 |
| 60 | humming-bird | Swift | 156 |
| 61 | symfony-spawn-tas | PHP | 151 |
| 62 | hyperf | PHP | 150 |
| 63 | vibe.d | D | 149 |
| 64 | koa | JS | 145 |
| 65 | lapis | Lua | 135 |
| 66 | http4k | Kotlin | 131 |
| 67 | rails | Ruby | 131 |
| 68 | h2o-mruby | Ruby | 129 |
| 69 | warp | Haskell | 125 |
| 70 | axum | Rust | 121 |
| 71 | hono-node | TS | 121 |
| 72 | flask | Python | 106 |
| 73 | http4s | Scala | 99 |
| 74 | bottle | Python | 98 |
| 75 | slimeweb | Python | 96 |
| 76 | mojolicious | Perl | 77 |
| 77 | plug-cowboy | Elixir | 74 |
| 78 | servicestack | C# | 72 |
| 79 | robyn | Python | 59 |
| 80 | http-kit | Clojure | 53 |
| 81 | django | Python | 44 |
| 82 | http.jl | Julia | 29 |
Alpha Round, 82 entries, best first. The interactive board - per-profile numbers, memory efficiency, the other families (HTTP/2, HTTP/3, Gateway, gRPC, WebSocket) - needs JavaScript; every entry has a page of its own, and the same rankings are published as text at /llms.txt.
What HttpArena measures
Every framework, HTTP engine and reverse proxy in the ranking above runs the same 28 test profiles - plain and pipelined requests, JSON, compression, TLS, uploads, static files, Postgres, templates and mixed endpoints - on one dedicated machine, in a container pinned to its own cores. Nothing is self-reported: the implementations are in the public repository and the raw numbers behind every row are published with them.
Questions
What is the fastest web framework?
genhttp-11-ioxide (C#) leads the HTTP/1.1 composite with 898, ahead of bun (761) and simplew-tuned (752). The composite adds a normalized score over every profile of the family, where the leader of each profile scores 100, so it ranks an entry over the whole suite instead of on one test. The sum is then reduced by 2.5% for each of routing, middleware, the request it hands you and the response it builds that the entry does not do for you, so a framework that does none of the four keeps 90% of what it scored on throughput.
Which language has the fastest web frameworks?
C#, through genhttp-11-ioxide. The quickest entry of each language on HTTP/1.1: C# genhttp-11-ioxide (898), TS bun (761), PHP true-async-server (726), JS fulmine-tuned (712), Rust actix (699), Java vertx (539), F# oxpecker (495), C++ userver (474).
How many web frameworks are benchmarked?
115 entries - web frameworks, HTTP engines and reverse proxies - over 28 test profiles. The ranking above is the 82 flagship and emerging frameworks scored on HTTP/1.1; engines and reverse proxies are ranked in their own league.
How are the benchmarks run?
Every entry runs in a container on the same machine (AMD Ryzen Threadripper PRO 3995WX 64-Cores, 64 cores), pinned to dedicated cores, one connection count per run. Requests per second is the best of three runs; latency, CPU and memory come from that run. Round: Alpha Round.
Can I add my own framework?
Yes. Every entry is a directory in the public repository with its own Dockerfile and its own implementation of the profiles, and a pull request that adds one is benchmarked on the same machine as everything else.
Browse by language
- C web framework benchmarks
- C# web framework benchmarks
- C++ web framework benchmarks
- Clojure web framework benchmarks
- D web framework benchmarks
- Dart web framework benchmarks
- Elixir web framework benchmarks
- Erlang web framework benchmarks
- F# web framework benchmarks
- Go web framework benchmarks
- Haskell web framework benchmarks
- Java web framework benchmarks
- JS web framework benchmarks
- Julia web framework benchmarks
- Kotlin web framework benchmarks
- Lua web framework benchmarks
- Luau web framework benchmarks
- Perl web framework benchmarks
- PHP web framework benchmarks
- Python web framework benchmarks
- Ruby web framework benchmarks
- Rust web framework benchmarks
- Scala web framework benchmarks
- Swift web framework benchmarks
- TS web framework benchmarks
- Zig web framework benchmarks
Every entry, one page each · Head-to-head comparisons · How the benchmark works · Add a framework · The rankings as text
Results updated