coderef

WebRTCBaseline · Widely available

The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jan 15, 2020. Widely available since Jul 15, 2022.

Browser support

DesktopChrome
1–55Not supported
56+Supportedsince Jan 25, 2017
Current: 155
Edge
12–18Not supported
79+Supportedsince Jan 15, 2020
Current: 154
Firefox
1–21Not supported
22+Supportedsince Jun 25, 2013
Current: 157
Safari
1–10.1Not supported
11+Supportedsince Sep 19, 2017
Current: 27
MobileChrome Android
18–55Not supported
56+Supportedsince Feb 1, 2017
Current: 155
Firefox Android
4–23Not supported
24+Supportedsince Sep 17, 2013
Current: 157
Safari iOS
1–10.3Not supported
11+Supportedsince Sep 19, 2017
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: RTCCertificate.

Feature detection

JS · check before using
if ("RTCCertificate" in globalThis) {
  // RTCCertificate is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (225). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
RTCCertificate49794212.1494212.2
RTCCertificate.expires49794212.1494212.2
RTCCertificate.getFingerprints617913812.16113812.2
RTCDTMFSender27795213.1275213.4
RTCDTMFSender.canInsertDTMF277912913.12712913.4
RTCDTMFSender.insertDTMF27795213.1275213.4
RTCDTMFSender.toneBuffer27795213.1275213.4
RTCDTMFSender.tonechange_event27795213.1275213.4
RTCDTMFToneChangeEvent27125213.1275213.4
RTCDTMFToneChangeEvent.RTCDTMFToneChangeEvent27135213.1275213.4
RTCDTMFToneChangeEvent.tone27125213.1275213.4
RTCDataChannel24792211252411
RTCDataChannel.binaryType24792211252411
RTCDataChannel.binaryType.arraybuffer_value24792211252411
RTCDataChannel.binaryType.blob_value12912922111292411
RTCDataChannel.bufferedAmount24792211252411
RTCDataChannel.bufferedAmountLowThreshold46794411464411
RTCDataChannel.bufferedamountlow_event57794411574411
RTCDataChannel.close24792211252411
RTCDataChannel.close_event24792211252411
Show 205 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
RTCDataChannel.closing_event818114415.48114415.4
RTCDataChannel.error_event24792211252411
RTCDataChannel.id30792211302411
RTCDataChannel.label24792211252411
RTCDataChannel.maxPacketLifeTime56796211566211
RTCDataChannel.maxRetransmits30796211306211
RTCDataChannel.message_event24792211252411
RTCDataChannel.negotiated30796811306811
RTCDataChannel.open_event24792211252411
RTCDataChannel.ordered30792211302411
RTCDataChannel.protocol30792211302411
RTCDataChannel.readyState24792211252411
RTCDataChannel.sctp_sdp_21587963✕5863✕
RTCDataChannel.send24792211252411
RTCDataChannel.transferable1301301441513014415
RTCDataChannelEvent24792211252411
RTCDataChannelEvent.RTCDataChannelEvent56792211562411
RTCDataChannelEvent.channel24792211252411
RTCDtlsTransport72128215.4728215.4
RTCDtlsTransport.error_event721215415.47215415.4
RTCDtlsTransport.getRemoteCertificates721215315.47215315.4
RTCDtlsTransport.iceTransport727912515.47212515.4
RTCDtlsTransport.state72128215.4728215.4
RTCDtlsTransport.statechange_event72798215.4728215.4
RTCError747915015.47415015.4
RTCError.RTCError747915015.47415015.4
RTCError.errorDetail747915015.47415015.4
RTCError.receivedAlert747915015.47415015.4
RTCError.sctpCauseCode747915015.47415015.4
RTCError.sdpLineNumber747915015.47415015.4
RTCError.sentAlert747915015.47415015.4
RTCErrorEvent747915015.47415015.4
RTCErrorEvent.RTCErrorEvent747915015.47415015.4
RTCErrorEvent.error747915015.47415015.4
RTCIceCandidate23154411254411
RTCIceCandidate.RTCIceCandidate23154411254411
RTCIceCandidate.address747912614.17412614.5
RTCIceCandidate.candidate23154411254411
RTCIceCandidate.component747912614.17412614.5
RTCIceCandidate.foundation747912614.17412614.5
RTCIceCandidate.port747912614.17412614.5
RTCIceCandidate.priority747912614.17412614.5
RTCIceCandidate.protocol747912614.17412614.5
RTCIceCandidate.relatedAddress747912614.17412614.5
RTCIceCandidate.relatedPort747912614.17412614.5
RTCIceCandidate.relayProtocol124124✕✕124✕✕
RTCIceCandidate.sdpMLineIndex23154411254411
RTCIceCandidate.sdpMid23154411254411
RTCIceCandidate.tcpType747912614.17412614.5
RTCIceCandidate.toJSON43154411434411
RTCIceCandidate.type747912614.17412614.5
RTCIceCandidate.url124124✕✕124✕✕
RTCIceCandidate.usernameFragment74796714.1746714.5
RTCIceTransport7513125117512511
RTCIceTransport.gatheringState7579125117512511
RTCIceTransport.gatheringstatechange_event757912515.47512515.4
RTCIceTransport.getLocalCandidates7579✕✕75✕✕
RTCIceTransport.getLocalParameters7579✕✕75✕✕
RTCIceTransport.getRemoteCandidates7513✕✕75✕✕
RTCIceTransport.getRemoteParameters7513✕✕75✕✕
RTCIceTransport.getSelectedCandidatePair757915416.47515416.4
RTCIceTransport.role7513150✕75150✕
RTCIceTransport.selectedcandidatepairchange_event757915416.47515416.4
RTCIceTransport.state7513125117512511
RTCIceTransport.statechange_event757912515.47512515.4
RTCPeerConnection56154411564411
RTCPeerConnection.RTCPeerConnection56154411564411
RTCPeerConnection.RTCPeerConnection.configuration_bundlePolicy_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_certificates_parameter56794412.1564412.2
RTCPeerConnection.RTCPeerConnection.configuration_iceCandidatePoolSize_parameter5979✕1159✕11
RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.credential_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.urls_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.username_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_iceTransportPolicy_parameter56794411564411
RTCPeerConnection.RTCPeerConnection.configuration_peerIdentity_parameter✕✕44✕✕44✕
RTCPeerConnection.RTCPeerConnection.configuration_rtcpMuxPolicy_parameter577915212.15715212.2
RTCPeerConnection.addIceCandidate56154411564411
RTCPeerConnection.addIceCandidate.returns_promise56794411564411
RTCPeerConnection.addTrack64794411644411
RTCPeerConnection.addTransceiver69795911695911
RTCPeerConnection.addTransceiver.init_direction_parameter69795911695911
RTCPeerConnection.addTransceiver.init_sendEncodings_parameter697911014.16911014.5
RTCPeerConnection.addTransceiver.init_streams_parameter69795912.1695912.2
RTCPeerConnection.canTrickleIceCandidates83834715.4834715.4
RTCPeerConnection.close56154411564411
RTCPeerConnection.connectionState7279113117211311
RTCPeerConnection.connectionstatechange_event7279113117211311
RTCPeerConnection.createAnswer56154411564411
RTCPeerConnection.createAnswer.returns_promise56794411564411
RTCPeerConnection.createDataChannel56794411564411
RTCPeerConnection.createOffer56154411564411
RTCPeerConnection.createOffer.returns_promise56794411564411
RTCPeerConnection.currentLocalDescription70794411704411
RTCPeerConnection.currentRemoteDescription70795711705711
RTCPeerConnection.datachannel_event56794411564411
RTCPeerConnection.generateCertificate_static56794412.1564412.2
RTCPeerConnection.getConfiguration70154411704411
RTCPeerConnection.getReceivers59794411594411
RTCPeerConnection.getReceivers.stopped_transceivers_removed8888118✕88118✕
RTCPeerConnection.getSenders64794411644411
RTCPeerConnection.getSenders.stopped_transceivers_removed8888118✕88118✕
RTCPeerConnection.getTransceivers69795911695911
RTCPeerConnection.getTransceivers.stopped_transceivers_removed8888118✕88118✕
RTCPeerConnection.iceConnectionState56154411564411
RTCPeerConnection.iceGatheringState56154411564411
RTCPeerConnection.icecandidate_event56154411564411
RTCPeerConnection.icecandidateerror_event777915014.17715014.5
RTCPeerConnection.iceconnectionstatechange_event56154411564411
RTCPeerConnection.icegatheringstatechange_event59154411594411
RTCPeerConnection.localDescription56154411564411
RTCPeerConnection.negotiationneeded_event56154411564411
RTCPeerConnection.pendingLocalDescription70794411704411
RTCPeerConnection.pendingRemoteDescription70794411704411
RTCPeerConnection.remoteDescription56154411564411
RTCPeerConnection.removeTrack64794411644411
RTCPeerConnection.restartIce77797014.1777914.5
RTCPeerConnection.setConfiguration56799911569911
RTCPeerConnection.setLocalDescription56154411564411
RTCPeerConnection.setLocalDescription.description_parameter_optional80807514.1807914.5
RTCPeerConnection.setLocalDescription.returns_promise56794411564411
RTCPeerConnection.setRemoteDescription56154411564411
RTCPeerConnection.setRemoteDescription.implicit_rollback80807015.4807915.4
RTCPeerConnection.setRemoteDescription.returns_promise56794411564411
RTCPeerConnection.signalingState56154411564411
RTCPeerConnection.signalingstatechange_event56154411564411
RTCPeerConnection.track_event64794411644411
RTCPeerConnectionIceErrorEvent777915014.17715014.5
RTCPeerConnectionIceErrorEvent.RTCPeerConnectionIceErrorEvent777915014.17715014.5
RTCPeerConnectionIceErrorEvent.address818115014.18115014.5
RTCPeerConnectionIceErrorEvent.errorCode777915014.17715014.5
RTCPeerConnectionIceErrorEvent.errorText777915014.17715014.5
RTCPeerConnectionIceErrorEvent.port818115014.18115014.5
RTCPeerConnectionIceErrorEvent.url777915014.17715014.5
RTCPeerConnectionIceEvent56152412562412
RTCPeerConnectionIceEvent.RTCPeerConnectionIceEvent56152412562412
RTCPeerConnectionIceEvent.candidate56152412562412
RTCRtpReceiver59123411593411
RTCRtpReceiver.createEncodedStreams8686✕✕86✕✕
RTCRtpReceiver.getCapabilities_static591211312.15911312.2
RTCRtpReceiver.getContributingSources59125912.1595912.2
RTCRtpReceiver.getContributingSources.audioLevel73795912.1735912.2
RTCRtpReceiver.getContributingSources.audio_tracks_supported59125912.1595912.2
RTCRtpReceiver.getContributingSources.rtpTimestamp767972✕7679✕
RTCRtpReceiver.getContributingSources.source59795912.1595912.2
RTCRtpReceiver.getContributingSources.timestamp59795912.1595912.2
RTCRtpReceiver.getContributingSources.video_tracks_supported73796812.1736812.2
RTCRtpReceiver.getParameters5979128115912811
RTCRtpReceiver.getParameters.return_object_property_codecs6979128116912811
RTCRtpReceiver.getParameters.return_object_property_headerExtensions6979✕1169✕11
RTCRtpReceiver.getParameters.return_object_property_rtcp6979154156915415
RTCRtpReceiver.getSynchronizationSources73795912.1735912.2
RTCRtpReceiver.getSynchronizationSources.audio_tracks_supported73795912.1735912.2
RTCRtpReceiver.getSynchronizationSources.video_tracks_supported73796812.1736812.2
RTCRtpReceiver.jitterBufferTarget1241241152712411527
RTCRtpReceiver.track59123411593411
RTCRtpReceiver.transport59128215.4598215.4
RTCRtpSender64133411643411
RTCRtpSender.createEncodedStreams8686✕✕86✕✕
RTCRtpSender.dtmf66795213.1665213.4
RTCRtpSender.getCapabilities_static691311312.16911312.2
RTCRtpSender.getParameters68794611684611
RTCRtpSender.getParameters.return_object_property_codecs6979128116912811
RTCRtpSender.getParameters.return_object_property_encodings69794612.1694612.2
RTCRtpSender.getParameters.return_object_property_headerExtensions6979✕1169✕11
RTCRtpSender.getParameters.return_object_property_rtcp6979154156915415
RTCRtpSender.getParameters.return_object_property_transactionId697911012.16911012.2
RTCRtpSender.replaceTrack65793411653411
RTCRtpSender.setParameters68796411686411
RTCRtpSender.setParameters.parameters_codecs_parameter697912812.16912812.2
RTCRtpSender.setParameters.parameters_encodings_parameter69796411696411
RTCRtpSender.setParameters.parameters_encodings_parameter.active697911011.16911011.3
RTCRtpSender.setParameters.parameters_encodings_parameter.maxBitrate69796411696411
RTCRtpSender.setParameters.parameters_encodings_parameter.maxFramerate8181✕1181✕11
RTCRtpSender.setParameters.parameters_encodings_parameter.rid✕✕64✕✕64✕
RTCRtpSender.setParameters.parameters_encodings_parameter.scaleResolutionDownBy74796411746411
RTCRtpSender.setParameters.parameters_headerExtensions_parameter6979✕12.169✕12.2
RTCRtpSender.setParameters.parameters_rtcp_parameter6979154156915415
RTCRtpSender.setParameters.parameters_transactionId_parameter697911012.16911012.2
RTCRtpSender.setStreams767911314.17611314.5
RTCRtpSender.track64133411643411
RTCRtpSender.transport75138215.4758215.4
RTCRtpTransceiver69≤185911695911
RTCRtpTransceiver.currentDirection69795912.1695912.2
RTCRtpTransceiver.currentDirection.stopped_value103103118✕103118✕
RTCRtpTransceiver.direction69795911695911
RTCRtpTransceiver.direction.value_stopped103103118✕103118✕
RTCRtpTransceiver.getHeaderExtensionsToNegotiate117117✕✕117✕✕
RTCRtpTransceiver.getNegotiatedHeaderExtensions117117✕✕117✕✕
RTCRtpTransceiver.mid69795911695911
RTCRtpTransceiver.receiver69795911695911
RTCRtpTransceiver.sender69795911695911
RTCRtpTransceiver.setCodecPreferences767912813.17612813.4
RTCRtpTransceiver.setHeaderExtensionsToNegotiate117117✕✕117✕✕
RTCRtpTransceiver.stop88885911885911
RTCSessionDescription23154411254411
RTCSessionDescription.sdp23154411254411
RTCSessionDescription.toJSON43154411434411
RTCSessionDescription.type23154411254411
RTCTrackEvent56792211562411
RTCTrackEvent.RTCTrackEvent64794611644611
RTCTrackEvent.receiver56793411563411
RTCTrackEvent.streams56792211562411
RTCTrackEvent.track56792211562411
RTCTrackEvent.transceiver69795911695911