HttpArena
Frameworks
Composite ranking

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 →

Head to Head Comparison 82 frameworks
#FrameworkLanguageComposite
1genhttp-11-ioxideC#898
2bunTS761
3simplew-tunedC#752
4true-async-serverPHP726
5fulmine-tunedJS712
6actixRust699
7genhttp-11C#696
8fulmineJS696
9trillium-tunedRust626
10simplewC#619
11elysiaTS612
12hyper-expressJS606
13swoolePHP605
14trilliumRust602
15ultimate-expressJS592
16genhttp-11-kestrelC#540
17vertxJava539
18genhttp-kestrelC#513
19quarkus-jvmJava501
20oxpeckerF#495
21aspnet-minimalC#477
22userverC++474
23fastendpointsC#463
24hono-bunTS456
25ktor-ghostKotlin427
26mq-bridgeRust425
27ring-http-exchangeClojure416
28alephClojure382
29ktorKotlin369
30fiberGo368
31expressJS341
32echoGo339
33chiGo329
34ginGo323
35go-stdlibGo321
36go-fasthttpGo314
37roadrunnerErlang297
38fastifyJS291
39fletchDart246
40phoenix-banditElixir244
41spring-bootJava240
42aiohttpPython240
43drogonC++239
44litestarPython236
45starlettePython225
46mq-bridge-pyPython222
47micronautJava208
48node-h3JS203
49siskC#202
50luteLuau199
51rodaRuby193
52fastapiPython190
53sinatraRuby188
54ringClojure171
55rocketRust171
56php-fpmPHP170
57rageRuby166
58ring-jetty9-adapterClojure163
59sanicPython158
60humming-birdSwift156
61symfony-spawn-tasPHP151
62hyperfPHP150
63vibe.dD149
64koaJS145
65lapisLua135
66http4kKotlin131
67railsRuby131
68h2o-mrubyRuby129
69warpHaskell125
70axumRust121
71hono-nodeTS121
72flaskPython106
73http4sScala99
74bottlePython98
75slimewebPython96
76mojoliciousPerl77
77plug-cowboyElixir74
78servicestackC#72
79robynPython59
80http-kitClojure53
81djangoPython44
82http.jlJulia29

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

Every entry, one page each · Head-to-head comparisons · How the benchmark works · Add a framework · The rankings as text

Results updated