Benchmarks
Real-world performance numbers for Litro and competing frameworks, measured on the same hardware with identical page content.
Framework Comparison
Identical minimal apps (2 routes, same content) built in SSG mode. Litro uses Lit + Nitro, Nuxt uses Vue + Nitro, Next.js uses React.
Build Time
Output Size
Avg Page Weight
Production Build Time
| Framework | Version | Mean | Median | p95 | Std Dev |
|---|---|---|---|---|---|
| litro | 0.5.0 | 1.27s | 1.22s | 1.37s | 72.0ms |
| nuxt | 3.21.2 | 2.82s | 2.59s | 3.32s | 354.0ms |
| nextjs | 14.2.35 | 6.49s | 6.43s | 6.64s | 105.0ms |
Build Output Size
| Framework | Total Size | Relative |
|---|---|---|
| litro | 34.8 KB | |
| nuxt | 200.1 KB | |
| nextjs | 702.8 KB |
HTML Response Size
| Route | litro raw | litro gzip | nuxt raw | nuxt gzip | nextjs raw | nextjs gzip | Smallest |
|---|---|---|---|---|---|---|---|
/ |
4.4 KB | 2.0 KB | 1.2 KB | 0.6 KB | 3.9 KB | 1.5 KB | nuxt |
/blog/hello |
1.6 KB | 0.8 KB | 1.3 KB | 0.6 KB | 4.9 KB | 1.6 KB | nuxt |
Litro Internals: SSG vs SSR
Deep-dive comparing Litro's Static Site Generation and Server-Side Rendering modes on the docs site. Useful for choosing a deployment strategy.
Build Time
Output Size
Avg TTFB
Build Time
| Metric | SSG | SSR | Faster |
|---|---|---|---|
| Mean | 4.29s | 4.34s | SSG |
| Median | 4.15s | 4.33s | SSG |
| p95 | 4.57s | 4.40s | SSR |
| Std Dev | 198.0ms | 46.0ms |
Bundle Size
| Asset | SSG | SSR |
|---|---|---|
| Client JS | 1.2 MB | 1.2 MB |
| Client CSS | 7.6 KB | 0.0 KB |
| Server Bundle | 0.0 KB | 5.5 MB |
| Static HTML | 3.6 MB | 0.0 KB |
| Total | 8.2 MB | 8.8 MB |
Latency Under Load
| Route | SSG mean | SSG p97.5 | SSG p99 | SSR mean | SSR p97.5 | SSR p99 | Faster |
|---|---|---|---|---|---|---|---|
/ |
0.1ms | 1.0ms | 1.0ms | 7.1ms | 12.0ms | 14.0ms | SSG |
/docs/introduction |
0.2ms | 1.0ms | 1.0ms | 14.3ms | 16.0ms | 20.0ms | SSG |
/blog |
1.3ms | 3.0ms | 3.0ms | 20.9ms | 26.0ms | 29.0ms | SSG |
/blog/welcome |
0.1ms | 1.0ms | 1.0ms | 3.6ms | 7.0ms | 8.0ms | SSG |
Throughput
| Route | SSG req/s | SSG total | SSR req/s | SSR total |
|---|---|---|---|---|
/ |
14,604 | 160,641 | 1,304 | 14,347 |
/docs/introduction |
13,101 | 144,105 | 682 | 6,815 |
/blog |
5,094 | 50,937 | 467 | 4,670 |
/blog/welcome |
16,967 | 186,638 | 2,444 | 24,440 |
HTML Response Size
| Route | SSG raw | SSG gzip | SSR raw | SSR gzip | Smaller |
|---|---|---|---|---|---|
/ |
44.9 KB | 8.1 KB | 44.8 KB | 8.1 KB | SSR |
/docs/introduction |
55.0 KB | 11.1 KB | 54.9 KB | 11.1 KB | SSG |
/blog |
181.0 KB | 33.1 KB | 181.5 KB | 33.0 KB | SSR |
/blog/welcome |
26.9 KB | 7.1 KB | 26.8 KB | 7.1 KB | SSG |
Lighthouse Performance (SSG)
SSR pages use Declarative Shadow DOM — Lighthouse cannot measure paint events inside shadow roots, so only SSG scores are shown.
| Route | Score | FCP | LCP | CLS | TBT | SI |
|---|---|---|---|---|---|---|
/ |
80 | 2.42s | 4.77s | 0.000 | 0.0ms | 2.42s |
/docs/introduction |
63 | 4.81s | 9.77s | 0.000 | 58.0ms | 4.81s |
/blog |
75 | 3.03s | 5.29s | 0.000 | 0.0ms | 3.03s |
/blog/welcome |
63 | 4.66s | 9.62s | 0.000 | 58.0ms | 4.66s |
SSR Streaming
Streaming metrics are SSR-only. TTFB is time to first byte of the response; TTLB is time to last byte. Delta is how long the stream took to deliver the full payload.
| Route | TTFB | TTLB | Delta | Size |
|---|---|---|---|---|
/ |
1.0ms | 1.0ms | 0.0ms | 44.8 KB |
/docs/introduction |
2.0ms | 2.0ms | 0.0ms | 54.9 KB |
/blog |
2.0ms | 3.0ms | 1.0ms | 181.5 KB |
/blog/welcome |
1.0ms | 1.0ms | 0.0ms | 26.8 KB |
Litro