Benchmarks
Hello World
Performance benchmarks for a simple Hello World endpoint.
These benchmarks are based on the fastify benchmarks repo! in fact our goal is to perform similar to fastify as we considered it the industry standard in terms of performance.
mion is focused on being lightweight and fast so it can be run in serverless environments. We run the benchmarks before every PR gets merged to ensure there is no performance regression.
Hello World benchmark involves mostly routing as there is no validation and is about as fast as each framework can get.
What is tested?
This is a simple hello world scenario, is a good indicator of the router performance and theoretical upper limit of each framework.
import {HeadersSubset, RpcError} from '@mionjs/core';
import {RouterOptions, initMionRouter, headersFn, middleFn, route} from '@mionjs/router';
export type User = {id: string; name: string; surname: string};
// set options and init router
export const routerOptions: Partial<RouterOptions> = {prefix: 'api/v1'};
export const myApi = await initMionRouter(
// all function parameters will be automatically validated before the function is called
{
auth: headersFn((ctx, h: HeadersSubset<'Authorization'>): void | RpcError<'not-authorized'> => {
const token = h.headers.Authorization;
if (!token) return new RpcError<'not-authorized'>({publicMessage: 'Not Authorized', type: 'not-authorized'});
}),
users: {
sayHello: route((ctx, user: User): string => `Hello ${user.name} ${user.surname}`),
},
log: middleFn((ctx): void => console.log(Date.now(), ctx.path, ctx.response.statusCode), {runOnError: true}),
},
routerOptions
);
// Export the type of the Api (used by the client)
export type MyApi = typeof myApi;
Benchmarks
- Machine: darwin arm64 | 12 vCPUs | 16.0GB Mem
- Node:
v24.13.0 - Run: Wed Apr 15 2026 22:04:55 GMT+0100 (Irish Standard Time)
- Method:
autocannon -c 100 -d 20.099952 -p 1 localhost:3000(two rounds; one to warm-up, one to measure)
Req (R/s)

Throughput (Mb/s)

Latency (ms)

Max Memory (Mb)

Memory Series (MB)

Results Table
| Version | Router | Req (R/s) | Latency (ms) | Output (Mb/s) | Max Memory (Mb) | Max Cpu (%) | Validation | Description | |
|---|---|---|---|---|---|---|---|---|---|
| elysia.bun | 1.0.0 | ✓ | 124499.5 | 0.77 | 14.84 | 55 | 109 | ✓ | Elysia framework with TypeBox validation |
| hono.bun | 3.12.6 | ✓ | 110404.7 | 0.87 | 13.16 | 67 | 109 | ✓ | hono bun server with Zod validation |
| mion.bun | 0.6.2 | ✓ | 101825.0 | 0.94 | 15.25 | 60 | 109 | ✓ | mion using bun, automatic validation and serialization |
| http-node | 16.18.0 | ✗ | 84535.9 | 1.14 | 15.08 | 133 | 114 | ✓ | bare node http server with Zod validation |
| mion | 0.6.2 | ✓ | 73443.0 | 1.32 | 14.29 | 139 | 114 | ✓ | Automatic validation and serialization out of the box |
| hono | 3.12.6 | ✓ | 73011.9 | 1.33 | 11.98 | 145 | 114 | ✓ | hono node server with Zod validation |
| fastify | 5.7.4 | ✓ | 59551.2 | 1.63 | 10.68 | 144 | 104 | ✓ | Fastify with native JSON Schema validation |
| hapi | 21.4.4 | ✓ | 58388.5 | 1.66 | 10.41 | 219 | 108 | ✓ | Hapi with Zod validation |
| express | 5.2.1 | ✓ | 56729.9 | 1.71 | 10.12 | 151 | 106 | ✓ | Express with Zod validation |