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
clientsessiondevicehardwarefingerprint

Session metadata (feature)

Client-level features describing the device and session context each dump was captured in.

Description

Client-level features, extracted per session into features_client.

These features describe the device and session the dump was captured in. rtcstats-server derives them from the client trace at dump start:

  • startTime - millisecond timestamp of when the dump started.
  • duration - lifetime of the client session in milliseconds.
  • hardwareConcurrency - value of navigator.hardwareConcurrency (logical CPU cores).
  • deviceMemory - value of navigator.deviceMemory (approximate RAM in GB, coarse buckets).
  • screen - screen metadata (dimensions, pixel ratio, color depth) at dump start.
  • window - window metadata (inner dimensions) at dump start.
  • reloadCount - number of page reloads, when the application reports it.

Why it matters

These fields are the device and session fingerprint you cohort quality by. A call that stutters on a two-core, low-memory laptop is a different story from the same symptom on a workstation, so slicing your inbound-RTP or freeze metrics by hardwareConcurrency and deviceMemory separates a genuine regression from an underpowered-device long tail. duration and reloadCount add session shape: very short sessions or repeated reloads often mark users who bounced off a broken join, and screen plus window tell you whether people are on tiny viewports where your layout or encoder settings may not fit.

SQL example

Median session duration split by CPU core count, last 7 days:

SELECT
  client.hardware_concurrency,
  COUNT(*) AS sessions,
  PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY client.duration) AS median_duration_ms
FROM "rtcstats-server" AS server
JOIN features_metadata AS metadata ON metadata.dump_id = server.id
JOIN features_client   AS client   ON client.dump_id   = metadata.id
WHERE server.created_at > NOW() - INTERVAL '7 days'
GROUP BY client.hardware_concurrency
ORDER BY client.hardware_concurrency;

Related features

  • getUserMedia - capture outcomes you can cohort by the same device fields.
  • User agent data - browser, version, and platform for the same session.

See also