Web/API/Network Information API

From Get docs

This is an experimental technologyCheck the Browser compatibility table carefully before using this in production.


The Network Information API provides information about the system's connection in terms of general connection type (e.g., 'wifi', 'cellular', etc.). This can be used to select high definition content or low definition content based on the user's connection. The entire API consists of the addition of the NetworkInformation interface and a single property to the Navigator interface: Navigator.connection.

Note: This feature is available in Web Workers.

Examples

Detect connection changes

This example watches for changes to the user's connection.

var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
var type = connection.effectiveType;

function updateConnectionStatus() {
  console.log("Connection type changed from " + type + " to " + connection.effectiveType);
  type = connection.effectiveType;
}

connection.addEventListener('change', updateConnectionStatus);

Preload large resources

The connection object is useful for deciding whether to preload resources that take large amounts of bandwidth or memory. This example would be called soon after page load to check for a connection type where preloading a video may not be desirable. If a cellular connection is found, then the preloadVideo flag is set to false. For simplicity and clarity, this example only tests for one connection type. A real-world use case would likely use a switch statement or some other method to check all of the possible values of NetworkInformation.type. Regardless of the type value you can get an estimate of connection speed through the NetworkInformation.effectiveType property.

let preloadVideo = true;
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
if (connection) {
  if (connection.effectiveType === 'slow-2g') {
    preloadVideo = false;
  }
}

Interfaces

NetworkInformation
Provides information about the connection a device is using to communicate with the network and provides a means for scripts to be notified if the connection type changes. The NetworkInformation interfaces cannot be instantiated. It is instead accessed through the Navigator interface.

Specifications

Specification Status Comment
Network Information APIThe definition of 'Network Information API' in that specification. Draft Initial specification

Browser compatibility

NetworkInformation

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

NetworkInformation

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

Full support 31

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

downlink

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

?

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

downlinkMax

Experimental'

Chrome Full support 61

Notes'

Full support 61

Notes'

Notes' Only supported in Chrome OS

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

No support No

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

effectiveType

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

Full support Yes

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

onchange

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android No support No

Notes'

No support No

Notes'

Notes' On Firefox, the event handler property corresponding to the change event is ontypechange.

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

ontypechange

Experimental'

Chrome

No support No

Edge

No support No

Firefox

No support No

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

rtt

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

No support No

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

saveData

Experimental'

Chrome

Full support 65

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 65

Chrome Android

Full support 65

Firefox Android

?

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

Full support 9.0

type

Experimental'

Chrome Full support 61

Notes'

Full support 61

Notes'

Notes' Only supported in Chrome OS

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

No support No

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

Available in workers

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 48

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android

Full support 53

Opera Android

Full support 45

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
See implementation notes.'
See implementation notes.


Navigator.connection

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

connection

Experimental'

Chrome

Full support 61

Edge

Full support 79

Firefox Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the dom.netinfo.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 38

Firefox Android Full support 14

Notes'

Full support 14

Notes'

Notes' The Network API is enabled by default. Can be disabled using the dom.netinfo.enabled preference.

Opera Android

Full support 37

Safari iOS

No support No

Samsung Internet Android

Full support 3.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
See implementation notes.'
See implementation notes.
User must explicitly enable this feature.'
User must explicitly enable this feature.


See also