Browser TTS benchmarks you can reproduce
Most TTS speed claims are vendor numbers from hardware you don't own. This page does it differently: press one button and every model synthesizes the same passage on your device, measured live. Reference numbers below for context.
Models not yet on this device download once and are cached for later runs. Large models aren't pre-selected — tick them to include their download in the benchmark. The benchmark reads a fixed 2-sentence passage with each model's default voice.
Reference results
Collected from published demos, maintainer measurements, and our own runs. Lower RTF is faster; 1.0 = real time. Last reviewed July 2026.
| Model | Hardware / runtime | RTF | Source |
|---|---|---|---|
| Kokoro-82M | M2 MacBook Air (WebGPU, fp32) | 0.2–0.4 | webml-community demo, 2026 |
| Kokoro-82M | Mid-range x86 laptop (WASM q8, 1 thread) | ≈1.1 | kokoro-js community reports, 2025 |
| Piper (medium voice) | Mid-range x86 laptop (WASM) | ≈0.11 | sherpa-onnx / piper measurements, 2025 |
| KittenTTS Nano | Core i7 laptop (WASM int8) | ≈0.4 | KittenML issue tracker, 2026 |
| Kyutai Pocket TTS | Apple M4 (WASM, streaming) | ≈0.17 (6× RT) | Kyutai release notes, Jan 2026 |
| Chatterbox 0.5B | Desktop RTX-class GPU (WebGPU q4) | ≈1.0 | Resemble AI transformers.js demo, 2026 |
Methodology
- Fixed passage (~220 characters, 2 sentences) synthesized with each model's default voice.
- Timer covers tokenization through final audio buffer — not download; cold runs that included a download are flagged with *.
- Runtime is chosen per device: WebGPU when available (Kokoro fp32), otherwise WebAssembly (q8/int8).
- RTF = wall-clock generation time ÷ output audio duration.
- Everything runs client-side; results are yours and never uploaded.
Model download sizes and hardware requirements are on each model page: Kokoro-82M, Piper, KittenTTS Nano, Kyutai Pocket TTS, Supertonic-3, Chatterbox, MOSS-TTS-Nano, Chatterbox Multilingual, OuteTTS-1.0 (0.6B), Orpheus-3B, MOSS-TTS (8.5B).
Frequently asked questions
What is RTF (real-time factor)?
Generation time divided by audio duration. RTF 0.5 means a 10-second clip took 5 seconds to make (2× faster than real time). Below 1.0 is faster than real time; above 1.0 you're waiting.
Why do my numbers differ from the reference table?
Because they should — that's the point. Browser TTS speed depends on your exact CPU/GPU, browser version, WebGPU availability, thermal state, and whether the model ran on the GPU or the WASM fallback. The reference rows state their hardware; your run states yours.
Is the benchmark fair between models?
Every model reads the same fixed 2-sentence passage with its default voice. First-run download time is flagged separately (the * marker) so cold and warm runs aren't conflated. It's a throughput test, not a quality test — pair it with your own ears.
Does the benchmark send my results anywhere?
No. Results render locally and there's a copy button if you want to share them. Nothing is collected.