Also available in: Español · Português · Français · العربية
Text to speech
Paste text and have your device read it aloud, using the voices already installed on it — no upload, no sign-up, and no pretending there is a download.
What is a text to speech tool?
It turns written text into spoken audio. This one does it with the Web Speech API, a feature every modern browser already has, using the voices your operating system already ships. Nothing is sent anywhere: the text stays in the tab, and the speaking happens on your own machine.
That makes it genuinely useful for a narrow set of things — proofreading by ear, which catches repetition and clumsy rhythm that reading silently hides; getting through a long article while doing something else; checking how a name or a foreign phrase is pronounced; and reading assistance generally.
It also means one thing this page cannot do, which almost every competing “free text to speech” result quietly does differently. It cannot give you a file.
How to use it
- Paste or type your text. There is no length limit imposed here. Long text is split into sentence-sized pieces automatically, and the counter shows how many, because the browser will not reliably speak one enormous utterance.
- Pick a voice, speed and pitch. The voice list comes from your device, so it depends on your operating system and browser rather than on this site. Speed runs from half to double, pitch from flat to high.
- Press Speak. Pause and resume work mid-sentence; Stop clears the queue entirely. A progress row shows how far through the pieces the reading has got.
Why there is no download button
Search for a free text to speech tool and most results offer an MP3. They can, because they are not doing this in your browser — they send your text to a server, synthesise it there, and hand back a file. That costs them money per request, which is why the download is usually the thing behind the sign-up, the watermark or the character cap.
The browser's own speech synthesis works differently. It speaks through your audio output and exposes nothing to capture. There is no stream to record, no buffer to save. This is not an oversight in this page: it is an open request on the specification itself — “Support SpeechSynthesis to a MediaStreamTrack” has been filed against the Web Speech API and is still not implemented. Until it is, no page can produce a file from this API, and any page claiming otherwise is using a server.
So the trade is explicit. You get unlimited length, no account, no upload and no cost, and you do not get a file. If a file is what you need, this is the wrong tool and it is better to say so than to bury it.
Honest limitations
The voices are not ours. They are whatever your device has installed, which is why the list differs between Windows, macOS, Android, iOS and Linux, and between browsers on the same machine. Some languages have several voices, some have one, and some have none at all — a Portuguese or Arabic voice may simply not exist on a given device, and there is nothing a web page can do about that. The list can also arrive a moment after the page does, which is why the browser fires a separate event when it is ready and this tool listens for it.
Long text has to be broken up. The specification caps a single utterance at 32,767 characters, and well before that, a long-standing Chromium issue titled “speechSynthesis fails for long text without warning and blocks the API” describes long utterances failing silently and leaving speech unusable until the page is reloaded. So the text is split into pieces of about 200 characters at sentence boundaries and queued, which also makes pausing land somewhere sensible and progress reportable at all.
The splitter tries not to break in the wrong place. A full stop in “3.14” or “Dr. Smith” or “J. R. R. Tolkien” does not end a sentence, and Arabic’s ؟ does. Its guarantee is narrow but exact: putting the pieces back together reproduces your text character for character, which is asserted over twenty-five awkward cases at four different piece sizes and four thousand random strings. A splitter that silently dropped a space would read slightly wrong and nobody would notice.
What is and is not tested here should be stated plainly. The splitting logic is covered by twenty-five assertions. The speech itself is not, and cannot be — `speechSynthesis` exists only inside a browser, so there is no way to run it in a test harness. That is why the string handling was written as a separate module in the first place: it is the part that can be held to a standard.
Pause behaviour is inconsistent across browsers, particularly on mobile, where some engines stop rather than pause and some resume from the start of the current piece. That is the browser's implementation, not a setting on this page.
Why is it free?
There is no cost to pass on. Your device does the synthesis, your text never leaves the tab, and this page is a few controls over a feature your browser already had.
That is also the reason there is no account and no character limit — the two things a server-based service has to charge for are exactly the two things this does not use.