ByteVancer
Real-Time Web

WebRTC Guide, Part 3: WHIP, E2EE, MoQ, Security and Debugging in 2026

WebRTC in 2026: WHIP (RFC 9725) and WHEP, SFrame E2EE, WebRTC vs WebSocket, LL-HLS and MoQ, IP leaks and mDNS, libwebrtc CVEs, and debugging with getStats.

By · Software Engineer · Published · 7 min read

After the basics (Part 1) and the internals (Part 2): where WebRTC stands as of 30 Oct 2026, what competes with it, and how to secure and debug it.

TL;DR

  • WHIP (RFC 9725) ingests with one HTTP POST; WHEP (playback) is still a draft.
  • SFrame plus Encoded Transform: E2EE an SFU can't read.
  • MoQ has no RFC yet.
  • Two WebRTC CVEs are in CISA's KEV catalog. Keep browsers updated.

WHIP and WHEP: WebRTC over plain HTTP

WHIP (RFC 9725, March 2025, Standards Track) sends the SDP offer in an HTTP POST and returns the answer in a 201 Created, so an encoder can publish into a WebRTC server without custom signaling. WHEP, the playback twin, is not an RFC: draft-ietf-wish-whep-05 (11 Oct 2026) sits at "AD Evaluation::Revised I-D Needed".

WHIP ingest in four steps
  1. 01

    Offer

    Encoder creates an SDP offer.

  2. 02

    POST

    Offer goes to the WHIP endpoint.

  3. 03

    201 Created

    Answer SDP in the response.

  4. 04

    Media

    ICE and DTLS-SRTP as usual.

End-to-end encryption through an SFU

SFrame (RFC 9605, August 2024) encrypts media frames so an SFU can read the metadata it needs but cannot decrypt. In the browser, WebRTC Encoded Transform (W3C Working Draft) runs a worker between encoder and packetizer via RTCRtpScriptTransform. MDN marks it Baseline 2025 (Chrome 141, Firefox 117, Safari 15.4).

Discord's DAVE (2 Sep 2025) uses MLS plus Encoded Transform in browsers, and Discord says it covers "tens of millions of calls … every single day".

WebRTC vs WebSocket vs LL-HLS vs MoQ

OptionRuns overStatusFit
WebRTCSRTP over UDP; data over SCTP/DTLSW3C Rec + RFCsTwo-way, real-time
WebSocketMessage framing over TCPRFC 6455 (2011)App messages
LL-HLSHTTPApple"less than two seconds" at scale
WebTransportHTTP/3 datagrams or HTTP/2W3C CR SnapshotCustom transport
MoQQUIC / WebTransportIETF drafts, no RFCLow-latency ingest + distribution
Specs and Apple WWDC19 session 502. The latency figure is Apple's, for LL-HLS.

Apple puts regular HLS (6-second segments) in "the 12-second region". MoQ aims to request publication of moq-transport (draft 22) in December 2026. WebCodecs is a W3C Working Draft (Chrome M94).

WebRTC, WebSocket, LL-HLS or MoQ?
  1. 01Do people talk to each other live?

    YES → WebRTCNO ↓

  2. 02Only text or app messages via a server?

    YES → WebSocketNO ↓

  3. 03One-to-many video, 1–2 s delay is fine?

    YES → LL-HLSNO ↓

  4. 04Happy to build on unfinished drafts?

    YES → Prototype on MoQNO ↓

  5. WebRTC; measure on real networks

Privacy: IP leaks, mDNS and relay-only

RFC 8826: "it MUST NOT be possible for arbitrary sites to initiate calls to arbitrary locations without user consent". The W3C spec warns that ICE candidates "can reveal … location, local network topology". RFC 8828 defines four IP-handling modes: "In cases where user consent has not been obtained, Mode 2 SHOULD be used."

Since Chrome 76, local IPs hide behind mDNS names, except on sites with camera or mic permission. The mDNS draft expired without becoming an RFC. To hide IPs from the other peer, force relay-only:

Placeholder credentials. Every byte now goes through your TURN server.
const pc = new RTCPeerConnection({
  iceServers: [{ urls: 'turn:turn.example.com', username: 'USER', credential: 'PASS' }],
  iceTransportPolicy: 'relay',
});

libwebrtc CVEs: keep the browser updated

CVEBugFixed in Chrome
CVE-2022-2294Heap overflow (KEV, added 25 Aug 2022; severity: see CVE.org)See CVE.org
CVE-2023-7024Heap overflow (KEV, added 2 Jan 2024)120.0.6099.129
CVE-2024-5493Heap overflow125.0.6422.141
CVE-2024-10488Use-after-free130.0.6723.92
CVE-2025-7657Use-after-free138.0.7204.157
CVE-2025-10501Use-after-free140.0.7339.185
CVE-2026-4444Stack overflow146.0.7680.153
CVE-2026-7336Use-after-free147.0.7727.138
CVE-2026-17951Heap overflow (Low)151.0.7922.72
CVE.org and Chrome Releases. Severity High unless noted. KEV = CISA Known Exploited Vulnerabilities catalog.

Only CVE-2023-7024 and CVE-2022-2294 are in the KEV catalog. Browsers auto-update; native apps that bundle libwebrtc must ship fixes themselves.

What Chrome has planned

  • Removing legacy createDTMFSender(), targeted for Chrome 160.
  • Local Network Access restrictions for WebRTC, with a permission prompt (no milestone).
  • Faster SCTP negotiation, saving "up to two network round trips" (no milestone).
  • Deprecating legacy kSVC.

Testing and debugging WebRTC

  • Start from the official WebRTC samples and adapter.js.
  • Inspect calls in chrome://webrtc-internals; in code, getStats() returns an RTCStatsReport (WebRTC-Stats: W3C Candidate Recommendation Draft).
  • Automate with fake media:
Flags and prefs from webrtc.org/getting-started/testing.
# Chrome
chrome --headless --use-fake-ui-for-media-stream \
  --use-file-for-fake-video-capture=path/to/video
# Firefox prefs
media.navigator.streams.fake = true
media.navigator.permission.disabled = true

WHIP ingest, E2EE or hardened TURN for a product? That's web development work we take on.

The whole series

  1. Part 1: What WebRTC is and how a call connects
  2. Part 2: Encryption, codecs, and SFU vs MCU vs mesh
  3. Part 3: WHIP, E2EE, MoQ, security and debugging (this post)
FAQ

Questions, answered

WHIP (RFC 9725) publishes WebRTC media via an HTTP POST of the SDP offer, answered with 201 Created. WHEP does the same for playback but is still an IETF draft.

Shipping live video or calls in 2026?

We build WHIP ingest, SFU integration and secure TURN setups into web products. See our web development services.