BASELINE NowYouCanUse.com
Widely Available WebRTC

WebRTC

The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.
Baseline Status: Achieved Widely Available on Jul 15, 2022 (Cross-browser Newly Available since Jan 15, 2020).
Desktop Browser Engine Support
Google Chrome
56
Supported
Mozilla Firefox
22
Supported
Apple Safari
11
Supported
Microsoft Edge
79
Supported
Mobile Browser Engine Support
Chrome Android
56
Firefox Android
24
Safari iOS
11
Specifications and References
MDN Browser Compat Data Keys:
api.RTCCertificate ↗ api.RTCCertificate.expires ↗ api.RTCCertificate.getFingerprints ↗ api.RTCDTMFSender ↗ api.RTCDTMFSender.canInsertDTMF ↗ api.RTCDTMFSender.insertDTMF ↗ api.RTCDTMFSender.toneBuffer ↗ api.RTCDTMFSender.tonechange_event ↗ api.RTCDTMFToneChangeEvent ↗ api.RTCDTMFToneChangeEvent.RTCDTMFToneChangeEvent ↗ api.RTCDTMFToneChangeEvent.tone ↗ api.RTCDataChannel ↗ api.RTCDataChannel.binaryType ↗ api.RTCDataChannel.binaryType.arraybuffer_value ↗ api.RTCDataChannel.binaryType.blob_value ↗ api.RTCDataChannel.bufferedAmount ↗ api.RTCDataChannel.bufferedAmountLowThreshold ↗ api.RTCDataChannel.bufferedamountlow_event ↗ api.RTCDataChannel.close ↗ api.RTCDataChannel.close_event ↗ api.RTCDataChannel.closing_event ↗ api.RTCDataChannel.error_event ↗ api.RTCDataChannel.id ↗ api.RTCDataChannel.label ↗ api.RTCDataChannel.maxPacketLifeTime ↗ api.RTCDataChannel.maxRetransmits ↗ api.RTCDataChannel.message_event ↗ api.RTCDataChannel.negotiated ↗ api.RTCDataChannel.open_event ↗ api.RTCDataChannel.ordered ↗ api.RTCDataChannel.protocol ↗ api.RTCDataChannel.readyState ↗ api.RTCDataChannel.sctp_sdp_21 ↗ api.RTCDataChannel.send ↗ api.RTCDataChannel.transferable ↗ api.RTCDataChannelEvent ↗ api.RTCDataChannelEvent.RTCDataChannelEvent ↗ api.RTCDataChannelEvent.channel ↗ api.RTCDtlsTransport ↗ api.RTCDtlsTransport.error_event ↗ api.RTCDtlsTransport.getRemoteCertificates ↗ api.RTCDtlsTransport.iceTransport ↗ api.RTCDtlsTransport.state ↗ api.RTCDtlsTransport.statechange_event ↗ api.RTCError ↗ api.RTCError.RTCError ↗ api.RTCError.errorDetail ↗ api.RTCError.receivedAlert ↗ api.RTCError.sctpCauseCode ↗ api.RTCError.sdpLineNumber ↗ api.RTCError.sentAlert ↗ api.RTCErrorEvent ↗ api.RTCErrorEvent.RTCErrorEvent ↗ api.RTCErrorEvent.error ↗ api.RTCIceCandidate ↗ api.RTCIceCandidate.RTCIceCandidate ↗ api.RTCIceCandidate.address ↗ api.RTCIceCandidate.candidate ↗ api.RTCIceCandidate.component ↗ api.RTCIceCandidate.foundation ↗ api.RTCIceCandidate.port ↗ api.RTCIceCandidate.priority ↗ api.RTCIceCandidate.protocol ↗ api.RTCIceCandidate.relatedAddress ↗ api.RTCIceCandidate.relatedPort ↗ api.RTCIceCandidate.relayProtocol ↗ api.RTCIceCandidate.sdpMLineIndex ↗ api.RTCIceCandidate.sdpMid ↗ api.RTCIceCandidate.tcpType ↗ api.RTCIceCandidate.toJSON ↗ api.RTCIceCandidate.type ↗ api.RTCIceCandidate.url ↗ api.RTCIceCandidate.usernameFragment ↗ api.RTCIceTransport ↗ api.RTCIceTransport.gatheringState ↗ api.RTCIceTransport.gatheringstatechange_event ↗ api.RTCIceTransport.getLocalCandidates ↗ api.RTCIceTransport.getLocalParameters ↗ api.RTCIceTransport.getRemoteCandidates ↗ api.RTCIceTransport.getRemoteParameters ↗ api.RTCIceTransport.getSelectedCandidatePair ↗ api.RTCIceTransport.role ↗ api.RTCIceTransport.selectedcandidatepairchange_event ↗ api.RTCIceTransport.state ↗ api.RTCIceTransport.statechange_event ↗ api.RTCPeerConnection ↗ api.RTCPeerConnection.RTCPeerConnection ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_bundlePolicy_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_certificates_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceCandidatePoolSize_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.credential_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.urls_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.username_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_iceTransportPolicy_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_peerIdentity_parameter ↗ api.RTCPeerConnection.RTCPeerConnection.configuration_rtcpMuxPolicy_parameter ↗ api.RTCPeerConnection.addIceCandidate ↗ api.RTCPeerConnection.addIceCandidate.returns_promise ↗ api.RTCPeerConnection.addTrack ↗ api.RTCPeerConnection.addTransceiver ↗ api.RTCPeerConnection.addTransceiver.init_direction_parameter ↗ api.RTCPeerConnection.addTransceiver.init_sendEncodings_parameter ↗ api.RTCPeerConnection.addTransceiver.init_streams_parameter ↗ api.RTCPeerConnection.canTrickleIceCandidates ↗ api.RTCPeerConnection.close ↗ api.RTCPeerConnection.connectionState ↗ api.RTCPeerConnection.connectionstatechange_event ↗ api.RTCPeerConnection.createAnswer ↗ api.RTCPeerConnection.createAnswer.returns_promise ↗ api.RTCPeerConnection.createDataChannel ↗ api.RTCPeerConnection.createOffer ↗ api.RTCPeerConnection.createOffer.returns_promise ↗ api.RTCPeerConnection.currentLocalDescription ↗ api.RTCPeerConnection.currentRemoteDescription ↗ api.RTCPeerConnection.datachannel_event ↗ api.RTCPeerConnection.generateCertificate_static ↗ api.RTCPeerConnection.getConfiguration ↗ api.RTCPeerConnection.getReceivers ↗ api.RTCPeerConnection.getReceivers.stopped_transceivers_removed ↗ api.RTCPeerConnection.getSenders ↗ api.RTCPeerConnection.getSenders.stopped_transceivers_removed ↗ api.RTCPeerConnection.getTransceivers ↗ api.RTCPeerConnection.getTransceivers.stopped_transceivers_removed ↗ api.RTCPeerConnection.iceConnectionState ↗ api.RTCPeerConnection.iceGatheringState ↗ api.RTCPeerConnection.icecandidate_event ↗ api.RTCPeerConnection.icecandidateerror_event ↗ api.RTCPeerConnection.iceconnectionstatechange_event ↗ api.RTCPeerConnection.icegatheringstatechange_event ↗ api.RTCPeerConnection.localDescription ↗ api.RTCPeerConnection.negotiationneeded_event ↗ api.RTCPeerConnection.pendingLocalDescription ↗ api.RTCPeerConnection.pendingRemoteDescription ↗ api.RTCPeerConnection.remoteDescription ↗ api.RTCPeerConnection.removeTrack ↗ api.RTCPeerConnection.restartIce ↗ api.RTCPeerConnection.setConfiguration ↗ api.RTCPeerConnection.setLocalDescription ↗ api.RTCPeerConnection.setLocalDescription.description_parameter_optional ↗ api.RTCPeerConnection.setLocalDescription.returns_promise ↗ api.RTCPeerConnection.setRemoteDescription ↗ api.RTCPeerConnection.setRemoteDescription.implicit_rollback ↗ api.RTCPeerConnection.setRemoteDescription.returns_promise ↗ api.RTCPeerConnection.signalingState ↗ api.RTCPeerConnection.signalingstatechange_event ↗ api.RTCPeerConnection.track_event ↗ api.RTCPeerConnectionIceErrorEvent ↗ api.RTCPeerConnectionIceErrorEvent.RTCPeerConnectionIceErrorEvent ↗ api.RTCPeerConnectionIceErrorEvent.address ↗ api.RTCPeerConnectionIceErrorEvent.errorCode ↗ api.RTCPeerConnectionIceErrorEvent.errorText ↗ api.RTCPeerConnectionIceErrorEvent.port ↗ api.RTCPeerConnectionIceErrorEvent.url ↗ api.RTCPeerConnectionIceEvent ↗ api.RTCPeerConnectionIceEvent.RTCPeerConnectionIceEvent ↗ api.RTCPeerConnectionIceEvent.candidate ↗ api.RTCRtpReceiver ↗ api.RTCRtpReceiver.createEncodedStreams ↗ api.RTCRtpReceiver.getCapabilities_static ↗ api.RTCRtpReceiver.getContributingSources ↗ api.RTCRtpReceiver.getContributingSources.audioLevel ↗ api.RTCRtpReceiver.getContributingSources.audio_tracks_supported ↗ api.RTCRtpReceiver.getContributingSources.rtpTimestamp ↗ api.RTCRtpReceiver.getContributingSources.source ↗ api.RTCRtpReceiver.getContributingSources.timestamp ↗ api.RTCRtpReceiver.getContributingSources.video_tracks_supported ↗ api.RTCRtpReceiver.getParameters ↗ api.RTCRtpReceiver.getParameters.return_object_property_codecs ↗ api.RTCRtpReceiver.getParameters.return_object_property_headerExtensions ↗ api.RTCRtpReceiver.getParameters.return_object_property_rtcp ↗ api.RTCRtpReceiver.getSynchronizationSources ↗ api.RTCRtpReceiver.getSynchronizationSources.audio_tracks_supported ↗ api.RTCRtpReceiver.getSynchronizationSources.video_tracks_supported ↗ api.RTCRtpReceiver.jitterBufferTarget ↗ api.RTCRtpReceiver.track ↗ api.RTCRtpReceiver.transport ↗ api.RTCRtpSender ↗ api.RTCRtpSender.createEncodedStreams ↗ api.RTCRtpSender.dtmf ↗ api.RTCRtpSender.getCapabilities_static ↗ api.RTCRtpSender.getParameters ↗ api.RTCRtpSender.getParameters.return_object_property_codecs ↗ api.RTCRtpSender.getParameters.return_object_property_encodings ↗ api.RTCRtpSender.getParameters.return_object_property_headerExtensions ↗ api.RTCRtpSender.getParameters.return_object_property_rtcp ↗ api.RTCRtpSender.getParameters.return_object_property_transactionId ↗ api.RTCRtpSender.replaceTrack ↗ api.RTCRtpSender.setParameters ↗ api.RTCRtpSender.setParameters.parameters_codecs_parameter ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter.active ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxBitrate ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxFramerate ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter.rid ↗ api.RTCRtpSender.setParameters.parameters_encodings_parameter.scaleResolutionDownBy ↗ api.RTCRtpSender.setParameters.parameters_headerExtensions_parameter ↗ api.RTCRtpSender.setParameters.parameters_rtcp_parameter ↗ api.RTCRtpSender.setParameters.parameters_transactionId_parameter ↗ api.RTCRtpSender.setStreams ↗ api.RTCRtpSender.track ↗ api.RTCRtpSender.transport ↗ api.RTCRtpTransceiver ↗ api.RTCRtpTransceiver.currentDirection ↗ api.RTCRtpTransceiver.currentDirection.stopped_value ↗ api.RTCRtpTransceiver.direction ↗ api.RTCRtpTransceiver.direction.value_stopped ↗ api.RTCRtpTransceiver.getHeaderExtensionsToNegotiate ↗ api.RTCRtpTransceiver.getNegotiatedHeaderExtensions ↗ api.RTCRtpTransceiver.mid ↗ api.RTCRtpTransceiver.receiver ↗ api.RTCRtpTransceiver.sender ↗ api.RTCRtpTransceiver.setCodecPreferences ↗ api.RTCRtpTransceiver.setHeaderExtensionsToNegotiate ↗ api.RTCRtpTransceiver.stop ↗ api.RTCSessionDescription ↗ api.RTCSessionDescription.sdp ↗ api.RTCSessionDescription.toJSON ↗ api.RTCSessionDescription.type ↗ api.RTCTrackEvent ↗ api.RTCTrackEvent.RTCTrackEvent ↗ api.RTCTrackEvent.receiver ↗ api.RTCTrackEvent.streams ↗ api.RTCTrackEvent.track ↗ api.RTCTrackEvent.transceiver ↗
id: webrtc