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
13k
10k
bun
29k
24k
16k
16k
deno
rust
84k

Latency Percentiles (JSON Scenario)

All values in milliseconds. Lower is better.

Rank Framework req/s p50 p75 p90 p95 p99
1 typokit-rust-axum 83,655.42 1.10 1.50 1.97 2.31 3.23
2 raw-axum 82,990.37 1.11 1.51 1.98 2.33 3.27
3 competitor-elysia 51,275.05 1.93 2.03 2.28 2.47 3.45
4 raw-bun 42,310.28 2.38 2.46 2.66 2.76 2.94
5 typokit-node-native-cluster 40,224.99 2.34 3.18 4.22 4.95 6.70
6 typokit-bun-native 29,225.38 3.51 3.75 3.96 4.15 4.48
7 typokit-bun-fastify 24,188.71 4.31 4.93 5.60 5.91 6.64
8 competitor-h3 20,445.7 4.78 5.53 5.89 6.14 6.69
9 raw-node 18,056.62 5.73 6.39 7.73 7.84 8.09
10 typokit-node-fastify 16,754.98 6.19 7.14 8.11 8.48 8.97
11 typokit-node-native 16,227.24 6.28 7.25 8.28 8.63 9.16
12 competitor-fastify 16,039.83 6.29 7.26 8.29 8.90 9.25
13 typokit-bun-express 15,966.16 6.44 7.34 8.24 8.68 9.47
14 typokit-bun-hono 15,817.29 6.37 7.50 8.43 8.88 9.84
15 competitor-adonis 14,328.27 7.44 7.97 9.12 9.55 9.92
  • 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