Independent, verifiable performance testing using industry-standard tools. All benchmarks are reproducible and conducted with production configurations.
Maximum performance with uWebSockets.js transport layer.
• uWebSockets.js transport
• Same Moro API
• Lowest latency
Built-in clustering with auto worker management.
• Multi-core utilization
• Auto worker scaling
• Load distribution
Single process performance with production-ready configuration.
• Single process mode
• Minimal overhead
• Easy deployment
Every row below is sourced — pulled straight from the framework's own published benchmark, all on the same autocannon -c100 -d40 -p10 profile (Elysia run on Bun, NestJS via Sharkbench).
| Framework | Req/sec | Avg Latency | Runtime | Source |
|---|---|---|---|---|
| NestJS (Fastify adapter) | 9,164 | 3.5ms | Node 22 | Sharkbench 2025 |
| Express 5.2.1 | 28,104 | 35.07ms | Node 24 | fastify/benchmarks |
| Koa 3.2.0 | 36,152 | 27.15ms | Node 24 | fastify/benchmarks |
| Hono 4.12.9 | 37,320 | 26.30ms | Node 24 | fastify/benchmarks |
| Fastify 5.8.4 | 46,193 | 21.14ms | Node 24 | fastify/benchmarks |
| Elysia 1.4 | 71,202 | 12.6ms | Bun 1.1 | APIScout 2026 |
| MoroJS — single core | 93,992 | 10.14ms | Node 22 | Moro-JS/benchmark |
| MoroJS — clustered | 190,717 | 4.89ms | Node 22 | Moro-JS/benchmark |
| MoroJS — uWebSockets.js | 226,253 | 3.92ms | Node 22 | Moro-JS/benchmark |
These are synthetic benchmarks designed to measure framework overhead. Real-world performance depends on your application logic, database queries, external API calls, and other factors. Always benchmark your specific use case.
git clone https://github.com/Moro-JS/benchmark.git
cd benchmark && npm install
# Terminal 1 — start the uWS server
npm run hello-world-uws
# Terminal 2 — run the benchmark
npm run bench-uws
# Terminal 1 — start the clustered server
npm run hello-world
# Terminal 2 — run the benchmark
npm run bench
# Terminal 1 — start the single-threaded server
npm run hello-world-single
# Terminal 2 — run the benchmark
npm run bench-single
Quick runs (shorter duration):
npm run bench-quick / bench-single-quick / bench-uws-quick