Skip to main content

Text to Speech

Text to Speech reads any text aloud using the voices already installed on your device — no signup, no character limits, no uploads. Pick a voice, adjust speed and pitch, and follow along with live word highlighting. Local voices are preferred; if only network voices are available, their service may send text to its servers.

Local-only

Speech synthesis is not supported in this browser

What is the Web Speech API, and how does synthesis work?

The Web Speech API is a W3C Community Group specification with two halves: SpeechRecognition (microphone → text) and SpeechSynthesis (text → audio). This tool uses the synthesis half, exposed in every modern browser as window.speechSynthesis. The API is deliberately thin: you create a SpeechSynthesisUtterance carrying text plus optional voice, rate, pitch and volume, and the browser forwards it to the operating system’s native speech engine. On macOS and iOS that is Apple’s speech stack (the same voices behind Siri and Spoken Content); on Windows it is SAPI 5 or the newer OneCore neural voices; on Android it is Google Text-to-Speech; on Linux it is typically eSpeak-NG or Festival. The webpage never synthesizes anything itself — it is a remote control for software already on your machine.

Voices: where they come from and why they differ per device

Calling speechSynthesis.getVoices() returns a list of SpeechSynthesisVoice objects, each with a name, a BCP-47 language tag (like en-US or ja-JP), and flags for local vs. remote service. Two subtleties matter. First, browsers populate this list asynchronously: on first page load the list is usually empty and fills in when the voiceschanged event fires, so a correct implementation must listen for that event rather than reading voices once during render. Second, the set is a property of your OS installation — installing a new voice in system settings (Windows’ “Add voices”, macOS’s downloadable Siri voices, Android’s TTS settings) makes it appear here automatically. Quality varies enormously: decade-old formant voices sound robotic, while modern neural voices (Microsoft’s OneCore, Apple’s Siri voices) are near-human. This tool groups voices by language and prefers voices reported as local. If none are available, it offers network voices with a notice that their service may send text to its servers. The number of voices depends on your browser and operating system.

Rate, pitch, and what they actually change

The utterance’s rate (0.1–10, practical range 0.5–2) scales the phoneme durations the engine produces — it is true time-stretching of the synthesis, not playback resampling, so pitch does not rise when you speed up. pitch (0–2) shifts the fundamental frequency of the generated voice, which reads as a deeper or higher voice rather than chipmunk-style resampling. volume (0–1) is a simple gain. Support is voice-dependent: some compact embedded voices ignore pitch entirely, and a few cap the rate range. The sliders here update the next utterance immediately; changing them mid-speech applies to the following sentence chunk.

Why long text is split into sentences

Chromium has a long-standing, still-unfixed bug: a single utterance longer than roughly 15 seconds of speech may stop without firing an end event, leaving the queue silently dead. The robust workaround — used by every serious browser-TTS implementation — is to split text into sentence-sized chunks (here, capped around 220 characters) and speak them as a chained queue, starting the next chunk in the previous chunk’s onend handler. This also creates natural pause points and makes the Stop button responsive: cancelling clears the queue instead of waiting out one giant utterance. Word highlighting rides on the boundary event, which reports the character offset of the word being spoken; the UI maps that offset back to word boundaries in the original text. Note that some voices never fire boundary events — highlighting then simply stays off rather than breaking.

The download question, answered honestly

The most-requested TTS feature is “download as MP3”, and the honest answer is that the Web Speech API cannot do it. Synthesis output goes directly to the OS audio pipeline; the specification exposes no MediaStream, no AudioBuffer, and no file handle, so there is nothing for MediaRecorder or the Web Audio API to capture. This is a deliberate platform limitation, not a missing feature of this page. Services that offer downloads synthesize on their own servers — which inherently means uploading your text. Anyone who needs an audio file has three honest paths: use a server-side TTS service and accept the upload, record system audio locally with a tool like Audacity or OBS, or run an offline neural TTS model (Piper, Coqui, Sherpa-ONNX) entirely on their own machine. This page chooses transparency over a fake download button.

Privacy model and practical uses

This page hands text to the browser’s voice service. Local voices synthesize on your device. When no local voice is available, network voices may send text to their servers and the tool displays that limitation. A voice name does not prove it works offline; check the browser’s local-service flag and install a local voice for private material. Practical uses abound: proofreading your own writing (the ear catches what the eye skips), accessibility testing of content, language-learning pronunciation practice with native voices, and hands-free reading of long articles. Because there are no accounts, no quotas, and no per-character billing, it also works as a dependable fallback when paid TTS APIs are down or over budget.

Which keyboard shortcuts does the text to speech tool support?

Tab / Shift+TabMove between text, voice, sliders, and transport buttons
Enter / SpaceActivate the focused Play, Pause, or Stop button
Arrow keys (on sliders)Fine-tune rate, pitch, and volume step by step

Frequently asked questions

How does browser text to speech work without a server?

The Web Speech API hands your text to a voice supplied by your browser or operating system. Local voices synthesize on your device. If your browser only supplies network voices, the voice service may send the text to its servers; the tool displays that limitation below the controls. Availability and quality depend on your device.

Why do the available voices differ between my phone and my laptop?

Voices are provided by the operating system, not the website. A Mac offers Apple's Samantha, Alex and dozens of downloadable Siri voices; Windows 10/11 ships Microsoft David, Zira and Mark plus OneCore neural voices; Android exposes Google's Text-to-Speech voices; Chrome on desktop may additionally list remote Google voices fetched by the browser itself. This tool prefers voices reported as local. If none are available, it lists network voices and explains that their service may send text to its servers. The number of voices is determined by your device; the site does not guarantee a particular count.

Can I download the spoken audio as an MP3?

No — and any site claiming to offer browser-TTS downloads without a server is misleading you. The Web Speech API renders audio straight to your speakers (or headphones); browsers deliberately expose no MediaStream, AudioBuffer, or file handle for synthesized speech, so there is nothing for JavaScript to record. Tools that do offer MP3 downloads synthesize on their own servers (which means uploading your text). If you need a downloadable file and value privacy, the honest options are: record your system audio with a local recorder, or use an offline neural TTS model that runs on your machine.

Is there a character or time limit?

No limit is imposed by this tool — paste a whole article if you like. Two practical notes: very long single utterances (roughly 15+ seconds) can be cut off by a long-standing Chromium bug, so this tool automatically splits your text into sentences and speaks them as a queue, to reduce the risk of cutoff. Voice behavior and timing vary by browser. For private offline reading, use a local voice; network voices may send the text to their service.

Which languages are supported?

Whichever languages your device's voices cover. Most systems include English, Spanish, French, German, Portuguese and Japanese voices out of the box, and many more are downloadable in OS settings (macOS: System Settings → Accessibility → Spoken Content; Windows: Settings → Time & Language → Speech; Android: Settings → System → Text-to-speech output). The voice list groups every installed voice by its BCP-47 language tag, so finding your language takes seconds.

Is my text private when I use this tool?

With a local voice, speech is synthesized on your device. When only network voices are available, the browser voice service may send your text to its servers. The tool displays a network-voice notice in that case. For private material, install a local voice and verify that your browser reports it as local; a voice name alone does not establish that it works offline.