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 101 frameworks
#FrameworkLanguageComposite
1genhttp-ioxideC#7277
2cpeakRust7228
3spliffyJS6916
4takoRust6886
5dustyZig6859
6actixRust6566
7fiber-tunedGo6320
8fulmine.jsJS6233
9fiberGo5880
10simplew-tunedC#5815
11bunTS5806
12ntexRust5729
13morojsJS5623
14araaraOCaml5547
15vertxJava5493
16micronaut-tunedJava5368
17libuvcppC++5092
18true-async-serverPHP5086
19swoolePHP4871
20genhttpC#4730
21micronaut-productionJava4699
22hyper-expressJS4600
23mq-bridgeRust4414
24ultimate-expressJS4398
25helidon-tunedJava4372
26axumRust4365
27luteLuau4336
28drogonC++4324
29cutelystC++4290
30micronautJava4233
31helidon-productionJava4177
32simplewC#4160
33elysiaTS4090
34ktor-tunedKotlin3984
35quarkus-jvmJava3643
36go-fasthttpGo3595
37ring-http-exchangeClojure3482
38genhttp-kestrelC#3381
39oxpeckerF#3358
40carterC#3341
41h2o-mrubyRuby3256
42ktorKotlin3235
43hono-bunTS3205
44userverC++3160
45trilliumRust3137
46aspnet-minimal-11C#3091
47aspnet-minimalC#3070
48trillium-tunedRust3047
49rocketRust2988
50fastendpointsC#2963
51codebehindC#2866
52node-h3JS2764
53salvoRust2409
54joobyJava2399
55netonKotlin2368
56fastifyJS2338
57fletchDart2262
58roadrunnerErlang2254
59echoGo2225
60ginGo2197
61chiGo2144
62mq-bridge-pyPython2141
63siskC#2084
64zincGo2065
65aiohttpPython1994
66lapisLua1978
67koaJS1934
68http4kKotlin1845
69go-stdlibGo1844
70expressJS1802
71hono-nodeTS1779
72spring-bootJava1745
73vibe.dD1730
74reititClojure1729
75phoenix-banditElixir1729
76hyperfPHP1713
77warpHaskell1658
78blackbullPython1606
79starlettePython1567
80sanicPython1536
81litestarPython1452
82humming-birdSwift1425
83php-fpmPHP1323
84plug-cowboyElixir1306
85rodaRuby1269
86fastapiPython1246
87rageRuby1184
88symfony-spawn-tasPHP1161
89http4sScala1124
90sinatraRuby1104
91robynPython856
92slimewebPython842
93watsonC#832
94railsRuby704
95hanamiRuby702
96http.jlJulia572
97mojoliciousPerl400
98flaskPython328
99bottlePython281
100djangoPython221
101servicestackC#183

Alpha Round, 101 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 7277, ahead of cpeak (7228) and spliffy (6916). 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 (7277), Rust cpeak (7228), JS spliffy (6916), Zig dusty (6859), Go fiber-tuned (6320), TS bun (5806), OCaml araara (5547), Java vertx (5493).

How many web frameworks are benchmarked?

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