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
On this page6 sections
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 iniceServers.configuredIceTransportPolicy- whethericeTransportPolicy === 'relay'(forced relay).configuredIceServersStun- at least onestun:URL was configured.configuredIceServersTurns- at least oneturns:(TLS) URL was configured.configuredIceServersTurnUdp/configuredIceServersTurnTcp- at least oneturn:URL withtransport=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:falsefor normal calls;trueonly 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;
Related features
- Selected candidate pair - what path was actually used, vs what was configured here.
- Connection setup time - whether ICE connected with this configuration, and how long it took.
See also
- rtcstats-server feature extraction - the full feature reference.
- How to query rtcstats-server features - SQL recipes.
- MDN: RTCConfiguration->iceServers