WebRTC Metrics
A comprehensive overview of WebRTC statistics, derived indicators, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats
Back
inbound-rtpinboundaudiovideo
bytesReceived(bits/s)
The bitrate of the incoming media stream.
Description
Real number; in bits per second
The bitrate of the incoming media stream.
This is calculated by converting the delta of bytesReceived to bits (by multiplying them by 8) and then dividing the result by the duration of that delta.
Interpreting Values
Audio (Opus): Typically 20-80kbps. Values outside this range are unusual
Video:
| Range | Description |
|---|---|
| <100kbps | Very poor / audio-only fallback |
| 100-300kbps | Low quality |
| 300-800kbps | Acceptable SD |
| 800kbps-2Mbps | Good HD |
| >2Mbps | High quality |
Sudden drops often correlate with bandwidth estimation reducing the send rate
Common Causes
Low received bitrate is typically caused by:
- Sender is bandwidth-limited
- Sender is CPU-limited (cannot encode fast enough)
- Network congestion forcing BWE (bandwidth estimation) reduction
- TURN relay overhead consuming available bandwidth
User Experience Impact
- Low video bitrate results in a blurry, pixelated image with compression artifacts
- Very low bitrate may cause video to become a slideshow or be disabled entirely
- Low audio bitrate affects quality and legibility of what is being said. This is rarely a user-facing issue as it requires very little bandwidth - usually, other metrics will indicate issues sooner (such as packet loss)
Troubleshooting
- Check the sender's qualityLimitationDurations and targetBitrate to determine if the sender is intentionally limiting bitrate
- If the sender's target is fine but received bitrate is low, investigate the network path
- Check availableOutgoingBitrate on the sender side for bandwidth constraints
See also
- inbound-rtp->headerBytesReceived(bits/s)
- inbound-rtp->bytesReceived
Notes
- bytesReceived offers the accumulation of bytes. Here, we are interested in the bytes that were received since the previous measurement of the metric
- For voice codecs, we expect the resulting bitrate to fit within the configuration of that codec. For video codecs, we expect the resulting bitrate to fluctuate based on the video's content, network conditions, CPU performance, etc.