Screen Recorder
Record your screen, window, or browser tab with optional audio, download instantly
Recording Preview
What is Screen Recorder?
The Screen Recorder captures a full screen, application window, or browser tab directly from the browser. Depending on browser support and permissions, it can also include system audio and microphone input for quick tutorials, bug reproductions, product demos, class clips, design reviews, and support explanations without installing separate software. Before recording, users should check for private windows, notifications, passwords, customer data, or unrelated tabs, because the captured area is recorded exactly as selected. Processing is local and the resulting file can be downloaded afterward, but video quality, audio tracks, and available sources depend on the browser and operating system.
How to Use
How to use
- Select what to record: entire screen, window, or browser tab
- Choose audio settings (optional)
- Click "Start Recording" and select what to share
- Click "Stop Recording" when done
- Download or preview your recording
Tips
- Close unnecessary notifications before recording
- For system audio, choose "Browser Tab" and check "Share audio"
- You can pause and resume during recording
- Use a stable network connection for best results
Use Cases
Technical Principle
Capture starts with navigator.mediaDevices.getDisplayMedia({ video: true, audio: true }), which returns a MediaStream containing one video track (the chosen screen, window, or tab) and optionally one audio track when the browser and source allow it. The user picks the surface in a native picker dialog, and the stream ends automatically when the user clicks the system Stop sharing button, which fires the track's ended event so the recorder can finalize the file. The encoded output is produced by the MediaRecorder API. Container and codec selection goes through MediaRecorder.isTypeSupported() against candidates like video/webm;codecs=vp9,opus, video/webm;codecs=vp8,opus, and on Safari video/mp4;codecs=avc1. ondataavailable fires periodically (or on stop), delivering Blob chunks that are concatenated into a single Blob with the recorded mimeType. videoBitsPerSecond and audioBitsPerSecond trade quality for file size, and a typical 1080p screencast at 4 Mbps VP9 lands around 30 MB per minute. When both system audio and microphone are requested, the page builds an AudioContext, wraps each MediaStreamTrack in a MediaStreamAudioSourceNode, and mixes them through a GainNode into a MediaStreamAudioDestinationNode. The merged audio track replaces the original streams before MediaRecorder starts, so the resulting WebM carries a single mixed Opus track instead of two separate ones. Browser support requires Chrome 72+, Firefox 66+, or Safari 13+; older browsers either refuse getDisplayMedia or omit the audio constraint.
- Capture API: navigator.mediaDevices.getDisplayMedia({ video, audio }) returns a MediaStream; the user picks screen/window/tab in a system dialog
- Encoder: MediaRecorder with isTypeSupported() probing video/webm;codecs=vp9,opus first, falling back to vp8 or H.264/AVC1 in MP4
- Chunked output: ondataavailable yields Blob slices that are concatenated and wrapped in a Blob of the negotiated mimeType
- Audio mixing: AudioContext + MediaStreamAudioSourceNode + GainNode + MediaStreamAudioDestinationNode merge system audio with the mic into one Opus track
- End-of-stream trigger: the video track's ended event fires when the user clicks the browser's Stop sharing bar, finalizing the recording
- Bitrate control: videoBitsPerSecond around 2.5-8 Mbps for 1080p; 4 Mbps VP9 is roughly 30 MB per minute
- Browser baseline: Chrome 72+, Firefox 66+, Safari 13+; tab audio capture only works in Chromium-based browsers with the Share tab audio checkbox
Examples
Software tutorial, 10 minutes at 1080p
Source: Entire screen (1920 x 1080)
Audio: Microphone only
Codec: video/webm;codecs=vp9, opus
Frame rate: 30 fps
Duration: 10:00
Output: tutorial.webm, ~190 MB
Use: product walkthroughs, LMS uploadBug reproduction with system audio
Source: Browser tab (Chrome)
Audio: System audio (tab audio shared in dialog)
Codec: video/webm;codecs=vp8, opus
Duration: 0:45
Output: bug-repro-2026-06-10.webm, 7.2 MB
Attached to: GitHub issue #1284Online meeting clip with mic + system audio
Source: Application window (Zoom)
Audio: System + Microphone (both)
Duration: 3:20
Output: meeting-snippet.webm, 42 MB
Note: pause used at 1:15 to skip credential entry, then resumeProduct demo for app store
Source: Application window (1280 x 720)
Audio: None (silent demo for caption overlay later)
Frame rate: 30 fps, bitrate: 4 Mbps
Duration: 0:30
Output: demo.mp4 (if H.264 supported) or .webm fallback
Size: ~15 MB, fits app store preview capFAQ
How does the screen recorder work?
It uses the browser's MediaRecorder API on a screen-share MediaStream from getDisplayMedia. The browser asks you what to share (full screen / window / tab); the page records frames to a video blob in memory and offers download when you stop. No recording servers, no cloud, no upload.
What format and codec is used?
WebM with VP8 or VP9 video codec (depending on browser support), Opus audio. Most modern browsers, video editors, and players handle WebM natively. To export MP4, transcode locally with FFmpeg after download.
Can I include system audio?
Some browsers/operating systems allow tab-audio or system-audio capture during getDisplayMedia. Chrome on Windows is the most permissive; Safari and Firefox are more limited. Microphone audio (your voice) is recorded separately if you grant permission.
What's the maximum recording length?
Browser memory is the limit since the recording is held in RAM until you stop. Practical limit: 10-60 minutes depending on resolution and bitrate. For longer recordings or high-quality screencasts, OBS Studio (desktop) is more capable - it streams to disk and has no memory ceiling.
Is my recording uploaded anywhere?
No. The recording is local to your browser. Downloading saves the WebM file to your device. Nothing is transmitted to a server unless you explicitly share the file.
Why is the recording laggy or low quality?
Capturing screen and re-encoding is CPU-intensive. Close other apps, lower the recording resolution if possible, and pick a single window or tab instead of full screen. Hardware encoding (h264 via WebCodecs API) helps where supported but isn't universal yet.
Can I trim or edit the recording?
Not in this tool. Download the WebM file and use a video editor (DaVinci Resolve, Shotcut, FFmpeg command-line) to trim, transcode, or annotate.