BUNDLE is a mechanism in WebRTC that multiplexes multiple media streams (audio, video, data) over a single transport connection instead of using separate connections for each.
Why BUNDLE matters
Without BUNDLE, each m= line in the SDP would require its own:
- ICE candidate pairs (separate connectivity checks)
- DTLS handshake (separate key negotiation)
- Network port
This means you end up with more checks over more socket connections. If some fail while others succeed, you end up with an inconsistent connection state. If you do succeed, you still end up using too many resources.
BUNDLE eliminates this overhead by sharing a single transport for all media types. This means:
- Faster connection setup (one ICE check instead of many)
- Fewer NAT binding requirements
- Simpler firewall configuration
- Less ambiguity and less transient states
- Reduced STUN/TURN resource usage
BUNDLE in practice
BUNDLE is negotiated in the SDP using the a=group:BUNDLE attribute. In modern WebRTC, BUNDLE is enabled by default and virtually all implementations support it. The MID (Media Identification) attribute is used to demultiplex the bundled streams.
BUNDLE is defined in IETF RFC 8843 and works in conjunction with RTCP-MUX (which multiplexes RTP and RTCP on the same port).


