HandyTools Hub

Text to Speech

Convert text to natural-sounding speech.

100% client-side processing

0 / 5000 characters

Ready

What the Web Speech API Actually Does

This tool is a thin interface over speechSynthesis, the speech half of the browser’s Web Speech API. When you press Play, it creates a SpeechSynthesisUtterance, copies your text and your chosen rate, pitch, volume, and voice onto it, and hands it to the browser. The browser, not this page, decides how the sound is produced. Nothing is pre-rendered and nothing is downloadable; the audio exists only while it plays.

The voice catalogue is the part that surprises people. speechSynthesis.getVoices() returns whatever voices the operating system exposes to the browser. On Windows that is usually the Microsoft voices, on macOS the Apple voices, on Android the Google speech engine, and on Linux whatever speech packages are installed. Chrome and Edge tend to expose the largest list; Safari exposes a smaller, high-quality set; Firefox on desktop often shows very few. The array is also populated asynchronously, so the dropdown can be empty for a moment after the page loads and then fill in when the browser fires voiceschanged.

Getting a Voice You Can Actually Understand

Because the catalogue is device-owned, the same page can look completely different on a laptop, a phone, and a work computer. A few steps make the results much more usable:

  • If the dropdown reads Loading voices, wait a second or reload; do not assume the tool is broken.
  • Prefer voices labelled Natural, Neural, Siri, or Google. They sound markedly clearer than the old formant-based voices.
  • Match the language tag to your text. An en-US voice reading British spellings, or a French voice reading English, will mangle pronunciation even though the words are correct.
  • Use headphones when comparing voices; laptop speakers hide the differences.
  • On Firefox, if the list is tiny, try the same page in Chrome or Edge before concluding the text is unspeakable.

On-Device Versus Cloud Voices

Not every voice in the dropdown is generated locally. Some are compact engines shipped with the operating system that run entirely on your device; others are “network” or “natural” voices that send the text to a vendor’s speech service and stream audio back. The browser does not label them clearly, and which category a voice falls into depends on the platform, not on this page. A practical way to tell them apart is latency: on-device voices start speaking almost instantly, while cloud voices pause for a moment before the first word. If you are working with sensitive text, choose a voice that starts immediately, or test with a short sentence first. Note that a voice being local does not guarantee it will be available on another machine; the catalogue is rebuilt from the device every time.

Tuning Rate, Pitch, and Volume

SettingRangeStepSensible starting point
Rate0.5x to 2.0x0.11.0 for normal listening, 0.85 for proofreading, 1.4 for skimming
Pitch0.0 to 2.00.11.0; 0.8 to 0.9 sounds calmer, extremes sound robotic
Volume0.0 to 1.00.11.0 unless you are layering audio

Rate is the setting you will change most. Dropping to 0.85 gives you time to notice a repeated word or a missing comma while listening. Pushing to 1.4 lets you review a long email quickly. Pitch and volume are subtler: pitch shifts the perceived register of the voice and, at the extremes, the synthesiser interpolates so aggressively that words blur. Volume is just playback gain, not expressiveness.

Worked Examples

Proofreading a 400-word article. Paste the draft, choose an en-US voice, set rate to 0.85 and pitch to 1.0, then press Play. Reading aloud forces you to process every word, so doubled words (“the the”) and broken sentences stand out. Stop when you find an issue, fix the text, and Play again from the start.

Practising a foreign-language paragraph. Paste a Spanish paragraph, pick a Spanish (es-ES) voice, set rate to 0.7, and listen. Then raise the rate to 1.0 and repeat. If no Spanish voice appears, the operating system has not installed one and the tool cannot substitute it.

Reading a long document aloud. A 12,000-character article exceeds the 5,000-character cap. Split it at paragraph boundaries into three or four chunks, paste each in turn, and press Play. Splitting at paragraphs rather than mid-sentence keeps the prosody natural.

Limitations and Known Quirks

  • Playback only. There is no export to MP3 or WAV; the audio is not captured anywhere.
  • 5,000-character ceiling. Enforced both by the input field and by validation.
  • Pause is fragile on mobile. Some engines ignore resume after pause. Play always cancels and restarts, so the tool behaves as play-from-the-top rather than true resume.
  • No SSML. Tags such as prosody or break are read aloud as literal words, not interpreted.
  • No voice installation. The tool can only use voices the device already has.
  • Literal reading. Abbreviations, currency symbols, and numeric ranges are pronounced as written, so spelling them out is the reliable option.

Frequently Asked Questions

Why is the voice dropdown empty or missing the voice I expected?

The list comes from your operating system through the browser, so it depends entirely on the device. `speechSynthesis.getVoices()` often returns an empty array on first load and fills in a moment later via the voiceschanged event, which is why the dropdown may briefly read Loading voices. If a specific voice you use elsewhere is absent, your browser likely does not expose it: Firefox on desktop, for example, typically surfaces fewer voices than Chrome or Edge on the same machine. Reloading the page, updating the browser, or installing a system speech package can change what appears.

Can I export the spoken text to an MP3 or WAV file?

No. The Web Speech API renders audio straight to the speakers and does not expose a buffer, so this tool cannot save a file. If you need a downloadable recording, play the text and capture the output with an audio recorder or a screen recorder that includes system audio, or use a service that explicitly offers file export.

What happens if I paste more than 5,000 characters?

The text box stops accepting characters at 5,000, and the Play button validates the same limit before speaking. The cap exists because very long utterances are slow to start and are prone to being cut short or failing silently in some browsers. Split long documents into chunks of a few hundred to a couple thousand characters and play them in sequence.

Why does Pause behave differently on my phone than on my desktop?

Pause relies on `speechSynthesis.pause()`, which some mobile implementations handle poorly: audio may stop but refuse to resume, or it may finish the current sentence before pausing. This page offers Play, Pause, and Stop only, and pressing Play cancels any current utterance and starts over. If Pause stalls on your device, use Stop and play a shorter passage instead.

Do I need to spell out numbers and abbreviations for correct pronunciation?

Often, yes. The speech engine reads the literal characters it is given, so Dr. may be read as the letters, 3.5 may be read as three point five or three dot five depending on the voice, and dates like 01/05 are ambiguous. Writing out Doctor, three point five, or January fifth gives far more predictable results. Punctuation is interpreted as pauses, so commas and periods genuinely shape the rhythm.

Does a faster rate always finish a long passage in proportionally less time?

Roughly, but not exactly. A rate of 2.0 is about twice the default speed, yet browsers and voices differ in how much they compress pauses and phonemes, so the real duration can vary by voice. Extremely high or low rates also distort badly on some engines, making words hard to follow. Rates between 0.8 and 1.5 generally remain intelligible.

Reviewed by the HandyTools Hub team · Last updated