Skip to content

Benchmarks

TypoKit is designed to add minimal overhead over raw HTTP servers while providing full type-safety, validation, and middleware. These benchmarks quantify that overhead across every supported platform and server adapter.

ScenarioDescription
JSONSerialize a fixed JSON response — measures pure routing + serialization overhead
ValidateParse and validate a POST body — measures the validation pipeline cost
DBFull request with SQLite read — measures realistic end-to-end latency
MiddlewareRoute through a 5-layer middleware chain — measures middleware dispatch overhead
StartupCold start to first response — measures framework initialization cost

All benchmarks use bombardier with identical settings:

  • Connections: 64 concurrent
  • Duration: 10 seconds per scenario
  • Warmup: 3 seconds
  • Runs: 3 (results averaged)
  • Database: In-memory SQLite with identical schema and seed data

JSON Serialization — Requests/sec

Logarithmic scale. Higher is better.

Validation — Requests/sec

Logarithmic scale. Includes request body parsing and validation.

Database (SQLite) — Requests/sec

Logarithmic scale. Full request lifecycle including SQLite read.

Cold Start Times (ms)

Linear scale. Lower is better. Time from process start to first response.

TypoKit Platform × Server Heatmap

JSON scenario req/s across all 13 TypoKit combinations. Rust/Axum shown in orange.

native
fastify
hono
express
axum
node
16k
17k
12k
10k
bun
39k
24k
15k
16k
deno
27k
26k
14k
19k
rust
85k

Latency Percentiles (JSON Scenario)

All values in milliseconds. Lower is better.

Rank Framework req/s p50 p75 p90 p95 p99
1 raw-axum 85,321.97 1.07 1.47 1.93 2.27 3.17
2 typokit-rust-axum 84,779.28 1.09 1.48 1.94 2.27 3.14
3 competitor-elysia 53,368.87 1.87 1.97 2.21 2.43 3.37
4 raw-bun 43,222.08 2.31 2.36 2.59 2.66 2.75
5 raw-deno 42,729.57 2.33 2.39 2.46 2.50 2.61
6 typokit-node-native-cluster 41,660.73 2.21 3.08 4.17 4.94 6.78
7 typokit-bun-native 39,059.54 2.56 2.64 2.86 2.95 3.09
8 typokit-deno-native 26,649.38 3.69 3.81 3.98 4.09 4.34
9 typokit-deno-fastify 26,420.59 3.70 3.81 4.04 4.25 4.55
10 competitor-h3 25,364.17 4.03 4.18 4.29 4.34 4.67
11 raw-node 23,700.12 4.68 5.14 5.81 5.90 6.04
12 typokit-bun-fastify 23,667.87 4.57 5.04 5.30 5.57 5.98
13 typokit-deno-express 18,863.85 5.20 5.36 5.67 5.80 6.19
14 competitor-fastify 17,587.28 6.37 6.53 7.99 8.04 8.11
15 typokit-node-fastify 17,321.16 6.37 6.84 8.13 8.21 8.43
  • TypoKit entries (purple) show TypoKit running on each platform × server adapter combination
  • Rust/Axum (orange) is visually distinguished since it’s a compiled binary, not a JS runtime
  • Raw baselines (gray) are zero-framework HTTP servers — the theoretical performance ceiling
  • Competitors (colored by framework) show popular Node.js/Bun frameworks for reference

The closer TypoKit is to the raw baseline for a given platform, the lower TypoKit’s overhead. See the Methodology page for full details on how benchmarks are run and how to reproduce them.

Terminal window
# Run the full benchmark suite
pnpm nx bench benchmarks
# Run only TypoKit apps
pnpm nx bench benchmarks -- --filter "typokit-*"
# Run only the JSON scenario
pnpm nx bench benchmarks -- --scenario json
# Print system info
pnpm nx bench-info benchmarks
# Print reproduce instructions
pnpm nx bench-reproduce benchmarks