What it is
The speech synthesis API lists the text-to-speech voices installed on the machine: names, languages and whether they are local. Windows ships Microsoft David and Zira, macOS ships Alex, Samantha and a long list of localised voices, Chrome adds its own Google voices on top.
How websites read it
speechSynthesis.getVoices().map((v) => v.name);
// macOS: ["Alex", "Samantha", ...] Windows: ["Microsoft David", "Microsoft Zira", ...]getVoices() needs no permission. The list may arrive asynchronously, so pages wait for the voiceschanged event.
Why it identifies you
Voice names spell out the operating system and often its language packs, and the count is a stable secondary identifier — a Mac with 200 voices stays a Mac with 200 voices.
How risk-control systems use it
The names are matched against the claimed OS: Apple voices on a Windows UA, or Microsoft voices on a Mac, contradict the label directly. An empty list on a desktop Chrome is unusual and reads like a stripped-down automation build.
Common mistakes
Forgetting voices while spoofing the OS; an empty list; a list that changes between page loads.
Mango is accepting waitlist registrations. These capabilities describe its first release; client access opens with invitations.
How Mango Browser handles it
RealThe voice list follows the profile OS (Microsoft voices on Windows, Apple voices on macOS).
Check yours
Jump to this signal in your scan results.