Widely Available
WebRTC
id: 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 ↗