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.


