Skip to main content
Unlock next-gen video quality with Daily Adaptive Bitrate, combining ultra-reliable calls and the best visual experience your network can offer — automatically adjusting in real time to your changing needs.

Overview

Video calls must be reliable. With traditional simulcast technology, achieving reliability requires conservative preconfigured settings — which means users may get a sub-par visual experience. Increasing the bitrate improves quality but risks call reliability. The root of the quality-reliability trade-off is how traditional simulcast works: a sender has a predefined number of layers (usually three) with settings statically configured before the call. If a network issue arises, the only options are to reduce frame rate or drop to a lower layer. Example with static simulcast: You configure three layers:
LayerMax bitrateResolutionMax framerate
High700 kbps640x36030 fps
Medium200 kbps427x24015 fps
Low100 kbps320x18015 fps
A user joins on a WiFi network with 5 Mbps download / 1 Mbps upload. Due to the slow upload speed, they can’t send all three layers. Result: they send either 360p @ 15fps or 240p @ 15fps. With Daily Adaptive Bitrate: Instead of static settings, Daily automatically adjusts to changing network conditions. When bandwidth is constrained, bitrate and resolution are reduced to keep the call connected. When bandwidth is available, bitrate and resolution increase up to 2 Mbps at 720p. The same user on the same network would instead:
  • Send video at 540p @ 30fps (~800 kbps)
  • Receive video at 720p @ 30fps (~2 Mbps)
In 1:1 calls, only a single video layer is sent, saving bandwidth and enabling higher quality. In multi-party calls, the top layer adapts dynamically and lower layers serve as fallbacks.

Usage

daily-js and react-native-daily-js

Adaptive Bitrate is enabled by default for all daily-js and react-native-daily-js clients — this includes both Daily Prebuilt and custom call object apps. No additional configuration is required. To disable it, set enable_adaptive_simulcast to false on the domain or room. Minimum supported versions:
  • daily-js: 0.60.0 or later
  • react-native-daily-js: 0.61.0 or later

daily-android, daily-ios, and python

Adaptive Bitrate is not enabled by default for native SDK clients. To enable it:
  1. Set enable_adaptive_simulcast to true on the domain or room.
  2. Set allowAdaptiveLayers: true in your client’s sendSettings. [ Android docs | iOS docs | Python docs ]
  3. Use the VP8 video codec — Adaptive Bitrate is only supported with VP8 on native clients.
Minimum supported versions:
  • daily-android: 0.18.0 or later
  • daily-ios: 0.18.0 or later
  • daily-python: 0.18.0 or later

Multi-party Adaptive Bitrate

Multi-party Adaptive Bitrate is off by default for all clients. Enable it via the enable_multiparty_adaptive_simulcast domain property or room property.

Caveats

  • Daily Adaptive Bitrate works for camera video only.
  • In 1:1 calls, when a third participant joins, standard simulcast is automatically enabled. When the call drops back to two participants, Adaptive Bitrate re-enables automatically.
  • Works best on Chrome and Safari (desktop and mobile). Firefox users can join, but will send video using 3-layer simulcast.