demo · v141

RTP Stats Timing

Spin up a loopback peer connection, advance through the negotiation stages, and poll getStats() at each one. The panels show exactly when outbound-rtp entries appear — Chrome 141 aligns this to the spec's "track added" moment.

unstarted track added negotiated
probing RTCPeerConnection…

sender getStats (outbound-rtp expected after track)

receiver getStats (inbound-rtp after answer)

the rule

// Pre-141 (Chromium): outbound-rtp created only after first RTP packet.
// Other browsers: created when the track was added.
// 141 aligns Chromium to the spec — outbound-rtp exists as soon as the
// track is added, even before negotiation completes.
const stats = await pc.getStats();
for (const r of stats.values()) {
  if (r.type === "outbound-rtp") console.log("track exists, ssrc=", r.ssrc);
}

see also