VBR

VBR stands for Variable Bit Rate.

It is an encoding mode for audio and video where the encoder adjusts the number of bits it produces per second based on the complexity of the content. A scene with fast motion or high detail uses more bits. A static shot or silence uses fewer. The target is a bitrate average over time, not a strict per-second guarantee.

The other popular encoding scheme is CBR.

CBR vs VBR encoding: graph showing variable bitrate adapting to content complexity vs flat CBR output

CBR vs VBR encoding

How VBR Works

A VBR encoder uses a rate control algorithm that monitors the complexity of each frame or audio segment before deciding how many bits to allocate. High-complexity frames - fast motion, scene changes, lots of spatial detail - get more bits to preserve quality. Low-complexity frames - a talking head against a plain background - get fewer bits, saving bandwidth.

The tradeoff: the encoder cannot predict the future, so short bursts of VBR output can exceed the target bitrate significantly before the algorithm compensates. Over a window of several seconds, VBR tends to hit its target average. Over a window of 100 milliseconds, the output can spike 2-3x the nominal rate.

VBR in Recording and Streaming

VBR is the standard encoding mode for files, VOD (video-on-demand), and stored recordings. The reasons are straightforward: the encoder has no hard bandwidth constraint, and VBR produces better quality at the same average bitrate than CBR. Most video files on the internet - YouTube, Netflix, most downloaded video - use VBR encoding.

For pre-recorded streaming with adaptive bitrate (HLS, DASH), VBR is also the norm. The ABR player compensates for per-segment bitrate variation by buffering.

Why VBR is not Used for Real-Time Media

VBR encoding is not suitable for live WebRTC sessions or other low-latency real-time media. The reason is bandwidth estimation. WebRTC continuously measures how much bandwidth is available on the network path using mechanisms like BWE. Once an estimate is made, the encoder is told not to exceed that target - otherwise the packets pile up, creating congestion and causing packet loss and latency spikes.

VBR's short-term bitrate spikes are incompatible with this model. A spike at the wrong moment blows past the bandwidth budget and causes exactly the congestion that WebRTC's rate control exists to prevent.

WebRTC uses CBR by default for camera sources, and VBR is used mainly for screen-share sources in some implementations where content complexity varies too widely for fixed-rate encoding to be practical - and then, when the application prefers content over motion.

Tsahi Levent-Levi

Tsahi Levent-Levi

Independent WebRTC analyst. 20+ years in telecom, 13 focused on WebRTC. Writes for developers and product teams who need to understand, not just implement, real-time communications.