Real-time Video & Voice
WebRTC video calls, voice rooms, screen sharing, and recording.
Hosted SFUs (free tiers)
- ★ LiveKit — open source + hosted; free tier covers many indie use cases. The default for new projects building Zoom-style or Discord-style features. SDKs for everything.
- Daily — generous free tier, polished embeds, low-code prebuilt UIs.
- Stream Video — free tier; great UI components.
- 100ms — competitor SFU; free tier.
- Twilio Video — being deprecated for new accounts; Daily/LiveKit are the replacements Twilio recommends.
- Agora — the legacy big player; decent free tier.
- Vonage Video API — less common today.
Self-host SFUs
- LiveKit Server — open source; deploy to Fly / Hetzner / EKS.
- mediasoup — Node-based, very flexible, lower-level. You build the signaling.
- Janus — C-based, mature, big install base.
- Jitsi — open source video conferencing platform; full UI included.
- OvenMediaEngine — also handles low-latency live streaming.
Peer-to-peer (no SFU)
- simple-peer — small WebRTC wrapper.
- PeerJS — pure-P2P, includes a free signaling server.
- wrtc — WebRTC bindings for Node.
Prebuilt UI / embeds
- LiveKit Components — React + Svelte components.
- Daily Prebuilt — drop-in iframe; fastest path to a working call.
- Stream Video React Bindings — UI included.
- Whereby Embedded — free tier; iframe embed.
Recording / transcription
- ★ LiveKit Cloud Egress — call recording, RTMP out, HLS export.
- Daily Recording — bundled.
- Stream Recording, 100ms Recording — bundled.
- See Transcription for live transcripts.
Signaling protocols
- WebRTC + your own signaling —
simple-peer+ WebSockets. - WHIP (WebRTC-HTTP Ingress Protocol) — emerging standard for ingest into RTMP/HLS.
- WHEP (WebRTC-HTTP Egress Protocol) — playback counterpart.
Pick this if…
- Default video calls / rooms, hosted: LiveKit Cloud or Daily.
- Want polished prebuilt UI fast: Daily Prebuilt or Stream Video.
- Self-host SFU: LiveKit Server.
- You want full Zoom UI for free: Jitsi (self-host).
- 1-on-1 P2P, no media server: simple-peer or PeerJS.