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 99 frameworks
#FrameworkLanguageComposite
1genhttp-ioxideC#7309
2cpeakRust7259
3takoRust6919
4dustyZig6889
5actixRust6598
6spliffyJS6424
7fiber-tunedGo6343
8fulmine.jsJS6200
9fiberGo5902
10simplew-tunedC#5835
11bunTS5834
12ntexRust5743
13morojsJS5652
14vertxJava5344
15libuvcppC++5115
16true-async-serverPHP5098
17swoolePHP4871
18genhttpC#4744
19hyper-expressJS4621
20ultimate-expressJS4420
21mq-bridgeRust4419
22helidon-tunedJava4390
23axumRust4369
24luteLuau4340
25drogonC++4326
26cutelystC++4301
27micronautJava4251
28helidon-productionJava4194
29simplewC#4176
30elysiaTS4107
31ktor-tunedKotlin3988
32quarkus-jvmJava3645
33go-fasthttpGo3608
34ring-http-exchangeClojure3500
35genhttp-kestrelC#3392
36oxpeckerF#3373
37carterC#3355
38h2o-mrubyRuby3258
39ktorKotlin3239
40hono-bunTS3219
41userverC++3166
42trilliumRust3143
43aspnet-minimal-11C#3101
44aspnet-minimalC#3083
45trillium-tunedRust3056
46rocketRust2994
47fastendpointsC#2976
48codebehindC#2879
49node-h3JS2778
50salvoRust2411
51joobyJava2405
52netonKotlin2369
53fastifyJS2351
54fletchDart2270
55roadrunnerErlang2270
56echoGo2236
57ginGo2208
58chiGo2154
59mq-bridge-pyPython2141
60siskC#2084
61zincGo2075
62aiohttpPython2002
63lapisLua1978
64koaJS1943
65http4kKotlin1848
66go-stdlibGo1844
67expressJS1809
68hono-nodeTS1791
69spring-bootJava1745
70phoenix-banditElixir1737
71vibe.dD1734
72reititClojure1729
73hyperfPHP1718
74warpHaskell1658
75blackbullPython1610
76starlettePython1572
77sanicPython1547
78litestarPython1456
79humming-birdSwift1428
80php-fpmPHP1323
81plug-cowboyElixir1309
82rodaRuby1269
83fastapiPython1249
84rageRuby1192
85symfony-spawn-tasPHP1165
86http4sScala1128
87sinatraRuby1119
88robynPython861
89slimewebPython842
90watsonC#833
91railsRuby624
92hanamiRuby613
93http.jlJulia572
94mojoliciousPerl401
95viltrumV394
96flaskPython328
97bottlePython281
98djangoPython221
99servicestackC#183

Alpha Round, 99 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 27 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-ioxide (C#) leads the HTTP/1.1 composite with 7309, ahead of cpeak (7259) and tako (6919). 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-ioxide. The quickest entry of each language on HTTP/1.1: C# genhttp-ioxide (7309), Rust cpeak (7259), Zig dusty (6889), JS spliffy (6424), Go fiber-tuned (6343), TS bun (5834), Java vertx (5344), C++ libuvcpp (5115).

How many web frameworks are benchmarked?

174 entries - web frameworks, HTTP engines and reverse proxies - over 27 test profiles. The ranking above is the 99 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