The RTCPeerConnection interface represents a WebRTC connection between the local computer and a remote peer. It provides methods to connect to a remote peer, maintain and monitor the connection, and close the connection once it's no longer needed.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection" target="_top"><rect x="151" y="1" width="170" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="236" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">RTCPeerConnection</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Constructor
RTCPeerConnection()- The
RTCPeerConnection()constructor returns a newly-createdRTCPeerConnection, which represents a connection between the local device and a remote peer. canTrickleIceCandidates- The read-only
RTCPeerConnectionpropertycanTrickleIceCandidatesreturns aBooleanwhich indicates whether or not the remote peer can accept trickled ICE candidates. connectionState- The read-only
connectionStateproperty of theRTCPeerConnectioninterface indicates the current state of the peer connection by returning one of the string values specified by the enumRTCPeerConnectionState. currentLocalDescriptionRead only- The read-only property
RTCPeerConnection.currentLocalDescriptionreturns anRTCSessionDescriptionobject describing the local end of the connection as it was most recently successfully negotiated since the last time theRTCPeerConnectionfinished negotiating and connecting to a remote peer. Also included is a list of any ICE candidates that may already have been generated by the ICE agent since the offer or answer represented by the description was first instantiated. currentRemoteDescriptionRead only- The read-only property
RTCPeerConnection.currentRemoteDescriptionreturns anRTCSessionDescriptionobject describing the remote end of the connection as it was most recently successfully negotiated since the last time theRTCPeerConnectionfinished negotiating and connecting to a remote peer. Also included is a list of any ICE candidates that may already have been generated by the ICE agent since the offer or answer represented by the description was first instantiated. getDefaultIceServers()- The
getDefaultIceServers()method of theRTCPeerConnectioninterface returns an array of objects based on theRTCIceServerdictionary, which indicates what, if any, ICE servers the browser will use by default if none are provided to theRTCPeerConnectionin itsRTCConfiguration. However, browsers are not required to provide any default ICE servers at all. iceConnectionStateRead only- The read-only property
RTCPeerConnection.iceConnectionStatereturns an enum of typeRTCIceConnectionStatewhich state of the ICE agent associated with theRTCPeerConnection. iceGatheringStateRead only- The read-only property
RTCPeerConnection.iceGatheringStatereturns an enum of typeRTCIceGatheringStatethat describes connection's ICE gathering state. This lets you detect, for example, when collection of ICE candidates has finished. localDescriptionRead only- The read-only property
RTCPeerConnection.localDescriptionreturns anRTCSessionDescriptiondescribing the session for the local end of the connection. If it has not yet been set, this is null. peerIdentityRead only- The read-only
RTCPeerConnectionpropertypeerIdentityreturns a JavaScriptPromisethat resolves to anRTCIdentityAssertionwhich contains aDOMStringidentifying the remote peer. pendingLocalDescriptionRead only- The read-only property
RTCPeerConnection.pendingLocalDescriptionreturns anRTCSessionDescriptionobject describing a pending configuration change for the local end of the connection. This does not describe the connection as it currently stands, but as it may exist in the near future. UseRTCPeerConnection.currentLocalDescriptionorRTCPeerConnection.localDescriptionto get the current state of the endpoint. For details on the difference, see Pending and current descriptions in WebRTC connectivity. pendingRemoteDescriptionRead only- The read-only property
RTCPeerConnection.pendingRemoteDescriptionreturns anRTCSessionDescriptionobject describing a pending configuration change for the remote end of the connection. This does not describe the connection as it currently stands, but as it may exist in the near future. UseRTCPeerConnection.currentRemoteDescriptionorRTCPeerConnection.remoteDescriptionto get the current session description for the remote endpoint. For details on the difference, see Pending and current descriptions in WebRTC connectivity. remoteDescriptionRead only- The read-only property
RTCPeerConnection.remoteDescriptionreturns aRTCSessionDescriptiondescribing the session (which includes configuration and media information) for the remote end of the connection. If this hasn't been set yet, this isnull. sctp- The read-only
sctpproperty on theRTCPeerConnectioninterface returns anRTCSctpTransportdescribing the SCTP transport over which SCTP data is being sent and received. If SCTP hasn't been negotiated, this value isnull. signalingStateRead only- The read-only
signalingStateproperty on theRTCPeerConnectioninterface returns one of the string values specified by theRTCSignalingStateenum; these values describe the state of the signaling process on the local end of the connection while connecting or reconnecting to another peer. See Signaling in Lifetime of a WebRTC session for more details about the signaling process. onaddstream- The
RTCPeerConnection.onaddstreamevent handler is a property containing the code to execute when theaddstreamevent, of typeMediaStreamEvent, is received by thisRTCPeerConnection. Such an event is sent when aMediaStreamis added to this connection by the remote peer. The event is sent immediately after the callsetRemoteDescription()and doesn't wait for the result of the SDP negotiation. onconnectionstatechange- The
RTCPeerConnection.onconnectionstatechangeproperty specifies anEventHandlerwhich is called to handle theconnectionstatechangeevent when it occurs on an instance ofRTCPeerConnection. This happens whenever the aggregate state of the connection changes. ondatachannel- The
RTCPeerConnection.ondatachannelproperty is anEventHandlerwhich specifies a function which is called when thedatachannelevent occurs on anRTCPeerConnection. This event, of typeRTCDataChannelEvent, is sent when anRTCDataChannelis added to the connection by the remote peer callingcreateDataChannel(). onicecandidate- The
RTCPeerConnectionpropertyonicecandidateproperty is anEventHandlerwhich specifies a function to be called when theicecandidateevent occurs on anRTCPeerConnectioninstance. This happens whenever the local ICE agent needs to deliver a message to the other peer through the signaling server. oniceconnectionstatechange- The
RTCPeerConnection.oniceconnectionstatechangeproperty is an event handler which specifies a function to be called when theiceconnectionstatechangeevent is fired on anRTCPeerConnectioninstance. This happens when the state of the connection's ICE agent, as represented by theiceConnectionStateproperty, changes. onicegatheringstatechange- The
RTCPeerConnection.onicegatheringstatechangeproperty is anEventHandlerwhich specifies a function to be called when theicegatheringstatechangeevent is sent to anRTCPeerConnectioninstance. This happens when the ICE gathering state—that is, whether or not the ICE agent is actively gathering candidates—changes. onidentityresult- The
RTCPeerConnection.onidentityresultevent handler is a property containing the code to execute when theidentityresultevent, of typeRTCIdentityEvent, is received by thisRTCPeerConnection. Such an event is sent when an identity assertion is generated, viagetIdentityAssertion()or during the creation of an offer or an answer. onidpassertionerror- The
RTCPeerConnection.onidpassertionerrorevent handler is a property containing the code to execute whent theidpassertionerrorevent, of typeRTCIdentityErrorEvent, is received by thisRTCPeerConnection. Such an event is sent when the associated identity provider (IdP) encounters an error while generating an identity assertion. onidpvalidationerror- The
RTCPeerConnection.onidpvalidationerrorevent handler is a property containing the code to execute whent theidpvalidationerrorevent, of typeRTCIdentityErrorEvent, is received by thisRTCPeerConnection. Such an event is sent when the associated identity provider (IdP) encounters an error while validating an identity assertion. onnegotiationneeded- The
RTCPeerConnectioninterface'sonnegotiationneededproperty is anEventListenerwhich specifies a function which is called to handle thenegotiationneededevent when it occurs on anRTCPeerConnectioninstance. This event is fired when a change has occurred which requires session negotiation. This negotiation should be carried out as the offerer, because some session changes cannot be negotiated as the answerer. onpeeridentity- The
RTCPeerConnection.onpeeridentityevent handler is a property containing the code to execute whent thepeeridentityevent, of typeEvent, is received by thisRTCPeerConnection. Such an event is sent when an identity assertion, received from a peer, has been successfully validated. onremovestream- The
RTCPeerConnection.onremovestreamevent handler is a property containing the code to execute when theremovestreamevent, of typeMediaStreamEvent, is received by thisRTCPeerConnection. Such an event is sent when aMediaStreamis removed from this connection. onsignalingstatechange- The
onsignalingstatechangeevent handler property of theRTCPeerConnectioninterface specifies a function to be called when thesignalingstatechangeevent occurs on anRTCPeerConnectioninterface. ontrack- The
RTCPeerConnectionpropertyontrackis anEventHandlerwhich specifies a function to be called when thetrackevent occurs, indicating that a track has been added to theRTCPeerConnection. addIceCandidate()- When a web site or app using
RTCPeerConnectionreceives a new ICE candidate from the remote peer over its signaling channel, it delivers the newly-received candidate to the browser's ICE agent by callingRTCPeerConnection.addIceCandidate(). addStream()- The obsolete
RTCPeerConnectionmethodaddStream()adds aMediaStreamas a local source of audio or video. Instead of using this obsolete method, you should instead useaddTrack()once for each track you wish to send to the remote peer. addTrack()- The
RTCPeerConnectionmethodaddTrack()adds a new media track to the set of tracks which will be transmitted to the other peer. close()- The
RTCPeerConnection.close()method closes the current peer connection. createAnswer()- The
createAnswer()method on theRTCPeerConnectioninterface creates an SDP answer to an offer received from a remote peer during the offer/answer negotiation of a WebRTC connection. The answer contains information about any media already attached to the session, codecs and options supported by the browser, and any ICE candidates already gathered. The answer is delivered to the returnedPromise, and should then be sent to the source of the offer to continue the negotiation process. createDataChannel()- The
createDataChannel()method on theRTCPeerConnectioninterface creates a new channel linked with the remote peer, over which any kind of data may be transmitted. createOffer()- The
createOffer()method of theRTCPeerConnectioninterface initiates the creation of an SDP offer for the purpose of starting a new WebRTC connection to a remote peer. generateCertificate() static function- The static
RTCPeerConnection.generateCertificate()function creates an X.509 certificate and corresponding private key, returning a promise that resolves with the newRTCCertificateonce it's generated. getConfiguration()- The
RTCPeerConnection.getConfiguration()method returns anRTCConfigurationobject which indicates the current configuration of theRTCPeerConnectionon which the method is called. getIdentityAssertion()- The
RTCPeerConnection.getIdentityAssertion()method initiates the gathering of an identity assertion. This has an effect only if thesignalingStateis not"closed". getReceivers()- The
RTCPeerConnection.getReceivers()method returns an array ofRTCRtpReceiverobjects, each of which represents one RTP receiver. Each RTP receiver manages the reception and decoding of data for aMediaStreamTrackon anRTCPeerConnection getSenders()- The
RTCPeerConnectionmethodgetSenders()returns an array ofRTCRtpSenderobjects, each of which represents the RTP sender responsible for transmitting one track's data. getStats()- The
RTCPeerConnectionmethodgetStats()returns a promise which resolves with data providing statistics about either the overall connection or about the specifiedMediaStreamTrack. getStreamById()- The
RTCPeerConnection.getStreamById()method returns theMediaStreamwith the given id that is associated with local or remote end of the connection. If no stream matches, it returnsnull. getTransceivers()- The
RTCPeerConnectioninterface'sgetTransceivers()method returns a list of theRTCRtpTransceiverobjects being used to send and receive data on the connection. removeStream()- The
RTCPeerConnection.removeStream()method removes aMediaStreamas a local source of audio or video. If the negotiation already happened, a new one will be needed for the remote peer to be able to use it. Because this method has been deprecated, you should instead useremoveTrack()if your target browser versions have implemented it. removeTrack()- The
RTCPeerConnection.removeTrack()method tells the local end of the connection to stop sending media from the specified track, without actually removing the correspondingRTCRtpSenderfrom the list of senders as reported byRTCPeerConnection.getSenders(). restartIce()- The WebRTC API's
RTCPeerConnectioninterface offers therestartIce()method to allow a web application to easily request that ICE candidate gathering be redone on both ends of the connection. setConfiguration()- The
RTCPeerConnection.setConfiguration()method sets the current configuration of theRTCPeerConnectionbased on the values included in the specifiedRTCConfigurationobject. This lets you change the ICE servers used by the connection and which transport policies to use. setIdentityProvider()- The
RTCPeerConnection.setIdentityProvider()method sets the Identity Provider (IdP) to the triplet given in parameter: its name, the protocol used to communicate with it (optional) and an optional username. The IdP will be used only when an assertion is needed. setLocalDescription()- The
RTCPeerConnectionmethodsetLocalDescription()changes the local description associated with the connection. This description specifies the properties of the local end of the connection, including the media format. setRemoteDescription()- The
RTCPeerConnectionmethodsetRemoteDescription()sets the specified session description as the remote peer's current offer or answer. The description specifies the properties of the remote end of the connection, including the media format.
Obsolete method
The following method was obsoleted long ago and was never implemented in all major browsers.
RTCPeerConnection.createDTMFSender()'- Creates a new
RTCDTMFSender, associated to a specificMediaStreamTrack, that will be able to send DTMF phone signaling over the connection.
Events
Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.
connectionstatechange- Sent to the
RTCPeerConnectionobject when the overall connectivity status of theRTCPeerConnectionchanges. Also available through theonconnectionstatechangeevent handler property. datachannel- Sent to the
RTCPeerConnectionobject when the remote peer adds anRTCDataChannelto the connection. Also available through theondatachannelevent handler property. icecandidate- Sent to the peer connection to request that the specified candidate be transmitted to the remote peer. Also available through the
onicecandidateevent handler property. icecandidateerror- An error of type
RTCPeerConnectionIceErrorEventwhich is sent to the connection if an error occurred during ICE candidate gathering. The event's properties describe the error. Also available through theonicecandidateerrorevent handler property. iceconnectionstatechange- Sent to the
RTCPeerConnectionwhen the state of the ICE connection changes, such as when it disconnects. Also available using theoniceconnectionstatechangeevent handler property. icegatheringstatechange- Sent to the
RTCPeerConnectionwhen the ICE layer's gathering state, reflected byiceGatheringState, changes. This indicates whether ICE negotiation has not yet begun (new), has begun gathering candidates (gathering), or has completed (complete). Also available using theonicegatheringstatechangeevent handler property. isolationchange- Sent to the
RTCPeerConnectionwhen theisolatedproperty on one of theMediaStreamTrackobjects associated with the connection changes value. A track isisolatedif its content cannot be accessed by the owning document due to lack of authentication or if the track comes from a cross-origin source. Also available through theonisolationchangeevent handler property. negotiationneeded- Sent to the
RTCPeerConnectionwhen negotiation or renegotiation of the ICE connection needs to be performed; this can happen both when first opening a connection as well as when it's neccessary to adapt to changing network conditions. The receiver should respond by creating an offer and sending it to the other peer. Also available as theonnegotiationneededevent handler property. signalingstatechange- The
signalingstatechangeevent is sent to theRTCPeerConnectionwhen the connection's ICE signaling state changes. Also available through theonsignalingstatechangeevent handler property. track- The
trackevent is sent after a new track has been added to one of theRTCRtpReceiverinstances which comprise the connection. Available as theontrackevent handler property.
Obsolete events
addstream'- Sent when a new
MediaStreamhas been added to the connection. Instead of watching for this obsolete event, you should watch each fortrackevents; one is sent for eachMediaStreamTrackadded to the connection. Available as theonaddstreamevent handler property. identityresult'- In old versions of the WebRTC specification, this event was used to indicate that an identity assertion is available. Now, you should instead wait for a the promise returned by
peerIdentityto resolve with an identity. Also available using theonidentityresultevent handler property. idpassertionerror'- In old versions of the WebRTC specification, this event was used to indicate that an error occurred while attempting to generate an identity assertion. Now, you should instead wait for a the promise returned by
peerIdentityto be rejected with an error. Also available as theonidpinsertionerrorevent handler property. idpvalidationerror'- In old versions of the WebRTC specification, this event was used to indicate that an error occurred while attempting to validate an identity assertion. Now, you should instead wait for a the promise returned by
peerIdentityto be rejected with an error. Also available using theonpeerdentityevent handler property. peeridentity'- In old versions of the WebRTC specification, this event was used to deliver a received identity. Now, you should instead wait for a the promise returned by
peerIdentityto resolve with an identity. removestream'- Sent to the
RTCPeerConnectionwhen aMediaStreamis removed from the connection. Instead of watching for this obsolete event, you should watch each stream forremovetrackevents on each stream within theRTCPeerConnection. Also available as theonaddstreamevent handler property.
Constants
RTCBundlePolicy enum
The RTCBundlePolicy enum defines string constants which are used to request a specific policy for gathering ICE candidates if the remote peer isn't "BUNDLE-aware" (compatible with the SDP BUNDLE standard for bundling multiple media streams on a single transport link). All browser implementations are BUNDLE-aware.
If the remote endpoint is BUNDLE-aware, all media tracks and data channels are bundled onto a single transport at the completion of negotiation, regardless of policy used, and any superfluous transports that were created initially are closed at that point.
Note: In technical terms, a BUNDLE lets all media flow between two peers flow across a single 5-tuple; that is, from a single IP and port on one peer to a single IP and port on the other peer, using the same transport protocol.
| Constant | Description |
|---|---|
"balanced"
|
The ICE agent initially creates one RTCDtlsTransport for each type of content added: audio, video, and data channels. If the remote endpoint is not BUNDLE-aware, then each of these DTLS transports then handles all the communication for one type of data.
|
"max-compat"
|
The ICE agent initially creates one RTCDtlsTransport per media track and a separate one for data channels. If the remote endpoint is not BUNDLE-aware, everything is negotiated on these separate DTLS transports.
|
"max-bundle"
|
The ICE agent initially creates only a single RTCDtlsTransport to carry all of the RTCPeerConnection's data. If the remote endpoint is not BUNDLE-aware, then only a single track will be negotiated and the rest ignored.
|
RTCIceConnectionState enum
The RTCIceConnectionState enum defines the string constants used to describe the current state of the ICE agent and its connection to the ICE server (that is, the STUN or TURN server).
| Constant | Description |
|---|---|
"new"
|
The ICE agent is gathering addresses or is waiting to be given remote candidates through calls to RTCPeerConnection.addIceCandidate() (or both).
|
"checking"
|
The ICE agent has been given one or more remote candidates and is checking pairs of local and remote candidates against one another to try to find a compatible match, but has not yet found a pair which will allow the peer connection to be made. It's possible that gathering of candidates is also still underway. |
"connected"
|
A usable pairing of local and remote candidates has been found for all components of the connection, and the connection has been established. It's possible that gathering is still underway, and it's also possible that the ICE agent is still checking candidates against one another looking for a better connection to use. |
"completed"
|
The ICE agent has finished gathering candidates, has checked all pairs against one another, and has found a connection for all components. |
"failed"
|
The ICE candidate has checked all candidates pairs against one another and has failed to find compatible matches for all components of the connection. It is, however, possible that the ICE agent did find compatible connections for some components. |
"disconnected"
|
Checks to ensure that components are still connected failed for at least one component of the RTCPeerConnection. This is a less stringent test than "failed" and may trigger intermittently and resolve just as spontaneously on less reliable networks, or during temporary disconnections. When the problem resolves, the connection may return to the "connected" state.
|
"closed"
|
The ICE agent for this RTCPeerConnection has shut down and is no longer handling requests.
|
RTCIceGatheringState enum
The RTCIceGatheringState enum defines string constants which reflect the current status of ICE gathering, as returned using the RTCPeerConnection.iceGatheringState property. You can detect when this value changes by watching for an event of type icegatheringstatechange.
| Constant | Description |
|---|---|
"new"
|
The peer connection was just created and hasn't done any networking yet. |
"gathering"
|
The ICE agent is in the process of gathering candidates for the connection. |
"complete"
|
The ICE agent has finished gathering candidates. If something happens that requires collecting new candidates, such as a new interface being added or the addition of a new ICE server, the state will revert to "gathering" to gather those candidates. |
RTCIceTransportPolicy enum
The RTCIceTransportPolicy enum defines string constants which can be used to limit the transport policies of the ICE candidates to be considered during the connection process.
| Constant | Description |
|---|---|
"all"
|
All ICE candidates will be considered. |
"public" '
|
Only ICE candidates with public IP addresses will be considered. Removed from the specification's May 13, 2016 working draft. |
"relay"
|
Only ICE candidates whose IP addresses are being relayed, such as those being passed through a TURN server, will be considered. |
RTCPeerConnectionState enum
The RTCPeerConnectionState enum defines string constants which describe states in which the RTCPeerConnection may be. These values are returned by the connectionState property. This state essentially represents the aggregate state of all ICE transports (which are of type RTCIceTransport or RTCDtlsTransport) being used by the connection.
| Constant | Description |
|---|---|
"new"
|
At least one of the connection's ICE transports (RTCIceTransports or RTCDtlsTransports) are in the "new" state, and none of them are in one of the following states: "connecting", "checking", "failed", or "disconnected", or all of the connection's transports are in the "closed" state.
|
"connecting"
|
One or more of the ICE transports are currently in the process of establishing a connection; that is, their RTCIceConnectionState is either "checking" or "connected", and no transports are in the "failed" state. <<< Make this a link once I know where that will be documented
|
"connected"
|
Every ICE transport used by the connection is either in use (state "connected" or "completed") or is closed (state "closed"); in addition, at least one transport is either "connected" or "completed".
|
"disconnected"
|
At least one of the ICE transports for the connection is in the "disconnected" state and none of the other transports are in the state "failed", "connecting", or "checking".
|
"failed"
|
One or more of the ICE transports on the connection is in the "failed" state.
|
"closed"
|
The This value was in the |
RTCRtcpMuxPolicy enum
The RTCRtcpMuxPolicy enum defines string constants which specify what ICE candidates are gathered to support non-multiplexed RTCP. <<<add a link to info about multiplexed RTCP.
| Constant | Description |
|---|---|
"negotiate"
|
Instructs the ICE agent to gather both RTP and RTCP candidates. If the remote peer can multiplex RTCP, then RTCP candidates are multiplexed atop the corresponding RTP candidates. Otherwise, both the RTP and RTCP candidates are returned, separately. |
"require"
|
Tells the ICE agent to gather ICE candidates for only RTP, and to multiplex RTCP atop them. If the remote peer doesn't support RTCP multiplexing, then session negotiation fails. |
RTCSignalingState enum
The RTCSignalingState enum specifies the possible values of RTCPeerConnection.signalingState, which indicates where in the process of signaling the exchange of offer and answer the connection currently is.
| Constant | Description |
|---|---|
"stable"
|
There is no ongoing exchange of offer and answer underway. This may mean that the RTCPeerConnection object is new, in which case both the localDescription and remoteDescription are null; it may also mean that negotiation is complete and a connection has been established.
|
"have-local-offer"
|
The local peer has called RTCPeerConnection.setLocalDescription(), passing in SDP representing an offer (usually created by calling RTCPeerConnection.createOffer()), and the offer has been applied successfully.
|
"have-remote-offer"
|
The remote peer has created an offer and used the signaling server to deliver it to the local peer, which has set the offer as the remote description by calling RTCPeerConnection.setRemoteDescription().
|
"have-local-pranswer"
|
The offer sent by the remote peer has been applied and an answer has been created (usually by calling RTCPeerConnection.createAnswer()) and applied by calling RTCPeerConnection.setLocalDescription(). This provisional answer describes the supported media formats and so forth, but may not have a complete set of ICE candidates included. Further candidates will be delivered separately later.
|
"have-remote-pranswer"
|
A provisional answer has been received and successfully applied in response to an offer previously sent and established by calling setLocalDescription().
|
"closed" '
|
The connection is closed. Note: This value moved into the
|
Specifications
| Specification | Status | Comment |
|---|---|---|
| WebRTC 1.0: Real-time Communication Between BrowsersThe definition of 'RTCPeerConnection' in that specification. | Candidate Recommendation | Initial definition. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
RTCPeerConnection
|
Chrome
Full support 23 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 25 |
Firefox Android Full support 44 Full support 44 No support 22 — 44 Prefixed' Implemented with the vendor prefix: moz |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 6.0 Full support 6.0 No support 5.0 — 6.0 Prefixed' Implemented with the vendor prefix: webkit |
RTCPeerConnection() constructor
|
Chrome Full support 23 Full support 23 Notes' Before Chrome 63 the default value for the |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support Yes Full support Yes Notes' Before Chrome 63 the default value for the |
Chrome Android Full support Yes Full support Yes Notes' Before Chrome 63 the default value for the |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
addIceCandidate
|
Chrome Full support 51 Full support 51 Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox Full support 22 Full support 22 Notes' Starting in Firefox 68, the |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Chrome Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Firefox Android Full support 44 Full support 44 Notes' Starting in Firefox 68, the |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 6.0 Full support 6.0 Notes' Promise-based version and unprefixed. No support 5.0 — 6.0 Notes' Promise-based version. |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support 11 — 12 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support 11 — 12 |
Samsung Internet Android
Full support 6.0 | |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
No support No |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
addTrack
|
Chrome
Full support 64 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 51 |
Safari
Full support 11 |
WebView Android
Full support 64 |
Chrome Android
Full support 64 |
Firefox Android
Full support 44 |
Opera Android
Full support 47 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
addTransceiver
|
Chrome
Full support 69 |
Edge
Full support 79 |
Firefox
Full support 59 |
IE
No support No |
Opera
No support No |
Safari
Full support 11 |
WebView Android
Full support 69 |
Chrome Android
Full support 69 |
Firefox Android
Full support 59 |
Opera Android
No support No |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 10.0 |
canTrickleIceCandidates
|
Chrome
No support No |
Edge
No support 15 — 79 |
Firefox
Full support 47 |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
close
|
Chrome
Full support 23 |
Edge
Full support 15 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support Yes |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support Yes |
connectionState
|
Chrome
Full support 72 |
Edge
Full support 79 |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
Full support 11 |
WebView Android
Full support 72 |
Chrome Android
Full support 72 |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 11.0 |
connectionstatechange event
|
Chrome
Full support 72 |
Edge
Full support 79 |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
Full support 11 |
WebView Android
Full support 72 |
Chrome Android
Full support 72 |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
Full support 11.0 |
createAnswer
|
Chrome Full support 51 Full support 51 Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Chrome Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 6.0 Full support 6.0 Notes' Promise-based version and unprefixed. No support 5.0 — 6.0 Notes' Promise-based version. |
createDataChannel
|
Chrome
Full support 25 |
Edge
Full support 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 27 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support No |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 | |
createOffer
|
Chrome Full support 51 Full support 51 Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Chrome Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 6.0 Full support 6.0 Notes' Promise-based version and unprefixed. No support 5.0 — 6.0 Notes' Promise-based version. |
currentLocalDescription
|
Chrome
Full support 70 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 70 |
Chrome Android
Full support 70 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
currentRemoteDescription
|
Chrome
Full support 70 |
Edge
Full support 79 |
Firefox
Full support 57 |
IE
No support No |
Opera
No support No |
Safari
Full support 11 |
WebView Android
Full support 70 |
Chrome Android
Full support 70 |
Firefox Android
Full support Yes |
Opera Android
No support No |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 10.0 |
datachannel event
|
Chrome
Full support 25 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
generateCertificate
|
Chrome
Full support 48 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 12.1 |
WebView Android
Full support 48 |
Chrome Android
Full support 48 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 12.2 |
Samsung Internet Android
Full support 6.0 |
getConfiguration
|
Chrome
Full support 70 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 70 |
Chrome Android
Full support 70 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
getDefaultIceServers
|
Chrome
No support No |
Edge
No support No |
Firefox
? |
IE
No support No |
Opera
? |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
? |
Opera Android
? |
Safari iOS
? |
Samsung Internet Android
No support No |
getIdentityAssertion
|
Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 27 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support 11 — 12 |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support 11 — 12 |
Samsung Internet Android
Full support 6.0 | |
getReceivers
|
Chrome
Full support 59 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 46 |
Safari
Full support 11 |
WebView Android
Full support 59 |
Chrome Android
Full support 59 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 27 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support 11 — 12 |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support 11 — 12 |
Samsung Internet Android
Full support 6.0 | |
getSenders
|
Chrome
Full support 64 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 51 |
Safari
Full support 11 |
WebView Android
Full support 64 |
Chrome Android
Full support 64 |
Firefox Android
Full support 44 |
Opera Android
Full support 47 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
getStats
|
Chrome Full support 58 Full support 58 Notes' Promise resolves with Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support 45 |
Safari
Full support 11 |
WebView Android Full support 58 Full support 58 Notes' Promise resolves with Notes' Promise-based version. Full support Yes |
Chrome Android Full support 58 Full support 58 Notes' Promise resolves with Notes' Promise-based version. Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 7.0 Full support 7.0 Notes' Promise resolves with Notes' Promise-based version. Full support Yes |
| Chrome
No support 56 — 62 |
Edge
No support 15 — 79 |
Firefox
No support 22 — 53 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support 56 — 62 |
Chrome Android
No support 56 — 62 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
No support 6.0 — 8.0 | |
icecandidate event
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
iceConnectionState
|
Chrome
Full support 26 |
Edge
Full support 15 |
Firefox
Full support 52 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 26 |
Firefox Android
Full support Yes |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 7.0 |
iceconnectionstatechange event
|
Chrome
Full support 28 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 28 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
iceGatheringState
|
Chrome
Full support 25 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
localDescription
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
negotiationneeded event
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support 11 — 12 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support 11 — 12 |
Samsung Internet Android
Full support 6.0 | |
onconnectionstatechange
|
Chrome
Full support 72 |
Edge
Full support 79 |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
Full support 11 |
WebView Android
Full support 72 |
Chrome Android
Full support 72 |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 11.0 |
ondatachannel
|
Chrome
Full support 25 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
onicecandidate
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
onicecandidateerror
|
Chrome
No support No |
Edge
No support No |
Firefox
? |
IE
No support No |
Opera
? |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
? |
Opera Android
? |
Safari iOS
No support No |
Samsung Internet Android
No support No |
oniceconnectionstatechange
|
Chrome
Full support 28 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 28 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
onicegatheringstatechange
|
Chrome
Full support 59 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 59 |
Chrome Android
Full support 59 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 7.0 |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
onnegotiationneeded
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
No support 22 — 60 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support No |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
No support 44 — 60 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 | |
onsignalingstatechange
|
Chrome
Full support 28 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 28 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
ontrack
|
Chrome
Full support 64 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 64 |
Chrome Android
Full support 64 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
peerIdentity
|
Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
| Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
? |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 | |
pendingLocalDescription
|
Chrome
Full support 70 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 70 |
Chrome Android
Full support 70 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
pendingRemoteDescription
|
Chrome
Full support 70 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 70 |
Chrome Android
Full support 70 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
remoteDescription
|
Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version and unprefixed. No support 38 — 43 Notes' Promise-based version. |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version and unprefixed. No support 41 — 43 Notes' Promise-based version. |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
No support 22 — 51 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support 11 — 12 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support 11 — 12 |
Samsung Internet Android
Full support 6.0 | |
| Chrome
Full support 24 |
Edge
Full support 15 |
Firefox
No support 22 — 60 |
IE
No support No |
Opera
Full support 43 |
Safari
No support No |
WebView Android
Full support Yes |
Chrome Android
Full support 25 |
Firefox Android
No support 44 — 60 |
Opera Android
Full support 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 | |
removeTrack
|
Chrome
Full support 64 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 51 |
Safari
Full support 11 |
WebView Android
Full support 64 |
Chrome Android
Full support 64 |
Firefox Android
Full support 44 |
Opera Android
Full support 47 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
restartIce() method
|
Chrome
Full support 77 |
Edge
Full support 79 |
Firefox
Full support 70 |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
Full support 77 |
Chrome Android
Full support 77 |
Firefox Android
No support No |
Opera Android
Full support 55 |
Safari iOS
No support No |
Samsung Internet Android
Full support 12.0 |
sctp
|
Chrome
Full support 76 |
Edge
Full support 79 |
Firefox No support No No support No Notes' See bug 1278299. |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
Full support 76 |
Chrome Android
Full support 76 |
Firefox Android No support No No support No Notes' See bug 1278299. |
Opera Android
Full support 54 |
Safari iOS
No support No |
Samsung Internet Android
Full support 12.0 |
setConfiguration
|
Chrome
Full support 48 |
Edge
Full support ≤18 |
Firefox No support No No support No Notes' See bug 1253706. |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support 48 |
Chrome Android
Full support 48 |
Firefox Android No support No No support No Notes' See bug 1253706. |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
setIdentityProvider
|
Chrome
No support No |
Edge
No support ≤18 — 79 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
setLocalDescription()
|
Chrome Full support 51 Full support 51 Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox Full support 22 Full support 22 Notes' Firefox does not support descriptions of type |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Chrome Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 6.0 Full support 6.0 Notes' Promise-based version and unprefixed. No support 5.0 — 6.0 Notes' Promise-based version. |
setRemoteDescription()
|
Chrome Full support 51 Full support 51 Notes' Promise-based version. Full support 24 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Chrome Android Full support 51 Full support 51 Notes' Promise-based version. Full support Yes |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android Full support 5.0 Full support 5.0 Notes' Promise-based version. Full support Yes |
signalingState
|
Chrome
Full support 26 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 26 |
Firefox Android
Full support 44 |
Opera Android Full support 43 Full support 43 Notes' Promise-based version. No support 37 — 43 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 6.0 |
signalingstatechange event
|
Chrome
Full support 28 |
Edge
Full support 15 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support Yes |
Chrome Android
Full support 28 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
track event
|
Chrome
Full support 64 |
Edge
Full support ≤18 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 43 |
Safari
Full support 11 |
WebView Android
Full support 64 |
Chrome Android
Full support 64 |
Firefox Android
Full support 44 |
Opera Android
Full support 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Non-standard. Expect poor cross-browser support.'
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.'
- Deprecated. Not for use in new websites.
- See implementation notes.'
- See implementation notes.
- Requires a vendor prefix or different name for use.'
- Requires a vendor prefix or different name for use.
See also
- https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
- http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-simple
- TutorRoom: Node.js HTML5 video capture, peer-to-peer video and filesharing application (source on GitHub)
RTCPeerConnection by Mozilla Contributors is licensed under CC-BY-SA 2.5.