WebRTC Metrics

A comprehensive overview of WebRTC statistics, derived calculations, extracted features, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats

Back
On this page6 sections
connectioniceturnstunconfiguration

Configured ICE servers (feature)

Last updated Applies tortcstats-serverrtcstats.com

Connection-level features recording the STUN/TURN servers and transport policy the application configured on each RTCPeerConnection.

Description

Connection-level features, extracted per RTCPeerConnection into features_connection.

These features capture what the application configured in RTCConfiguration.iceServers, read from the create event, so they reflect intent rather than outcome:

  • configuredIceServers - number of entries in iceServers.
  • configuredIceTransportPolicy - whether iceTransportPolicy === 'relay' (forced relay).
  • configuredIceServersStun - at least one stun: URL was configured.
  • configuredIceServersTurns - at least one turns: (TLS) URL was configured.
  • configuredIceServersTurnUdp / configuredIceServersTurnTcp - at least one turn: URL with transport=udp / transport=tcp.

Extracted by the open-source rtcstats-features package.

Why it matters

These features let you audit your own ICE configuration at scale, across every real session, not just what you think you shipped. Did a config change actually roll out? Are some clients missing TURN entirely (configuredIceServersTurns = false where you expected it)? Is iceTransportPolicy = relay forced somewhere it shouldn't be, inflating your TURN bill? Paired with the selected candidate pair, you can compare what was offered against what was actually used.

Common values

  • configuredIceServers: usually 1 to 3 (a STUN and one or two TURN entries).
  • configuredIceTransportPolicy: false for normal calls; true only where you deliberately force relay.
  • The STUN/TURN booleans should match your intended configuration for the client population.

SQL example

How many connections were configured with any TURN server:

SELECT
  COUNT(*) FILTER (
    WHERE connection.configured_ice_servers_turn_udp
       OR connection.configured_ice_servers_turn_tcp
       OR connection.configured_ice_servers_turns
  ) AS with_turn,
  COUNT(*) AS total
FROM features_connection AS connection;

See also