RTCIceServer: url property

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

The obsolete RTCIceServer dictionary's url property specifies the URL of a single ICE server to be used while negotiating connections. It was removed from the specification in June 2013 but is still broadly used in older examples and books, so we include documentation here to help adapt old code to new browsers.

This property has been removed from the specification; while it's still supported by many browsers, it should no longer be used. You should instead use the newer urls property, which allows you to optionally specify multiple URLs for the server. Try to update any existing code to use that property instead.



const iceServer = {
  // ...
  url: iceServerUrl,
  // ...

const serverUrl = iceServer.url;

iceServer.url = iceServerUrl;

The value of this property is a string containing the full URL of a server to use during ICE negotiation.


This example creates a new RTCPeerConnection which will use a STUN server at stunserver.example.org to negotiate connections.


myPeerConnection = new RTCPeerConnection({
  iceServers: [
      url: "stun:stunserver.example.org",

Unfortunately, the only way to tell ICE that the server has a backup domain name of stunserver2.example.org is to add a new entry to the iceServers array for it. The urls property lets you include them both in one server, which is more readily maintainable.

Browser compatibility

BCD tables only load in the browser

See also