Speech Synthesis API works in Chrome 33+, Edge 14+, Firefox 49+, Safari 7+, Opera 27+, and Samsung Internet 5+. Learn browser support, voices, and quirks.

Prince Dewani
May 6, 2026
The Speech Synthesis API is the Web Speech API JavaScript interface that converts text into spoken audio through the device's text-to-speech engine. It supports Chrome 33+, Edge 14+, Firefox 49+, Safari 7+, Opera 27+, and Samsung Internet 5+, while the legacy Android Browser, Opera Mobile, and Internet Explorer never added support.
This guide covers what the Speech Synthesis API is, the browsers that support it, its key features, how to use it, and the known issues to plan around.
The Speech Synthesis API is the controller half of the Web Speech API, exposed on every page as window.speechSynthesis. It uses the SpeechSynthesisUtterance object to queue text for playback, then reads it aloud through the operating system's installed voices. The Web Speech Community Group at the WICG maintains the specification.
The Speech Synthesis API works in every modern desktop and mobile browser. Chrome, Edge, Firefox, Safari, Opera, and Samsung Internet all expose window.speechSynthesis, while Internet Explorer, Opera Mobile, and the legacy stock Android Browser never added support.
Chrome supports the Speech Synthesis API from Chrome 33 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 1 to 32 did not support it. Chrome on iOS routes through WebKit, so the voice list there matches Safari rather than the desktop Chrome list.
Microsoft Edge supports the Speech Synthesis API from Edge 14 on Windows 10. Edge 12 and 13 did not support it. Chromium-based Edge from Edge 79 inherits Chrome's full implementation across Windows, macOS, Linux, and Android, with access to the Microsoft Natural neural voices on Windows 11.
Firefox supports the Speech Synthesis API by default from Firefox 49 on Windows, macOS, and Linux. Firefox 31 to 48 had it disabled by default behind the media.webspeech.synth.enabled preference in about:config. Firefox for Android still does not implement the synthesis half of the Web Speech API, so any Android site that needs TTS in Firefox needs a fallback.
Safari supports the Speech Synthesis API from Safari 7 on macOS and from Safari on iOS 7. The mobile build adds an extra rule: speak() only fires inside a user gesture handler such as a tap or click, otherwise WebKit drops the utterance silently. The desktop voice list comes from System Settings under Accessibility, Spoken Content.
Opera supports the Speech Synthesis API from Opera 27 on every desktop OS. Opera 1 to 26 did not support it. Modern Opera is built on Chromium, so its speech engine and voice list track Chrome on each release. Opera Mobile on Android still does not expose window.speechSynthesis.
Samsung Internet supports the Speech Synthesis API from Samsung Internet 5.0 on Galaxy phones and tablets. The browser is built on Chromium and uses the Android speech service for voice playback, so the available voices come from the user's installed Google text-to-speech engine or Samsung TTS engine.
The legacy stock Android Browser does not support the Speech Synthesis API in any version. Modern Android phones get speech synthesis through Chrome for Android, Samsung Internet, or another Chromium-based browser. Firefox for Android is also missing the synthesis half of the Web Speech API today.
Internet Explorer does not support the Speech Synthesis API in any version. IE 5.5 through 11 never shipped a Web Speech API engine, and Microsoft has retired Internet Explorer. Sites that still serve IE 11 users need a server-rendered audio fallback or a third-party TTS service.
Note: The Speech Synthesis API behaves differently across Chrome, Safari, and Firefox, with voice lists that change per OS. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
The Speech Synthesis API gives a small but practical surface area: a controller for playback, an utterance object for the text and its settings, and a list of installed voices to pick from. The most useful pieces are queue control, voice selection, and the lifecycle events.
A working speech synthesis call is six short steps: confirm support, wait for the voice list, build an utterance, set the voice and rate, queue it with speak(), and listen for the end event so the next utterance can start.
The snippet below confirms support and lists the first five installed voices, including whether each one runs locally or hits a network service:
// Run in the DevTools console of any browser to test Speech Synthesis support.
const supportsSynthesis = typeof window.speechSynthesis === "object";
console.log("Speech Synthesis:", supportsSynthesis ? "supported" : "not supported");
if (supportsSynthesis) {
const loadVoices = () => {
const voices = window.speechSynthesis.getVoices();
console.log("Installed voices:", voices.length);
voices.slice(0, 5).forEach(v => console.log(v.name, v.lang, v.localService ? "local" : "network"));
};
// Chrome, Edge, and Firefox load voices asynchronously.
if (window.speechSynthesis.getVoices().length === 0) {
window.speechSynthesis.addEventListener("voiceschanged", loadVoices, { once: true });
} else {
loadVoices();
}
}The Speech Synthesis API has wide browser coverage on paper, but the cross-browser reality is messy. Voice lists vary per OS, autoplay rules block playback on iOS, and Chrome quietly cancels long utterances after about 15 seconds.
In my experience, the most surprising failure is the silent iOS drop. A speak() call that works on every desktop browser does nothing on iPhone unless it is wired straight to a click handler, and the bug rarely shows up in console logs. Always test the playback path on a real iPhone with a real tap, not just an emulator click.
All Speech Synthesis API version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance