July 17, 2026 | Revised July 28, 2026
Chrome 151 Introduces the <usermedia> Capability Element
Chrome 151 introduces a new <usermedia> element for requesting access to a device’s camera and microphone. It is part of Chrome’s developing family of Capability Elements: browser-controlled interface elements intended to connect access to sensitive device features with a clear action by the user.
Websites traditionally request camera and microphone access through the JavaScript method navigator.mediaDevices.getUserMedia(). That method remains the underlying programmatic foundation for media capture. When permission has not already been granted, calling it may cause the browser to display a camera or microphone prompt.
The <usermedia> element approaches the interaction differently. Instead of having page script initiate the request independently, the website places a visible control in the document. The visitor activates that control, giving the browser a direct signal that camera and microphone access is being requested intentionally.
<usermedia id="media-control"><button type="button">Enable camera and microphone</button></usermedia>
In a supporting version of Chrome, selecting the control begins the permission and media-acquisition process. The browser manages the prompt and, after permission is granted, places the resulting MediaStream in the element’s read-only stream property.
JavaScript Is Still Required
The element reduces the amount of permission-handling code a website may need, but it does not eliminate JavaScript. A page must still listen for the stream event and decide what to do with the acquired audio and video.
For example, a page could attach the stream to a video preview:
<usermedia id="media-control">
<button type="button">Enable camera and microphone</button> </usermedia> <video id="preview" autoplay playsinline muted></video>
JAVASCRIPT (currently Chrome 151 and later)
const mediaControl = document.getElementById('media-control');
const preview = document.getElementById('preview');
mediaControl.setConstraints({
video: { width: 1280, height: 720 },
audio: { echoCancellation: true }
});
mediaControl.addEventListener('stream', () => {
preview.srcObject = mediaControl.stream;
});
A Browser-Controlled Interface
A camera or microphone control cannot safely be treated like an ordinary decorative button. A deceptive website might otherwise disguise the control, cover it with another element, make it nearly transparent, or place it where a visitor could activate it without understanding what it does.
Chrome therefore restricts how Capability Elements can be styled. Its documentation describes enforced limits on opacity, contrast, dimensions, spacing, and visual transformations. The aim is to let a website integrate the control into its design without allowing the site to conceal or misrepresent its purpose.
This browser-managed presentation can also provide a more direct recovery path when access was previously denied. Instead of requiring the visitor to search through browser settings, Chrome may present an appropriate recovery flow when the visitor activates the element again.
The element does not silently bypass permission. A user action normally initiates the request.
One Element for Audio and Video
The <usermedia> element is designed for combined camera and microphone capture. It exposes a complete MediaStream, which may contain both audio and video tracks.
The associated proposal also describes separate <camera> and <microphone> elements. Those controls could eventually manage individual media tracks, including enabling or disabling them after access has been granted. The combined <usermedia> element does not provide the same native per-track switching behavior because audio and video tracks can have different states and lifetimes.
Browser Support and Fallbacks
The most important limitation is browser compatibility. Chrome 151 includes the <usermedia> element in its stable release, but that does not make it a universally supported HTML element. The underlying Media Capture Elements work is currently described as an unofficial proposal. Chrome’s implementation does not make <usermedia> an established W3C or WHATWG standard.
A website can use the following JavaScript to detect whether the browser supports the <usermedia> element:
if ('HTMLUserMediaElement' in window) {
// Use the <usermedia> implementation.
} else {
// Provide a getUserMedia() fallback.
}
A browser that does not recognize <usermedia> will generally treat it as an unknown HTML element and still render its child button. That graceful rendering is useful, but the button will not automatically request camera or microphone access. The website must attach conventional getUserMedia() behavior to it as a fallback.
For that reason, <usermedia> should currently be used as a progressive enhancement. It can improve the permission experience in supporting versions of Chrome, while a conventional JavaScript implementation continues to serve other browsers.
The larger significance is not that JavaScript has disappeared. It is that part of a sensitive interaction—expressing user intent, requesting permission, recovering from a previous denial, and acquiring the stream—is moving into a persistent browser-controlled interface. Whether that model becomes a broadly supported part of the Web will depend on further standards work and adoption by other browser engines.
Sources: Chrome 151 release notes, Chrome for Developers: Introducing the <usermedia> HTML Element, and Media Capture and Streams Extensions.