BASELINE NowYouCanUse.com
Widely Available WebRTC

WebRTC statistics

The RTCPeerConnection.getStats(), RTCRtpSender.getStats(), and RTCRtpReceiver.getStats() methods return detailed information about the status, performance, network, and media for a given WebRTC connection.
Baseline Status: Achieved Widely Available on Jul 15, 2022 (Cross-browser Newly Available since Jan 15, 2020).
Desktop Browser Engine Support
Google Chrome
58
Supported
Mozilla Firefox
44
Supported
Apple Safari
11
Supported
Microsoft Edge
79
Supported
Mobile Browser Engine Support
Chrome Android
58
Firefox Android
44
Safari iOS
11
Specifications and References
MDN Browser Compat Data Keys:
api.RTCPeerConnection.getStats ↗ api.RTCPeerConnection.getStats.returns_promise ↗ api.RTCPeerConnection.getStats.selector_parameter ↗ api.RTCRtpReceiver.getStats ↗ api.RTCRtpSender.getStats ↗ api.RTCStatsReport ↗ api.RTCStatsReport.@@iterator ↗ api.RTCStatsReport.entries ↗ api.RTCStatsReport.forEach ↗ api.RTCStatsReport.get ↗ api.RTCStatsReport.has ↗ api.RTCStatsReport.keys ↗ api.RTCStatsReport.size ↗ api.RTCStatsReport.type_candidate-pair ↗ api.RTCStatsReport.type_candidate-pair.availableOutgoingBitrate ↗ api.RTCStatsReport.type_candidate-pair.bytesDiscardedOnSend ↗ api.RTCStatsReport.type_candidate-pair.bytesReceived ↗ api.RTCStatsReport.type_candidate-pair.bytesSent ↗ api.RTCStatsReport.type_candidate-pair.consentRequestsSent ↗ api.RTCStatsReport.type_candidate-pair.currentRoundTripTime ↗ api.RTCStatsReport.type_candidate-pair.id ↗ api.RTCStatsReport.type_candidate-pair.lastPacketReceivedTimestamp ↗ api.RTCStatsReport.type_candidate-pair.lastPacketSentTimestamp ↗ api.RTCStatsReport.type_candidate-pair.localCandidateId ↗ api.RTCStatsReport.type_candidate-pair.nominated ↗ api.RTCStatsReport.type_candidate-pair.packetsDiscardedOnSend ↗ api.RTCStatsReport.type_candidate-pair.packetsReceived ↗ api.RTCStatsReport.type_candidate-pair.packetsSent ↗ api.RTCStatsReport.type_candidate-pair.remoteCandidateId ↗ api.RTCStatsReport.type_candidate-pair.requestsReceived ↗ api.RTCStatsReport.type_candidate-pair.requestsSent ↗ api.RTCStatsReport.type_candidate-pair.responsesReceived ↗ api.RTCStatsReport.type_candidate-pair.responsesSent ↗ api.RTCStatsReport.type_candidate-pair.state ↗ api.RTCStatsReport.type_candidate-pair.timestamp ↗ api.RTCStatsReport.type_candidate-pair.totalRoundTripTime ↗ api.RTCStatsReport.type_candidate-pair.transportId ↗ api.RTCStatsReport.type_candidate-pair.type ↗ api.RTCStatsReport.type_certificate ↗ api.RTCStatsReport.type_certificate.base64Certificate ↗ api.RTCStatsReport.type_certificate.fingerprint ↗ api.RTCStatsReport.type_certificate.fingerprintAlgorithm ↗ api.RTCStatsReport.type_certificate.id ↗ api.RTCStatsReport.type_certificate.issuerCertificateId ↗ api.RTCStatsReport.type_certificate.timestamp ↗ api.RTCStatsReport.type_certificate.type ↗ api.RTCStatsReport.type_codec ↗ api.RTCStatsReport.type_codec.channels ↗ api.RTCStatsReport.type_codec.clockRate ↗ api.RTCStatsReport.type_codec.id ↗ api.RTCStatsReport.type_codec.mimeType ↗ api.RTCStatsReport.type_codec.payloadType ↗ api.RTCStatsReport.type_codec.sdpFmtpLine ↗ api.RTCStatsReport.type_codec.timestamp ↗ api.RTCStatsReport.type_codec.transportId ↗ api.RTCStatsReport.type_codec.type ↗ api.RTCStatsReport.type_data-channel ↗ api.RTCStatsReport.type_data-channel.bytesReceived ↗ api.RTCStatsReport.type_data-channel.bytesSent ↗ api.RTCStatsReport.type_data-channel.dataChannelIdentifier ↗ api.RTCStatsReport.type_data-channel.id ↗ api.RTCStatsReport.type_data-channel.label ↗ api.RTCStatsReport.type_data-channel.messagesReceived ↗ api.RTCStatsReport.type_data-channel.messagesSent ↗ api.RTCStatsReport.type_data-channel.protocol ↗ api.RTCStatsReport.type_data-channel.state ↗ api.RTCStatsReport.type_data-channel.timestamp ↗ api.RTCStatsReport.type_data-channel.type ↗ api.RTCStatsReport.type_inbound-rtp ↗ api.RTCStatsReport.type_inbound-rtp.audioLevel ↗ api.RTCStatsReport.type_inbound-rtp.bytesReceived ↗ api.RTCStatsReport.type_inbound-rtp.codecId ↗ api.RTCStatsReport.type_inbound-rtp.concealedSamples ↗ api.RTCStatsReport.type_inbound-rtp.concealmentEvents ↗ api.RTCStatsReport.type_inbound-rtp.estimatedPlayoutTimestamp ↗ api.RTCStatsReport.type_inbound-rtp.fecPacketsDiscarded ↗ api.RTCStatsReport.type_inbound-rtp.fecPacketsReceived ↗ api.RTCStatsReport.type_inbound-rtp.frameHeight ↗ api.RTCStatsReport.type_inbound-rtp.frameWidth ↗ api.RTCStatsReport.type_inbound-rtp.framesAssembledFromMultiplePackets ↗ api.RTCStatsReport.type_inbound-rtp.framesDecoded ↗ api.RTCStatsReport.type_inbound-rtp.framesPerSecond ↗ api.RTCStatsReport.type_inbound-rtp.framesReceived ↗ api.RTCStatsReport.type_inbound-rtp.freezeCount ↗ api.RTCStatsReport.type_inbound-rtp.headerBytesReceived ↗ api.RTCStatsReport.type_inbound-rtp.id ↗ api.RTCStatsReport.type_inbound-rtp.insertedSamplesForDeceleration ↗ api.RTCStatsReport.type_inbound-rtp.jitter ↗ api.RTCStatsReport.type_inbound-rtp.jitterBufferDelay ↗ api.RTCStatsReport.type_inbound-rtp.jitterBufferEmittedCount ↗ api.RTCStatsReport.type_inbound-rtp.jitterBufferMinimumDelay ↗ api.RTCStatsReport.type_inbound-rtp.jitterBufferTargetDelay ↗ api.RTCStatsReport.type_inbound-rtp.keyFramesDecoded ↗ api.RTCStatsReport.type_inbound-rtp.kind ↗ api.RTCStatsReport.type_inbound-rtp.lastPacketReceivedTimestamp ↗ api.RTCStatsReport.type_inbound-rtp.mid ↗ api.RTCStatsReport.type_inbound-rtp.nackCount ↗ api.RTCStatsReport.type_inbound-rtp.packetsDiscarded ↗ api.RTCStatsReport.type_inbound-rtp.packetsLost ↗ api.RTCStatsReport.type_inbound-rtp.packetsReceived ↗ api.RTCStatsReport.type_inbound-rtp.pauseCount ↗ api.RTCStatsReport.type_inbound-rtp.playoutId ↗ api.RTCStatsReport.type_inbound-rtp.qpSum ↗ api.RTCStatsReport.type_inbound-rtp.remoteId ↗ api.RTCStatsReport.type_inbound-rtp.removedSamplesForAcceleration ↗ api.RTCStatsReport.type_inbound-rtp.silentConcealedSamples ↗ api.RTCStatsReport.type_inbound-rtp.ssrc ↗ api.RTCStatsReport.type_inbound-rtp.timestamp ↗ api.RTCStatsReport.type_inbound-rtp.totalAssemblyTime ↗ api.RTCStatsReport.type_inbound-rtp.totalAudioEnergy ↗ api.RTCStatsReport.type_inbound-rtp.totalDecodeTime ↗ api.RTCStatsReport.type_inbound-rtp.totalFreezesDuration ↗ api.RTCStatsReport.type_inbound-rtp.totalInterFrameDelay ↗ api.RTCStatsReport.type_inbound-rtp.totalPausesDuration ↗ api.RTCStatsReport.type_inbound-rtp.totalProcessingDelay ↗ api.RTCStatsReport.type_inbound-rtp.totalSamplesDuration ↗ api.RTCStatsReport.type_inbound-rtp.totalSamplesReceived ↗ api.RTCStatsReport.type_inbound-rtp.totalSquaredInterFrameDelay ↗ api.RTCStatsReport.type_inbound-rtp.trackIdentifier ↗ api.RTCStatsReport.type_inbound-rtp.transportId ↗ api.RTCStatsReport.type_inbound-rtp.type ↗ api.RTCStatsReport.type_local-candidate ↗ api.RTCStatsReport.type_local-candidate.address ↗ api.RTCStatsReport.type_local-candidate.candidateType ↗ api.RTCStatsReport.type_local-candidate.foundation ↗ api.RTCStatsReport.type_local-candidate.id ↗ api.RTCStatsReport.type_local-candidate.port ↗ api.RTCStatsReport.type_local-candidate.priority ↗ api.RTCStatsReport.type_local-candidate.protocol ↗ api.RTCStatsReport.type_local-candidate.timestamp ↗ api.RTCStatsReport.type_local-candidate.transportId ↗ api.RTCStatsReport.type_local-candidate.type ↗ api.RTCStatsReport.type_local-candidate.usernameFragment ↗ api.RTCStatsReport.type_media-playout ↗ api.RTCStatsReport.type_media-playout.id ↗ api.RTCStatsReport.type_media-playout.kind ↗ api.RTCStatsReport.type_media-playout.synthesizedSamplesDuration ↗ api.RTCStatsReport.type_media-playout.synthesizedSamplesEvents ↗ api.RTCStatsReport.type_media-playout.timestamp ↗ api.RTCStatsReport.type_media-playout.totalPlayoutDelay ↗ api.RTCStatsReport.type_media-playout.totalSamplesCount ↗ api.RTCStatsReport.type_media-playout.totalSamplesDuration ↗ api.RTCStatsReport.type_media-playout.type ↗ api.RTCStatsReport.type_media-source ↗ api.RTCStatsReport.type_media-source.audioLevel ↗ api.RTCStatsReport.type_media-source.frames ↗ api.RTCStatsReport.type_media-source.framesPerSecond ↗ api.RTCStatsReport.type_media-source.height ↗ api.RTCStatsReport.type_media-source.id ↗ api.RTCStatsReport.type_media-source.kind ↗ api.RTCStatsReport.type_media-source.timestamp ↗ api.RTCStatsReport.type_media-source.totalAudioEnergy ↗ api.RTCStatsReport.type_media-source.totalSamplesDuration ↗ api.RTCStatsReport.type_media-source.trackIdentifier ↗ api.RTCStatsReport.type_media-source.type ↗ api.RTCStatsReport.type_media-source.width ↗ api.RTCStatsReport.type_outbound-rtp ↗ api.RTCStatsReport.type_outbound-rtp.active ↗ api.RTCStatsReport.type_outbound-rtp.bytesSent ↗ api.RTCStatsReport.type_outbound-rtp.codecId ↗ api.RTCStatsReport.type_outbound-rtp.frameHeight ↗ api.RTCStatsReport.type_outbound-rtp.frameWidth ↗ api.RTCStatsReport.type_outbound-rtp.framesEncoded ↗ api.RTCStatsReport.type_outbound-rtp.framesPerSecond ↗ api.RTCStatsReport.type_outbound-rtp.framesSent ↗ api.RTCStatsReport.type_outbound-rtp.headerBytesSent ↗ api.RTCStatsReport.type_outbound-rtp.id ↗ api.RTCStatsReport.type_outbound-rtp.keyFramesEncoded ↗ api.RTCStatsReport.type_outbound-rtp.kind ↗ api.RTCStatsReport.type_outbound-rtp.mediaSourceId ↗ api.RTCStatsReport.type_outbound-rtp.mid ↗ api.RTCStatsReport.type_outbound-rtp.nackCount ↗ api.RTCStatsReport.type_outbound-rtp.packetsSent ↗ api.RTCStatsReport.type_outbound-rtp.qpSum ↗ api.RTCStatsReport.type_outbound-rtp.qualityLimitationDurations ↗ api.RTCStatsReport.type_outbound-rtp.qualityLimitationReason ↗ api.RTCStatsReport.type_outbound-rtp.remoteId ↗ api.RTCStatsReport.type_outbound-rtp.retransmittedBytesSent ↗ api.RTCStatsReport.type_outbound-rtp.retransmittedPacketsSent ↗ api.RTCStatsReport.type_outbound-rtp.rid ↗ api.RTCStatsReport.type_outbound-rtp.scalabilityMode ↗ api.RTCStatsReport.type_outbound-rtp.ssrc ↗ api.RTCStatsReport.type_outbound-rtp.targetBitrate ↗ api.RTCStatsReport.type_outbound-rtp.timestamp ↗ api.RTCStatsReport.type_outbound-rtp.totalEncodeTime ↗ api.RTCStatsReport.type_outbound-rtp.totalPacketSendDelay ↗ api.RTCStatsReport.type_outbound-rtp.transportId ↗ api.RTCStatsReport.type_outbound-rtp.type ↗ api.RTCStatsReport.type_peer-connection ↗ api.RTCStatsReport.type_peer-connection.dataChannelsClosed ↗ api.RTCStatsReport.type_peer-connection.dataChannelsOpened ↗ api.RTCStatsReport.type_peer-connection.id ↗ api.RTCStatsReport.type_peer-connection.timestamp ↗ api.RTCStatsReport.type_peer-connection.type ↗ api.RTCStatsReport.type_remote-candidate ↗ api.RTCStatsReport.type_remote-candidate.address ↗ api.RTCStatsReport.type_remote-candidate.candidateType ↗ api.RTCStatsReport.type_remote-candidate.foundation ↗ api.RTCStatsReport.type_remote-candidate.id ↗ api.RTCStatsReport.type_remote-candidate.port ↗ api.RTCStatsReport.type_remote-candidate.priority ↗ api.RTCStatsReport.type_remote-candidate.protocol ↗ api.RTCStatsReport.type_remote-candidate.timestamp ↗ api.RTCStatsReport.type_remote-candidate.transportId ↗ api.RTCStatsReport.type_remote-candidate.type ↗ api.RTCStatsReport.type_remote-candidate.usernameFragment ↗ api.RTCStatsReport.type_remote-inbound-rtp ↗ api.RTCStatsReport.type_remote-inbound-rtp.codecId ↗ api.RTCStatsReport.type_remote-inbound-rtp.fractionLost ↗ api.RTCStatsReport.type_remote-inbound-rtp.id ↗ api.RTCStatsReport.type_remote-inbound-rtp.jitter ↗ api.RTCStatsReport.type_remote-inbound-rtp.kind ↗ api.RTCStatsReport.type_remote-inbound-rtp.localId ↗ api.RTCStatsReport.type_remote-inbound-rtp.packetsLost ↗ api.RTCStatsReport.type_remote-inbound-rtp.packetsReceived ↗ api.RTCStatsReport.type_remote-inbound-rtp.roundTripTime ↗ api.RTCStatsReport.type_remote-inbound-rtp.roundTripTimeMeasurements ↗ api.RTCStatsReport.type_remote-inbound-rtp.ssrc ↗ api.RTCStatsReport.type_remote-inbound-rtp.timestamp ↗ api.RTCStatsReport.type_remote-inbound-rtp.totalRoundTripTime ↗ api.RTCStatsReport.type_remote-inbound-rtp.transportId ↗ api.RTCStatsReport.type_remote-inbound-rtp.type ↗ api.RTCStatsReport.type_remote-outbound-rtp ↗ api.RTCStatsReport.type_remote-outbound-rtp.bytesSent ↗ api.RTCStatsReport.type_remote-outbound-rtp.codecId ↗ api.RTCStatsReport.type_remote-outbound-rtp.id ↗ api.RTCStatsReport.type_remote-outbound-rtp.kind ↗ api.RTCStatsReport.type_remote-outbound-rtp.localId ↗ api.RTCStatsReport.type_remote-outbound-rtp.packetsSent ↗ api.RTCStatsReport.type_remote-outbound-rtp.remoteTimestamp ↗ api.RTCStatsReport.type_remote-outbound-rtp.reportsSent ↗ api.RTCStatsReport.type_remote-outbound-rtp.roundTripTimeMeasurements ↗ api.RTCStatsReport.type_remote-outbound-rtp.ssrc ↗ api.RTCStatsReport.type_remote-outbound-rtp.timestamp ↗ api.RTCStatsReport.type_remote-outbound-rtp.totalRoundTripTime ↗ api.RTCStatsReport.type_remote-outbound-rtp.transportId ↗ api.RTCStatsReport.type_remote-outbound-rtp.type ↗ api.RTCStatsReport.type_transport ↗ api.RTCStatsReport.type_transport.bytesReceived ↗ api.RTCStatsReport.type_transport.bytesSent ↗ api.RTCStatsReport.type_transport.dtlsCipher ↗ api.RTCStatsReport.type_transport.dtlsRole ↗ api.RTCStatsReport.type_transport.dtlsState ↗ api.RTCStatsReport.type_transport.iceLocalUsernameFragment ↗ api.RTCStatsReport.type_transport.iceRole ↗ api.RTCStatsReport.type_transport.iceState ↗ api.RTCStatsReport.type_transport.id ↗ api.RTCStatsReport.type_transport.localCertificateId ↗ api.RTCStatsReport.type_transport.packetsReceived ↗ api.RTCStatsReport.type_transport.packetsSent ↗ api.RTCStatsReport.type_transport.remoteCertificateId ↗ api.RTCStatsReport.type_transport.selectedCandidatePairChanges ↗ api.RTCStatsReport.type_transport.selectedCandidatePairId ↗ api.RTCStatsReport.type_transport.srtpCipher ↗ api.RTCStatsReport.type_transport.timestamp ↗ api.RTCStatsReport.type_transport.tlsVersion ↗ api.RTCStatsReport.type_transport.type ↗ api.RTCStatsReport.values ↗
id: webrtc-stats