Frame rate

Frame rate is the number of frames per second (fps) sent or received in a video stream.

A typical WebRTC video call targets 30 fps, though the actual frame rate fluctuates dynamically based on network conditions, CPU load, and BWE decisions.

Frame rate in WebRTC

WebRTC adaptively adjusts frame rate as one of three quality levers (alongside resolution and bitrate):

  • Good conditions: 30 fps at target resolution
  • Moderate degradation: Frame rate may drop to 15-20 fps while maintaining resolution
  • Severe degradation: Frame rate may drop to 7-10 fps with reduced resolution

Reducing frame rate frees up bandwidth and CPU for each remaining frame to have better quality. This is often preferable to maintaining high fps at very low resolution.

Frame rate for different content types

  • Talking head video: 15-30 fps is usually sufficient
  • Screen sharing: 5-15 fps is often adequate since screen content changes less frequently
  • Gaming/fast motion: 30-60 fps preferred for smooth rendering

Developers can set preferred frame rate via getUserMedia constraints:

{ video: { frameRate: { ideal: 30, max: 60 } } }

Frame rate statistics are available via getStats() as framesPerSecond in the outbound and inbound RTP stats.

Additional reading

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.