Screen sharing

Screen sharing sends what is on a display instead of what a camera sees. The browser captures a whole screen, a single window, or one tab, and treats the result like any other video source.

What it enables

Showing work to other people in real time: a slide deck during a call, a code editor in a pairing session, a game feed to viewers, or a remote support session. The shared view travels over the same encrypted, low-latency connection a call uses.

The user stays in control. The browser, not the application, decides what can be captured, and the user picks the exact surface to share.

How it works (high level)

Capture starts with getDisplayMedia. The browser shows its own picker, where the user chooses a screen, window, or tab. The application cannot pre-select the surface or capture silently; this is a privacy guarantee built into the API. The call returns a MediaStream with a video track and, when the user allows it, an audio track for system or tab sound.

User getDisplayMedia()picker + grant Screen trackMediaStream Peer CAPTURE → TRACK → PEER

From there the flow matches a call. The capture track is added to the peer connection, negotiated in the SDP exchange, and sent over SRTP. The receiver renders it like any incoming video.

Screen content differs from camera content, so the encoder adapts. A mostly still document favors sharpness and a low frame rate, while a moving game or video favors motion. The browser tunes the codec toward detail or smoothness based on what the surface looks like.

The user can stop sharing at any moment, from the browser's own controls or the application's. The track ends, and the application listens for that end event to clean up.

Where it's used

Presentations in video meetings, remote support and screen control, pair programming, live demos, and broadcasting a screen to an audience as part of a stream.

Open the screen sharing deep dives