Last updated: April 7, 2026

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).

Looking to learn more about WebRTC? 

Check my WebRTC training courses

About WebRTC Glossary

The WebRTC Glossary is an ongoing project where users can learn more about WebRTC related terms. It is maintained by Tsahi Levent-Levi of BlogGeek.me.