# kitesurf bench report — 2026-05-13

commit: `38553d0` · backends: kitesurf, browser-run · endpoints: screenshot, html · runs/combo: 5 (+ 2 warmup)
target: https://kitesurf-bench.rendering.cfdata.org

> first wall-time baseline (cacheTTL=0 for browser-run)

## Summary (median wall time)

| Page | kitesurf/screenshot | kitesurf/html | browser-run/screenshot | browser-run/html |
|---|--:|--:|--:|--:|
| Example Domain | 1437ms | 1290ms | 587ms | 513ms |
| Hacker News | 2296ms | 1486ms | 1752ms | 1472ms |
| Cloudflare Developer Docs | 2665ms | 1930ms | 1552ms | 1475ms |
| The Cloudflare Blog | 3755ms | 2528ms | 1132ms | 1252ms |
| Wikipedia Portal | 2860ms | 1637ms | 1266ms | 872ms |
| TodoMVC · JavaScript ES6 | 2618ms | 1325ms | 858ms | 678ms |
| TodoMVC · React | 2172ms | 1346ms | 962ms | 558ms |
| TodoMVC · Vue | 2611ms | 1378ms | 892ms | 732ms |
| TodoMVC · Angular | 2675ms | 1399ms | 910ms | 715ms |
| TodoMVC · Preact | 2576ms | 1327ms | 801ms | 725ms |

Notes:

- Values are run medians across recorded runs. p95 and min/max are in the JSON.
- Both backends are invoked from inside the same Cloudflare worker (`packages/bench-report`) via RPC bindings: `env.KITESURF.fetch(/screenshot|/html)` and `env.BROWSER.quickAction('screenshot'|'content', …)`. Wall time is measured around a single `performance.now()` span on each side — no inter-machine network in the measurement.
- A cell shows `—` when every recorded run for that combination errored. See `rows` in the JSON for individual failure messages.
