v139 · Web APIs · demo
Privacy Architecture Comparison
Trace exactly what happens to your audio in the classic cloud path versus the new on-device path — and what each means for user privacy and application design.
Classic path — Cloud recognition
Microphone captures audio
Raw PCM audio stream starts in browser memory.
Audio encoded & sent to Google servers
The audio is compressed and transmitted over HTTPS to Google's speech recognition infrastructure.
data leaves device
Server-side transcription
Google's ASR model processes the audio. Transcription accuracy is typically higher but involves Google's infrastructure.
network required
Transcript returned to browser
The text result is sent back. Round-trip latency adds 200–800ms for typical connections.
Chrome 150+ — On-device recognition
Microphone captures audio
Raw PCM audio stream starts in browser memory — same as before.
Local ASR model processes audio
The browser's built-in on-device model transcribes audio entirely in the browser process. Audio never leaves the device.
stays on device
Transcript available immediately
No network round-trip. Interim results are available faster for short utterances.
no network needed
Same API result delivered
The
same interface
SpeechRecognitionResult object looks identical to the cloud path — no code changes required.Feature comparison
| Characteristic | Cloud recognition | On-device (Chrome 150+) |
|---|---|---|
| Audio leaves device? | Yes — sent to Google | No — stays local |
| Internet required? | Yes | No |
| Latency | +200–800ms network RTT | Lower for short phrases |
| Accuracy | High (large cloud model) | Good (compact on-device model) |
| Supported platforms | All Chrome platforms | Windows, macOS, Linux (Chrome 150) |
| Code change needed? | — | None — same SpeechRecognition API |
| Works offline? | No | Yes |
// The JavaScript API is identical in both modes
const recognition = new webkitSpeechRecognition();
recognition.lang = 'en-US';
recognition.interimResults = true;
// Chrome 150+ will automatically choose on-device
// processing when available for the requested language
// and on a supported platform (Windows/Mac/Linux).
// Developers don't need to opt in — it's transparent.
recognition.onresult = event => {
// Same result format regardless of cloud or on-device
const text = event.results[event.results.length - 1][0].transcript;
console.log(text);
};
recognition.start(); // 🔒 stays on device in Chrome 150+
see also
- Feature Detection & Setup — live transcription widget
- Back to feature index
- ChromeStatus entry
scenario focus
Select a scenario to focus its rendered example and summary.