TL;DR — Recording video straight from a browser link works because of two standard web APIs — getUserMedia and MediaRecorder — built into modern browsers, not because of any app or plugin. Support is broad across current desktop and mobile browsers; check caniuse.com for the current detail on a specific browser version.
- Two browser APIs do the work: getUserMedia requests camera and microphone access, MediaRecorder captures the stream.
- No app or plugin install is required on a modern browser; access is permission-based and asked for once per site.
- Support is broadly good across current Chrome, Safari, Firefox and Edge, on both desktop and mobile.
- A secure connection (HTTPS) is required for camera access in every modern browser.
On this page
The two APIs doing the actual work
When someone clicks "record" on a web page and their camera light turns on, two standard, long-established web APIs are behind it. getUserMedia (part of the WebRTC family of APIs) asks the browser for permission to access the camera and microphone, and hands back a live media stream if the person grants it. MediaRecorder then takes that stream and encodes it into a video file as it records, which can be uploaded once the person stops.
Neither of these requires installing anything. They are built into the browser itself, the same way a browser already knows how to play a video or submit a form — which is the whole reason a shared link can turn into a working recorder without asking anyone to download an app first.
What the person actually experiences
- They open a link, on desktop or mobile, in whatever browser they already have installed.
- The browser asks, once, for permission to use the camera and microphone for that specific site.
- If they allow it, they see a live preview and a record button — no account, no install, no plugin.
- When they stop recording, the clip is available to review and, usually, re-record before it's submitted.
Browser and device support
getUserMedia and MediaRecorder are broadly supported in modern browsers — current versions of Chrome, Safari, Firefox and Edge on both desktop and mobile all support camera and microphone capture in the browser. Exact capability can vary by specific browser version, operating system, and whether the browser is the default one or embedded inside another app (such as an in-app browser within Instagram or LinkedIn, which sometimes restrict camera access). For the current, specific state of support across browser versions, check caniuse.com rather than relying on a table that will inevitably go out of date.
One practical catch worth flagging: some in-app browsers (opening a link from inside a social or messaging app rather than a standalone browser) handle camera permissions inconsistently. If a contributor reports that recording isn't working, asking them to open the link in their regular browser app rather than an embedded one resolves the issue in most cases.
Why HTTPS is required
Every modern browser requires a secure connection (HTTPS, not HTTP) before it will grant camera or microphone access through getUserMedia, as a basic protection against a malicious or compromised page silently accessing someone's camera. This is enforced by the browser itself, not by the site — there's no way around it, and no reason to want one.
How Whoosh uses this
Whoosh's recording link relies on exactly these standard browser APIs — nothing proprietary and nothing to install — which is why a contributor can record from whatever device and browser they already have open.
Start freeFrequently asked questions
Does browser recording work on mobile as well as desktop?
Yes — current mobile browsers on both iOS and Android support the same underlying camera and microphone APIs as desktop browsers.
Why does the browser ask for camera permission every time on some sites but not others?
Browsers generally remember a permission grant per site once given, so a returning visitor to the same page usually isn't asked again; a new site always asks fresh.
What if someone's browser is very outdated?
A sufficiently old browser may not support these APIs or may support them inconsistently — check caniuse.com for current specifics if you need to support a known older browser population.
Does this work inside an in-app browser like the one in Instagram or LinkedIn?
Sometimes, but not always reliably — if someone reports trouble recording, ask them to open the link in their regular browser app instead.

