Paste text into a text-to-speech tool on two different computers and you may hear two noticeably different voices — not because the tool is doing anything different, but because the actual voice synthesis is coming from somewhere the tool doesn't control at all: your own operating system.
Where the voice actually comes from
This is built on the Web Speech API's synthesis feature (speechSynthesis), which hands your text to whatever text-to-speech voices are already installed on your device — the same voices your OS uses for its own accessibility features, screen readers, or virtual assistant. A website using this API isn't shipping its own voice model; it's asking your device to speak using whatever it already has available. That's why the exact voice, and how many voice options are available at all, depends on your operating system and browser rather than the website.
Why voice lists vary so much
Windows, macOS, iOS, and Android all ship different sets of built-in voices, and some let you download additional ones through system settings. A device with several language packs installed will show many more voice options than one with just the default set. If a tool built on this API shows very few (or zero) voices, that's a reflection of what's installed on that specific device, not a limitation of the tool itself.
Controlling how it sounds
Beyond picking a voice, the API exposes a speaking rate — how fast the voice reads — which is genuinely useful for previewing content quickly at a faster-than-normal pace, or slowing down for clarity when listening to something dense or technical.
Why this runs client-side, and what that means
Because the actual audio synthesis happens on your own device using your OS's built-in capability, nothing about what you type needs to be sent to a server to produce speech — it's synthesized locally, in real time, and never transmitted anywhere.
Using the tool
Our Text to Speech tool lets you pick from your device's available voices and adjust the speaking rate, with pause and stop controls once it starts reading.
Try it here: Text to Speech.