MediaRecorder works in Chrome 49+, Edge 79+, Firefox 29+, Opera 36+, Safari 14.1+ macOS, and Safari 14.5+ iOS. Learn MediaRecorder browser support and quirks.

Prince Dewani
May 6, 2026
MediaRecorder is a W3C JavaScript API that records audio and video from a MediaStream into a Blob. It supports Chrome 49+, Edge 79+, Firefox 29+, Opera 36+, Samsung Internet 5+, Safari 14.1+ on macOS, and Safari 14.5+ on iOS; Internet Explorer and the legacy Android Browser do not support it.
This guide covers what MediaRecorder is, the browsers that support it, the codecs it accepts, how to check support, how to enable it in Safari, and the known issues.
MediaRecorder is a W3C JavaScript interface in the MediaStream Recording API that records a MediaStream into a Blob of encoded audio or video. The MediaStream usually comes from getUserMedia, getDisplayMedia, or a Web Audio graph. It exposes start, stop, pause, resume, and dataavailable events to the page.
MediaRecorder works in every modern desktop and mobile browser. Chrome, Firefox, Edge, Opera, and Samsung Internet support it on Windows, macOS, Linux, ChromeOS, and Android, while Safari supports it from Safari 14.1 on macOS and Safari 14.5 on iOS.
Chrome supports MediaRecorder by default from Chrome 49 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 47 to 48 had MediaRecorder disabled by default behind the experimental web platform features flag and only recorded video. Chrome 4 to 46 did not support the API.
Edge supports MediaRecorder by default from Edge 79 on Windows, macOS, Linux, and Android. Edge 79 was the first Chromium-based release, so it inherits the same recorder behavior as Chrome. The legacy EdgeHTML versions Edge 12 to 78 never added MediaRecorder.
Firefox supports MediaRecorder by default from Firefox 29 on Windows, macOS, Linux, and Android. Audio and video recording both work from version 29, and later releases added codec choices and bitrate hints. Firefox 2 to 28 did not support the API.
Safari supports MediaRecorder by default from Safari 14.1 on macOS Big Sur and from Safari 14.5 on iPhone and iPad. Safari 12.1 to 14 on macOS and Safari 12 to 14.4 on iOS shipped MediaRecorder behind an Experimental Features toggle. Safari 11 and earlier on macOS, and Safari 11.4 and earlier on iOS, did not support it.
Opera supports MediaRecorder by default from Opera 36 on Windows, macOS, and Linux, and from Opera Mobile 80 on Android. Opera 34 to 35 had MediaRecorder disabled by default, and Opera 9 to 33 did not support it. Modern Chromium-based Opera shares Chrome's behavior.
Samsung Internet supports MediaRecorder by default from version 5 on Galaxy phones and tablets. It is built on Chromium, so it inherits the same audio and video MIME types Chrome supports. Samsung Internet 4 did not support the API.
The legacy stock Android Browser does not support MediaRecorder in any version. On modern Android phones, use Chrome for Android 49+, Firefox for Android 29+, or Samsung Internet 5+ for MediaRecorder support. The stock browser only ships on Android 4.4 KitKat and earlier devices.
Internet Explorer does not support MediaRecorder in any version. Microsoft never added the MediaStream Recording API to IE 5.5 through IE 11. Microsoft has retired Internet Explorer in favor of Edge, so any new build should target Edge or another Chromium-based browser.
Note: MediaRecorder breaks across older Safari, iOS, and the stock Android Browser. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
MediaRecorder supports a different list of MIME types in each browser, so call MediaRecorder.isTypeSupported() before recording. Chromium browsers default to audio/webm with Opus and video/webm with VP8 or VP9, while Safari only writes audio/mp4 and video/mp4 with AAC and H.264.
Test MediaRecorder support in two steps. First, check that the MediaRecorder constructor exists in window. Second, call MediaRecorder.isTypeSupported() with the MIME type you plan to record. Both calls return synchronously, so they fit inside a feature-detect block before getUserMedia.
The isTypeSupported() call returns a boolean. A true result means the browser will accept the MIME type, but it does not promise the encoder can run at the requested bitrate on the current device. Always wrap MediaRecorder.start() in a try/catch and listen for the error event in case the encoder rejects the stream at runtime.
Paste this snippet into the browser DevTools console to confirm the constructor and the four most common MIME types:
// Run in the DevTools console of any browser to test MediaRecorder support.
const hasMediaRecorder = "MediaRecorder" in window;
console.log("MediaRecorder constructor:", hasMediaRecorder ? "yes" : "no");
if (hasMediaRecorder) {
const mimeChecks = [
"audio/webm;codecs=opus",
"audio/mp4;codecs=mp4a.40.2",
"video/webm;codecs=vp9,opus",
"video/mp4;codecs=avc1.42E01E,mp4a.40.2"
];
for (const mime of mimeChecks) {
const ok = MediaRecorder.isTypeSupported(mime);
console.log(mime, "->", ok ? "yes" : "no");
}
}If every MIME prints "no", the browser cannot record at all and your page should fall back to a server-side recorder or a WebRTC pipe to the backend.
Safari supports MediaRecorder by default from Safari 14.1 on macOS and Safari 14.5 on iOS. On older Safari 12.1 to 14 on macOS and Safari 12 to 14.4 on iOS, the API ships but is disabled, so flip the experimental flag before any page can use it.
On iPhone or iPad, open Settings, Safari, Advanced, Experimental Features, toggle MediaRecorder on, and reload Safari. The flag is sticky, so you only have to do it once per device.
MediaRecorder has the broadest reach of any web recording API, but a few real edge cases still break in production. The biggest hits are codec interop, iPhone Safari quirks, and the legacy Android Browser gap.
In my experience, the most surprising failure happens on iPhone Safari. Even when isTypeSupported('audio/webm;codecs=opus') returns true, MediaRecorder.start() throws NotSupportedError on iOS, and the page silently records nothing. Always test the actual start() call, not just isTypeSupported().
All MediaRecorder version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance