RTCIceCandidatePairStats: selected property

Non-standard: This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The non-standard, Firefox-specific RTCIceCandidatePairStats property selected indicates whether or not the candidate pair described by the object is the one currently being used to communicate with the remote peer.




A Firefox-specific Boolean value which is true if the candidate pair described by this object is the one currently in use.

In any other browser, you can determine the selected candidate pair by looking for a stats object of type transport, which is an RTCTransportStats object. That object's selectedCandidatePairId property indicates whether or not the specified transport is the one being used.


The function shown in this example identifies the currently-selected candidate pair from a statistics report by first iterating over each report, looking for a transport report; when one is found, that transport's selectedCandidatePairId is used to get the RTCIceCandidatePair describing the connection.

If that fails, then the second section iterates over the reports, looking for a candidate-pair record whose Firefox-specific selected property is true. This candidate pair is then returned as the currently-selected one.

function getCurrentCandidatePair(statsResults) {
  statsResults.forEach((report) => {
    if (report.type === "transport") {
      currentPair = statsResults.get(report.selectedCandidatePairId);

  if (!currentPair) {
    statsResults.forEach((report) => {
      if (report.type === "candidate-pair" && report.selected) {
        currentPair = report;

  return currentPair;


Not part of any specification. This property is unique to Firefox.

Browser compatibility

BCD tables only load in the browser