This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
The MediaTrackSupportedConstraints dictionary's deviceId property is a read-only Boolean value which is present (and set to true) in the object returned by MediaDevices.getSupportedConstraints() if and only if the user agent supports the deviceId constraint. If the constraint isn't supported, it's not included in the list, so this value will never be false.
You can access the supported constraints dictionary by calling navigator.mediaDevices.getSupportedConstraints().
This property is present in the dictionary (and its value is always true) if the user agent supports the deviceId constraint. If the property isn't present, this property is missing from the supported constraints dictionary, and you'll get undefined if you try to look at its value.
const result = document.getElementById("result");
const supported = navigator.mediaDevices.getSupportedConstraints().deviceId;
result.textContent = supported ? "Supported!" : "Not supported!";
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
deviceId |
59 | 12 | 43Before Firefox 69, Firefox only supporteddeviceId in constraints passed into getUserMedia(). |
46 | 11 | 59 | 43Firefox for Android only supportsdeviceId when used in constraints passed into getUserMedia(). |
43 | 11 | 7.0 | 59 | 11 |
MediaDevices.getSupportedConstraints()MediaTrackSupportedConstraintsMediaStreamTrack
© 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/MediaTrackSupportedConstraints/deviceId