WebRTC (Web Real-Time Communication) is a set of building blocks inside browsers and mobile apps for live audio, video and data between two devices. It has been a W3C Recommendation since January 2021, most recently updated in March 2025, and it rests on protocols standardised by the IETF.
Example: a telehealth app lets a patient tap "Join appointment" in the browser and see their doctor — no plug-in, no download. WebRTC is doing the camera access, the connection and the encrypted media. Almost everything else — the waiting room, who may join, the appointment record — is the app's own work.
It has three parts, and it helps to keep them separate.
Three parts of WebRTC, and the app around them
- Getting media
Camera and microphone, with permission granted per website. No server needed.
- Connecting
ICE finds a path; STUN and, when needed, TURN make it work through NAT.
- Moving data
A low-latency data channel for anything else — cursors, game moves, file transfer.
- The app's own work
The waiting room, who may join, the appointment record.
1. Getting media#
The browser asks for the camera and microphone and hands the app a stream. Permission belongs to the user, is granted per website, and can be withdrawn. Nothing in this part needs a server.
2. Connecting to the other side#
This is where the acronyms live. Most devices sit behind routers doing NAT (network address translation), which hides their real address. Connecting two of them takes:
- ICE — the procedure for finding a working path between two devices. It gathers possible routes and tries them.
- STUN — a small public service a device asks, "what does my address look like from out there?" Cheap to run.
- TURN — a relay for when no direct path exists. It carries the actual media, so it costs bandwidth, and it is the part people forget to budget for. The share of calls that need it varies widely and is much higher on restrictive corporate networks.
A call looks instantaneous but is several separate steps. Knowing which one failed is most of debugging; knowing which ones a vendor runs for you is most of buying.
From tapping call to hearing a voice
- 01Signalling
The two sides exchange what they support and where they are. Not part of WebRTC — you build or buy this.
- 02Discovery
STUN tells each side its public address. Cheap, simple, and enough for many networks.
- 03Traversal
Where a strict NAT or firewall blocks a direct path, a TURN relay carries the media instead.
- 04Negotiation
Codecs, resolutions and encryption keys are agreed. A capability mismatch shows up here.
- 05Media flows
Directly where possible, through the relay where not. Encrypted either way.
3. Moving data#
Alongside audio and video, WebRTC offers a data channel: a low-latency connection between the two devices for anything else — cursor positions, game moves, live document edits, file transfer. It is underused.
What WebRTC is not#
It is not a product. It is a set of building blocks. Everything a meeting needs beyond one connection — rooms, participant lists, permissions, recording, a waiting room — you build or buy.
It is not signalling. The standard deliberately leaves out how two devices find each other and exchange connection details. That is why every WebRTC tutorial spends most of its time on a WebSocket.
It does not scale to a crowd on its own. Beyond a handful of participants you need a media server.
| In WebRTC | Not in WebRTC | |
|---|---|---|
| Media transport | Encrypted audio, video and data between devices | The relay servers needed when no direct path exists |
| Codecs and negotiation | The mechanism for agreeing them | Which ones your call quality actually needs |
| Encryption | Mandatory in transit; end to end between two devices, even through a TURN relay | Keeping media private from a media server in the middle |
| Signalling | Nothing at all | How the two sides find each other — entirely yours |
| Multi-party | Nothing | A media server (SFU) to route more than a handful of participants |
| Recording | Nothing | Storage, consent, retention and jurisdiction |
Group calls: mesh, SFU, MCU#
| Design | How it works | Suits |
|---|---|---|
| Mesh | Everyone sends their stream to everyone else | Two, sometimes three or four people |
| SFU (selective forwarding unit) | A server receives each stream and forwards what each participant needs | Most group calls today |
| MCU (multipoint control unit) | A server mixes all streams into one | Very weak devices, legacy systems; costly to run |
Where the cost actually is#
The browser parts are free. Costs arrive in two places, both operational rather than licensing:
- Relays. Calls that cannot connect directly need TURN, and relayed media is bandwidth you pay for, on servers you run or rent.
- Media servers. Group calls need an SFU, which is real infrastructure with real capacity planning.
One-to-one calls avoid both most of the time. Group calls avoid neither. That puts a floor under what a simple two-person call should cost — useful to know when reading a price list — while recognising that hosted services also sell operations, reach, recording and support.
What you will actually spend time debugging#
Most WebRTC support tickets are not about the protocol:
- Permissions. The user blocked the camera once, months ago, and the browser remembers. Detect that specific error and say "Your browser is blocking the camera — here's how to allow it", not "Connection failed".
- Device selection. A laptop with a docked monitor, a headset and a built-in microphone has several possible inputs, and the default is often wrong. A device picker is essential, not a nice-to-have.
- Networks that change mid-call. Moving from wi-fi to mobile data, or a VPN connecting, can drop media. Handle reconnection deliberately; the default is a frozen picture and no explanation.
The tickets that are not about the protocol
- Permissions
Say "your browser is blocking the camera — here's how to allow it", not "connection failed"
- Device selection
Several possible inputs and a wrong default: a device picker is essential
- Networks that change mid-call
Handle reconnection deliberately; the default is a frozen picture
Quality signals worth showing#
The connection reports statistics continuously. Three predict a bad call before the user complains: round-trip time, packet loss, and whether the call is relayed. A simple indicator built on them — and telling the user which side has the problem — turns an unexplained bad experience into a fixable one.
Signals that predict a bad call
How long a packet takes there and back.
How much of the media never arrives.
Whether the call is going through a TURN relay.
Telling the user which side has the problem turns a bad call into a fixable one.
Where the media travels#
WebRTC media is encrypted, but it still travels somewhere, and where relays and media servers sit is a jurisdiction question a regulated buyer will ask. A vendor's hosted media path is faster to adopt and often offers regional controls; a self-run relay keeps media within a boundary you name, at the cost of running it. Both are defensible — ask the question early. See peer-to-peer video for the trade-offs.
Where the standard is going#
W3C work on extended use cases covers access to encoded media for custom processing, finer control over congestion behaviour and other needs beyond conferencing. The standard is still being extended for real-time applications of many kinds.
Where to go next#
- Peer-to-peer video: what it removes, and what it does not — the next step in this track.
- Latency you can actually feel — why delay matters more than resolution.
Sources
Every claim worth checking, with somewhere to check it.
- WebRTC: Real-Time Communication in BrowsersW3C Recommendation · 13 March 2025
- Updated W3C Recommendation: WebRTC: Real-Time Communication in BrowsersW3C · March 2025
- WebRTC Extended Use CasesW3C