Benchmarks

Benchmarks and Ecosystem Maturity

Framework benchmarks are the most quoted and least useful numbers in Node. Here is one run honestly. Every server answers GET /books with the same 1,392-byte JSON from a module-level array — no database, no logging, no middleware beyond the defaults — as one process on 127.0.0.1, Node 25.8.0, Core i9-7980XE, warmed with one request and measured twice with autocannon 8,524 @8.0.0, 50 connections, 10 seconds (github.com/mcollina/autocannon (https://github.com/mcollina/autocannon 8,524 )).

Express 5.2.1 24,430 , Koa 3.2.1 304,877 , Fastify 5.12.5 314,116 , Nest 12.0.4, Hono 4.13.8 383,227 — indicative, not a verdict
Framework run 1 req/s run 2 req/s p50 p99
node:http 25,653 26,002 1 ms 4 ms
Hono 15,888 14,810 2-3 ms 7 ms
Fastify 15,068 13,395 3 ms 7-8 ms
Koa 13,292 12,051 3-4 ms 8-9 ms
Nest on Fastify 13,865 12,926 3-4 ms 8 ms
Express 14,128 10,670 3-4 ms 5-10 ms
Nest on Express 8,616 8,435 5-6 ms 11 ms

Read the Express row first: two runs of identical code differ by 24%, enough to move Express above or below three rivals depending on which pair you quote. That spread is the finding. What survives it: every framework costs roughly half of raw node:http, Fastify and Hono lead, Nest's decorator and injection layer costs something real on Express and much less on Fastify, and the gap between best and worst framework is smaller than the gap between any of them and no framework. Anything finer needs your routes and your hardware — and against MongoDB 1,815 the database dominates.

Maturity decides more projects than speed. On 22 September 2026 the GitHub 29 stars read nestjs/nest 76,696, expressjs/express 69,455, fastify/fastify 37,175, koajs/koa 35,686 and honojs/hono 32,293 — first on npm 2,036 in 2017, 2010, 2016, 2013 and 2021, all MIT. Stars measure enthusiasm, not health; what matters is that Express is what tutorials, hosting guides and middleware authors assume. Budget the middleware port, not the route port.