How adaptive bitrate streaming works

A single fixed-bitrate file is a poor fit for the real world: a viewer's available bandwidth changes from second to second, and the same file needs to work on a phone over a shaky mobile connection and on a desktop with a stable fiber line. Adaptive bitrate streaming solves this by preparing several versions of the same video at different quality levels and letting the player switch between them automatically, in the middle of playback, without the viewer doing anything.

The building blocks

Segments

Instead of one long video file, the source is cut into short chunks — typically two to ten seconds each — encoded independently enough that a player can jump straight to any of them. Each quality level has its own complete set of segments covering the same timeline.

The bitrate ladder

The set of quality levels prepared for a given piece of content is called a bitrate ladder — usually a handful of resolution and bitrate pairs, ordered from lowest to highest:

A typical bitrate ladder
Rendition Resolution Approx. bitrate
Low426×240~0.4 Mbps
Medium-low640×360~0.8 Mbps
Medium842×480~1.4 Mbps
High1280×720~2.8 Mbps
Full HD1920×1080~5 Mbps

See choosing a bitrate for how those per-resolution numbers are arrived at in the first place, and resolutions & frame rates for what the resolution labels mean.

The manifest

A small text file — separate from the video itself — lists every available rendition and points to where its segments live. The two formats in common use are HLS, which uses an .m3u8 playlist, and DASH, which uses an .mpd manifest. The player downloads this file first, before any video data, to learn what's available.

How the player actually chooses

The player continuously estimates the viewer's available bandwidth by timing how long recent segment downloads took, and it watches how full its own playback buffer is. Using both signals, it picks the highest rendition it believes it can download smoothly enough to keep the buffer from running dry. If a network drops, it steps down to a lower rendition for the next segment; if conditions improve, it steps back up. Because every rendition covers the exact same timeline in equal-length segments, this switch can happen between any two segments without the viewer noticing a break.

Why segments need aligned keyframes

For a mid-playback switch to be seamless, every rendition needs a keyframe (a fully self-contained frame, sometimes called an I-frame) at exactly the same points in time. Segment boundaries are placed at those keyframes, so however the player mixes and matches segments from different renditions over the course of playback, each segment it downloads can be decoded on its own without needing data from a different quality level.

Why this matters beyond just "video looking good"

  • Playback can start almost immediately, at a conservative quality, rather than waiting to download a large file.
  • One piece of content serves phones, laptops, and TVs from the same set of files, each device settling near the rendition that suits its screen and connection.
  • Temporary network problems cause a brief quality dip instead of stalled playback.
In short: adaptive streaming isn't a codec or a container — it's a delivery strategy built on top of them. It takes the same encoding choices covered on the codec and bitrate pages and repeats them across a ladder of renditions, packaged as short, independently playable segments described by a manifest.
← Back to all topics