Widely Available
WebRTC
id: webrtc-stats
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.totalEncodedBytesTarget ↗
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 ↗