Sub-second WebRTC streaming that connects every viewer — UDP, TCP, and TURN-over-TLS fallback in 20+ regions. 1 TB free, 5 TB for $9/month.
WebRTC is the only widely-deployed transport that delivers true sub-second live latency to a browser. HLS and LL-HLS measure latency in seconds; WebRTC measures it in hundreds of milliseconds. That is why sports books, news desks, auction houses, and esports broadcasters keep moving to WebRTC pipelines built on mediasoup, Janus, OvenMediaEngine, or LiveKit.
The thing nobody tells you on day one: a measurable share of viewers — corporate networks, hotel Wi-Fi, university VPNs, mobile carriers in some regions — block UDP outright or sit behind symmetric NATs. Those viewers fail to connect to your SFU and bounce. A TURN server with TCP and TLS fallbacks rescues them.
In mediasoup, TURN credentials live on the client. Pass them into the RTCPeerConnection the client uses for its sendTransport and recvTransport.
// mediasoup-client (browser)
const sendTransport = device.createSendTransport({
id, iceParameters, iceCandidates, dtlsParameters,
iceServers: [
{
urls: [
'turn:relay1.expressturn.com:3478?transport=udp',
'turn:relay1.expressturn.com:3478?transport=tcp',
'turns:relay1.expressturn.com:443?transport=tcp'
],
username: 'YOUR_EXPRESSTURN_USERNAME',
credential: 'YOUR_EXPRESSTURN_PASSWORD'
}
],
iceTransportPolicy: 'all'
});
Each SFU has its own way to push iceServers to clients:
iceServers in the JavaScript client when calling Janus.init and per-handle when attaching to a plugin.rtcConfig.iceServers when constructing the Room, or configure it server-side in livekit.yaml under rtc.turn_servers.<ICEServers> in Server.xml under the WebRTC publisher/provider blocks.webrtc.Configuration.ICEServers when constructing peers.Only the share of viewers that need TURN consumes your relay bandwidth — typically 10–25% of total viewers depending on your audience. So a 5 TB premium plan supports a much larger raw audience than the math above suggests at first glance.
Why does WebRTC live streaming need TURN?
WebRTC viewers come from every kind of network. A meaningful share are behind NATs or firewalls that block direct UDP, so the SFU's UDP candidates fail. TURN provides a TCP/TLS fallback path that always connects, at a small latency cost compared to direct UDP.
Does TURN add latency to a live stream?
Adding TURN as a fallback path adds zero latency to viewers who can connect directly — they keep using their UDP path. Viewers who need TURN see the relay's hop added to their path, typically 10–40 ms when you pick a TURN region close to the viewer.
Can ExpressTURN handle 1080p video?
Yes. A 3 Mbps 1080p stream consumes roughly 1.35 GB per hour through TURN. The free 1 TB plan supports about 740 hours of relayed 1080p; premium 5 TB supports about 3,700 hours.
Should TURN run on the publisher side or the viewer side?
Both peers in an SFU pipeline should list TURN in their iceServers so either side can fall back when its network blocks UDP.
Add a TURN fallback to your SFU in five minutes.
Sign Up — Free 1 TB/monthRelated: TURN for VoIP · TURN for multiplayer games · mediasoup integration recipe · LiveKit integration recipe · vs Cloudflare Calls