Guides
WebCodecs vs WebRTC for recorded calls
If the call is the product, use WebRTC. If the recording of the call is the product, the WebCodecs relay trade is worth understanding.
Every video platform answers one question first: what is the call for? If the answer is conversation — people talking to people, latency felt in the mouth — the industry spent fifteen years converging on WebRTC: peer-to-peer paths, SFUs forwarding simulcast layers, congestion control fighting for every millisecond. It is a marvel, and for live conversation it is the right answer.
But a growing share of video products do not sell conversation. They sell what happened in the conversation: the transcript, the replay, the review, the export. The call is the collection step; the value is extracted afterwards, from the recording. For that product, optimizing purely for live latency buys complexity — SFUs to run, simulcast layers to manage, recording pipelines bolted on — while the thing you actually sell arrives late, mixed down, and metered twice.
Synento makes the opposite trade on purpose: browsers encode with WebCodecs, ship frames over a WebSocket, and a relay appends them to durable streams. Latency is higher than peer-to-peer WebRTC and the browser floor is newer. In exchange, every session is already its own recording. This guide lays out the trade honestly, including when you should walk away and choose WebRTC.
1. Latency: the real cost
Say it plainly first: Synento is slower live than a good WebRTC path. Every frame travels to the relay over a WebSocket from a single region instead of taking the shortest path to each viewer. For a standup, an interview, a support call or a classroom, nobody notices. For rapid-fire conversation across continents, for auctions, for anything where a 300-millisecond delay changes behavior, notice is exactly what they will do.
The honest test is whether your users talk over each other when latency rises. If yes — live debate, negotiation, performance — choose WebRTC and accept the recording machinery that comes with it. If no — and for recorded-first products the answer is usually no — the latency difference buys you an architecture with no media servers, no simulcast tuning, and no separate recording bill.
2. Recording: the real saving
On a WebRTC platform, recording quality fights the live path. Simulcast sends several quality layers so each viewer gets what their network handles; the recorder must pick layers, handle switches mid-call, composite tiles, and encode the result. Adaptive behavior that helps viewers hurts recordings, and reconciling the two is genuinely hard engineering.
The relay model sidesteps it: one stream per track, the same for every viewer and for storage. What the publisher sent is what the recording holds — camera, microphone and screen on separate timestamped tracks. There is nothing to composite live, so there is nothing to get wrong live. Composition still happens, but at replay and export time, from complete data, where a retry costs milliseconds of compute instead of a lost session.
3. Browser support: the other cost
WebCodecs is newer than WebRTC and reaches fewer browsers: Chrome and Edge 94 and up, Safari 16.4 and up with caveats on iOS, Firefox 133 and up. WebRTC reaches older versions of all of them, plus environments where you do not control the browser at all. If your users join from locked-down corporate machines or old phones, that reach matters more than any recording convenience.
Do not detect this yourself. Gate the live path on the SDK's support check and route everyone else to replay and MP4, which play anywhere. The check below is the whole policy.
Test the matrix the way you test everything else here: run the same two-person call on each browser you claim to support and assert on the manifest afterwards. A browser that joins but never publishes shows up as absent tracks, which turns a vague compatibility complaint into a named browser and a named track.
import { SynentoRoom } from '@synento/client'
const support = SynentoRoom.checkSupport()
if (!support.supported) {
// Chrome/Edge 94+, Safari 16.4+, Firefox 133+. Older browsers get the
// replay and MP4 path instead of a broken live call.
showFallback(`Live calls need a recent browser: ${support.reason}`)
throw new Error(support.reason)
}
const room = new SynentoRoom({ getToken, userId: 'alice' })
await room.connect()4. The decision, as a checklist
Choose the WebCodecs relay when the recording is the product: review pipelines, async video, research, support QA. Choose WebRTC when the live moment is the product, or when any of these are hard requirements.
- Sub-second latency between participants is a product requirement, not a nice-to-have.
- You must support browsers older than the WebCodecs floor, or environments without WebCodecs at all.
- Your workload is large-scale live streaming with per-viewer quality switching — simulcast and SVC territory.
- You must self-host or fork the media core, for data control or unit economics at scale.
- PSTN dial-in or SIP interconnect is core to the product, not an edge case.
5. What you stop operating
The relay trade is also an operations trade. There are no media servers to size, no SFU clusters to keep balanced across regions, no simulcast policy to tune per network, no recording fleet with its own autoscaling and its own 2am pages. Capacity planning becomes arithmetic on participant-minutes, and the failure surface is one hosted relay instead of a pipeline of stateful machines.
That simplicity is the point of the single-region design, and its limit. One region means predictable behavior and one place to look when something is wrong; it also means a team spread across continents shares whatever latency their distance to the relay implies. If your users cluster in one region — most recorded-first products do — you will never think about this again. If they do not, measure a real call before committing: the manifest plus a stopwatch beats any architecture diagram.
- Measure a real two-person call between your actual user locations before committing. Geography dominates every other variable.
- Run the same call on the WebRTC platform you are leaving and compare what matters to your product: conversation feel, or recording completeness.
Common questions
Is the video quality worse?
No. Camera video encodes at up to 720p and 30 fps, which matches what recorded-first products actually keep. What you give up is adaptive per-viewer quality switching, not resolution.
What about audio?
Microphone audio travels as its own track on the same clock as video, which is why per-speaker transcription needs no diarisation guesswork. Audio-only sessions are first-class: check for the mic track and skip the camera.
Will the latency gap close?
Relayed transport will always add a hop that peer-to-peer paths skip. The gap matters less every year as networks improve, but if your product needs the lowest possible latency today, choose the WebRTC platform without regret.
We already run on WebRTC. Is migration realistic?
The integration surface is small on purpose: create sessions, mint tokens, publish, read the manifest. The migration guides map Daily, LiveKit and Twilio Video concepts onto Synento's, with before-and-after code.
More guides
- Record a video call without a recording serverThe live streams are the recording. Create a session, publish from the browser, then replay or export — with no recording pipeline to run or pay for separately.
- Verify media actually arrivedGreen dashboards lie: a participant can join while publishing nothing. The session manifest is the ground truth — a track with a non-null start_ts carried real media.
- Add live video to an AI agent via the MCP serverA remote MCP server at api.synento.com/mcp takes your agent from nothing to a verified integration: projects, keys, sessions, tokens, and manifest proof.
- Async video messages and standupsAsync video is mostly replay. Create one session per standup, let the team watch on their own time through expiring links, and export only what must be kept.
- Signed webhooks for recording-ready workflowsWebhooks tell your pipeline when the recording is ready. Verify the HMAC signature on every delivery, then fan out to transcription, review or delivery.
- Restricted keys and short-lived connection tokensTwo credentials, two jobs. A restricted key identifies your server to the API; a connection token admits one participant to one session for about an hour.
Give your agent a video platform it can verify.
Sign up, point your agent at llms.txt, and have a recorded call running before lunch.