NestJS — Express vs Fastify vs Mercurius
req/s on health check
req/s on health check
req/s on health check
Requests per second — lightest to heaviest
baseline
+32% vs slowest
+98% vs slowest
Response time distribution — lower is better
Worst 1% of requests — what your unhappiest users experience
Normalized to fastest per scenario — 100 = best
Mercurius wins 5 of 5 scenarios
Up to 98% faster than slowest on light queries
Express slowest on heavy queries
23% behind fastest on Paginated Users (10)
Mutations: Mercurius wins
Express is 4% slower on writes
Gap shrinks under load
98% on Health Check (Scalar) → 23% on Paginated Users (10). Framework matters less as queries grow
All numbers for the selected scenario
| FRAMEWORK | REQ/S | VS SLOWEST | AVG | MED | P90 | P95 | P99 | MAX |
|---|---|---|---|---|---|---|---|---|
Express + Apollo | 5,653 | baseline | 1.31ms | 1.27ms | 2.24ms | 2.68ms | 3.39ms | 7.7ms |
Fastify + Apollo | 7,467 | +32% | 0.97ms | 0.93ms | 1.8ms | 2.01ms | 2.6ms | 7.2ms |
Fastify + Mercurius | 11,191 | +98% | 0.62ms | 0.54ms | 1.16ms | 1.24ms | 1.72ms | 4.83ms |
Coming Soon
Go
chi · Gin · Fiber
C#
.NET + Hot Chocolate
Java
Spring + Netflix DGS