Hosted SDKs (Daily, Agora) include TURN by default. For self-hosted setups — most often LiveKit, sometimes coturn standalone — you have to size and operate your own TURN cluster.
Why sizing matters
Roughly 15-25% of WebRTC connections need a TURN relay. The rest connect peer-to-peer or via STUN. So if you have 100 concurrent calls, expect 15-25 of them to be relayed.
Each relayed connection consumes bandwidth at your TURN server equal to the call's media bitrate, multiplied by both directions. A 720p video call at 1.2 Mbps means 2.4 Mbps of TURN bandwidth per relayed connection.
The math
For a target of 1,000 concurrent calls:
- Expected TURN relays: ~200 (20% mid-range)
- Per relay: ~2.4 Mbps
- Total TURN bandwidth: ~480 Mbps sustained, plus burst headroom
A single mid-tier server (8 vCPU, 32GB RAM, 10 Gbps NIC) handles this comfortably. But you want at least two for failover.
TLS overhead
TURN/TLS adds ~5-10% CPU overhead vs TURN/UDP. Not material for sizing unless you are at the edge of your CPU budget.
What we deliver
Every multi-region build includes a coturn cloud-init template, a Pulumi stack to provision two regions with DNS failover, and a written capacity sheet for your team's runbook.
Get the full integration
Stop reading. Start shipping.
Pick a plan and we'll have working WebRTC video calling on your dashboard inside the delivery window.