Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
The setSinkId() method of the HTMLMediaElement interface sets the ID of the audio device to use for output and returns a Promise.
This only works when the application is permitted to use the specified device. For more information see the security requirements below.
setSinkId(sinkId)
sinkIdThe MediaDeviceInfo.deviceId of the audio output device.
A Promise that resolves to undefined.
NotAllowedError DOMException
Returned if a speaker-selection Permissions Policy is used to block use of audio outputs.
NotFoundError DOMException
Returned if the deviceId does not match any audio output device.
AbortError DOMException
Returned if switching the audio output device to the new audio device failed.
Access to the API is subject to the following constraints:
speaker-selection HTTP Permission Policy.MediaDevices.selectAudioOutput().This example shows how to select an audio output device from the array returned by MediaDevices.enumerateDevices(), and set it as the sink for audio. Note that the result of enumerateDevices() only includes devices for which user permission is not required or has already been granted.
const devices = await navigator.mediaDevices.enumerateDevices();
const audioDevice = devices.find((device) => device.kind === "audiooutput");
const audio = document.createElement("audio");
await audio.setSinkId(audioDevice.deviceId);
console.log(`Audio is being output on ${audio.sinkId}`);
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
setSinkId |
49 | 17 | 116 | 36 | 18.4 | NoNot available due to a limitation in Android, see bug 41276355. |
NoNot available due to a limitation in Android, see bug 1473346. |
NoNot available due to a limitation in Android, see bug 41276355. |
18.4 | NoNot available due to a limitation in Android, see bug 41276355. |
NoNot available due to a limitation in Android, see bug 41276355. |
18.4 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId