Browser screen capture, explained without the W3C tax.
Every modern browser can record the screen using a built-in API. That has been true since 2016, but most "screen recording" products still ship a Chrome extension or a desktop app for no good reason. Here is what is actually under the hood.
The Screen Capture API
`navigator.mediaDevices.getDisplayMedia({ video: true, audio: true })` returns a `MediaStream` representing whatever the user picked — a screen, a window, or a tab. Permission is per-session and explicit; the browser, not the page, asks the user. There is no way to default the surface choice.
MediaRecorder
Pipe the `MediaStream` into a `new MediaRecorder(stream, { mimeType, timeslice })` and listen for `dataavailable`. Each event fires with a `Blob` chunk of encoded video. With `timeslice = 2000`, you get a chunk every two seconds — small enough to upload incrementally so a long recording starts uploading before it finishes.
Why no extension is required
Both APIs are first-party browser features. There is no privileged DOM access needed; the user picks the source explicitly. An extension only adds value if you need to capture across origins (a Chrome extension can request `desktopCapture` permission), which most products do not need.
Browser quirks worth knowing
Safari produces MP4/H.264 from `MediaRecorder` while Chromium produces WebM/VP9. System audio capture varies (Chrome supports tab audio robustly; Firefox is more limited). Mobile browsers do not expose the API at all.
Frequently asked
Why do most products still ship a desktop app?
Mostly inertia from a pre-2017 era when browser support was weaker. The browser path is now strictly better for any product whose recording does not need fancy native effects.
Try Screendog free.
5 recordings on the free trial. Real Linear, GitHub, Notion, Slack, and Jira filing. No credit card.
Start a workspace — free