The Navigator interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities.

A Navigator object can be retrieved using the read-only window.navigator property.

Properties

Doesn't inherit any properties, but implements those defined in NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorContentUtils, NavigatorStorage, NavigatorStorageUtils, NavigatorConcurrentHardware, NavigatorPlugins, and NavigatorUserMedia.

Standard

Navigator.activeVRDisplays Read only
Returns an array containing every VRDisplay object that is currently presenting (VRDisplay.ispresenting is true).
NavigatorID.appCodeName Read only
Returns the internal "code" name of the current browser. Do not rely on this property to return the correct value.
NavigatorID.appName Read only
Returns a DOMString with the official name of the browser. Do not rely on this property to return the correct value.
NavigatorID.appVersion Read only
Returns the version of the browser as a DOMString. Do not rely on this property to return the correct value.
Navigator.battery Read only
Returns a BatteryManager object you can use to get information about the battery charging status.
Navigator.connection Read only
Provides a NetworkInformation object containing information about the network connection of a device.
Navigator.cookieEnabled Read only
Returns false if setting a cookie will be ignored and true otherwise.
Navigator.geolocation Read only
Returns a Geolocation object allowing accessing the location of the device.
NavigatorConcurrentHardware.hardwareConcurrency Read only
Returns the number of logical processor cores available.
NavigatorPlugins.javaEnabled Read only
Returns a Boolean flag indicating whether the host browser is Java-enabled or not.
Navigator.keyboard Read only
Returns a Keyboard object which provides access to functions that retrieve keyboard layout maps and toggle capturing of key presses from the physical keyboard.
NavigatorLanguage.language Read only
Returns a DOMString representing the preferred language of the user, usually the language of the browser UI. The null value is returned when this is unknown.
NavigatorLanguage.languages Read only
Returns an array of DOMString representing the languages known to the user, by order of preference.
Navigator.locks Read only
Returns a LockManager object which provides methods for requesting a new Lock object and querying for an existing <code>Lock</code> object
Navigator.mediaCapabilities Read only
Returns a MediaCapabilities object that can expose information about the decoding and encoding capabilities for a given format and output capabilities
NavigatorPlugins.mimeTypes Read only
Returns an MimeTypeArray listing the MIME types supported by the browser.
NavigatorOnLine.onLine Read only
Returns a Boolean indicating whether the browser is working online.
Navigator.oscpu
Returns a string that represents the current operating system.
Navigator.permissions Read only
Returns a Permissions object that can be used to query and update permission status of APIs covered by the Permissions API.
NavigatorID.platform Read only
Returns a string representing the platform of the browser. Do not rely on this function to return a significant value.
NavigatorPlugins.plugins Read only
Returns a PluginArray listing the plugins installed in the browser.
NavigatorID.product Read only
Always returns 'Gecko', on any browser. This property is kept only for compatibility purpose.
Navigator.serviceWorker Read only
Returns a ServiceWorkerContainer object, which provides access to registration, removal, upgrade, and communication with the ServiceWorker objects for the associated document.
NavigatorStorage.storage Read only
Returns the singleton StorageManager object used for managing persistance permissions and estimating available storage on a site-by-site/app-by-app basis.
NavigatorID.userAgent Read only
Returns the user agent string for the current browser.

Non-standard

Firefox OS devices adds more non-standard properties. You can consult them on the Firefox OS Navigator extensions article.

Navigator.buildID
Returns the build identifier of the browser (e.g., "2006090803").
Navigator.credentials
Returns the CredentialsContainer interface which exposes methods to request credentials and notify the user agent when interesting events occur such as successful sign in or sign out. 
Navigator.deviceMemory Read only
Returns the amount of device memory in gigabytes. This value is an approximation given by rounding to the nearest power of 2 and dividing that number by 1024.
Navigator.doNotTrack
Reports the value of the user's do-not-track preference. When this value is "yes", your web site or application should not track the user.
Navigator.mediaDevices 
Returns a reference to a MediaDevices object which can then be used to get information about available media devices (MediaDevices.enumerateDevices()), find out what constrainable properties are supported for media on the user's computer and user agent (MediaDevices.getSupportedConstraints()), and to request access to media using MediaDevices.getUserMedia().
Navigator.mozNotification Deprecated since Gecko 22
Navigator.webkitNotification
Returns a notification object you can use to deliver notifications to the user from your web application.
Navigator.mozSocial
The Object, returned by the navigator.mozSocial property, is available within the social media provider's panel to provide functionality it may need.
Navigator.presentation
Returns a reference to the Presentation API.
Navigator.productSub
Returns the build number of the current browser (e.g., "20060909").
Navigator.securitypolicy
Returns an empty string. In Netscape 4.7x, returns "US & CA domestic policy" or "Export policy".
Navigator.standalone
Returns a boolean indicating whether the browser is running in standalone mode. Available on Apple's iOS Safari only.
Navigator.storageQuota Read only
Returns a StorageQuota interface which provides means to query and request storage usage and quota information.
Navigator.vendor
Returns the vendor name of the current browser (e.g., "Netscape6").
Navigator.vendorSub
Returns the vendor version number (e.g. "6.1").
Navigator.webkitPointer
Returns a PointerLock object for the Mouse Lock API.

Methods

Doesn't inherit any method, but implements those defined in NavigatorID, NavigatorContentUtils, NavigatorUserMedia, and NavigatorStorageUtils.

Standard

Navigator.getVRDisplays()
Returns a promise that resolves to an array of VRDisplay objects representing any available VR devices connected to the computer.
Navigator.getUserMedia()
After having prompted the user for permission, returns the audio or video stream associated to a camera or microphone on the local computer.
Navigator.registerContentHandler() Obsolete since Gecko 59
Allows web sites to register themselves as a possible handler for a given MIME type.
Navigator.registerProtocolHandler()
Allows web sites to register themselves as a possible handler for a given protocol.
Navigator.requestMediaKeySystemAccess()
Returns a Promise for a MediaKeySystemAccess object.
Navigator.sendBeacon()
Used to asynchronously transfer a small amount of data using HTTP from the User Agent to a web server.
Navigator.share()
Invokes the native sharing mechanism of the current platform.
NavigatorID.taintEnabled() Deprecated since Gecko 1.7.8 Obsolete since Gecko 9.0
Returns false. JavaScript taint/untaint functions removed in JavaScript 1.2.
Navigator.vibrate()
Causes vibration on devices with support for it. Does nothing if vibration support isn't available.

Non-standard

Firefox OS devices adds more non-standard methods. You can consult them on the Firefox OS Navigator extensions article.

Navigator.mozIsLocallyAvailable()

Lets code check to see if the document at a given URI is available without using the network.
Navigator.mozPay()
Allows in-app payment.

Specifications

Specification Status Comment
HTML Living Standard
The definition of 'the Navigator object' in that specification.
Living Standard  

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
activeVRDisplays No1 Yes553 No No No
authentication674 No No No ? No
battery38 ?

16 — 506 7

11 — 16 moz

10 — 168

No No No
buildID ? ?2 ? ? ?
clipboard66 ?63 ? ? ?
connection61 ? ? No ? No
cookieEnabled59 Yes110 Yes Yes Yes
credentials51 ? ? ? ? ?
deviceMemory63 ? ? ?50 ?
doNotTrack23 No119129 — 11 ms 13125.1 — 714
geolocation5 Yes3.59

16

10.6 — 15

5
getBattery39 ?43 — 5215 No25 No
getGamepads

35

21 -webkit-

Yes29 No

22

15 -webkit-

No
getUserMedia21 webkit 16 Yes17 moz 17 No

18 webkit

1218

No
getVRDisplays No1 Yes5519 No No No
keyboard68 No No No55 No
locks69 ? ? ?56 ?
maxTouchPoints35 ?

59

2920

11

10 ms

? No
mediaCapabilities66 No63 No55 No
mediaDevices51 Yes36 Yes No No
mediaSession No ? ? ? No ?
mozIsLocallyAvailable No No Yes — 35 No No No
oscpu No ? Yes ? ? ?
permissions43 ?46 ? ? ?
presentation Yes ? No ? ? ?
productSub Yes22 ? Yes Yes23 ? Yes22
registerContentHandler ? ?2 — 62 ? ? ?
registerProtocolHandler1324 ?3 ?11.6 ?
requestMediaKeySystemAccess4225 26 Yes Yes27 28 29 ?2925 30 ?
sendBeacon3932 Yes31 No263311.1
serviceWorker40

17

1634

4435 No2711.1
share No ? No No No No
vendorSub Yes ? Yes Yes15 Yes
vibrate32 ?

1638 39

11 moz

No No No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes Yes Yes Yes Yes
activeVRDisplays Yes Yes2 No55 No No ?
authentication675674 No No ? No No
battery ?38 ?

16 — 506 7

14 — 16 moz

10 — 168

No No ?
buildID ? ? ? Yes ? ? ?
clipboard6666 ?63 ? ? ?
connection5038 ?14937 No ?
cookieEnabled5959 Yes410 Yes Yes ?
credentials5151 ? ? ? ? ?
deviceMemory6363 ? ?50 ? ?
doNotTrack Yes Yes No11912 ? ? ?
geolocation Yes Yes Yes410.6 Yes ?
getBattery4042 ?43 — 521525 No ?
getGamepads

35

21 -webkit-

42 Yes No No No ?
getUserMedia40 webkit 18 No Yes24 moz 171218 No No
getVRDisplays Yes Yes2 No55 No No ?
keyboard No No No No No No No
locks6969 ? ?56 ? ?
maxTouchPoints3535 ?2920 21 ? No ?
mediaCapabilities6666 No6355 No ?
mediaDevices5151 Yes36 No No ?
mediaSession No57 ? ? No ? ?
mozIsLocallyAvailable No No No Yes — 35 No No No
oscpu No No ? Yes ? ? ?
permissions4343 ?46 ? ? ?
presentation Yes Yes ? No ? ? ?
productSub ? Yes22 ? Yes ? Yes22 ?
registerContentHandler ? ? ? ? ? ? ?
registerProtocolHandler ? ? ?4 ? No ?
requestMediaKeySystemAccess4325 314225 26 Yes Yes27 28 292925 30 ? ?
sendBeacon40324232 Yes312933 No ?
serviceWorker4040 ?442711.1 ?
share6161 ? No48 No ?
vendorSub Yes Yes ? Yes15 Yes ?
vibrate3241 423236 37 ?

1638 39

14 moz

Yes40 No ?

1. Available on all platforms behind a flag, but currently only works on desktop in an experimental version of Chrome (other builds won't return any devices when Navigator.getVRDisplays() is invoked).

2. Currently supported only by Google Daydream.

3. Currently only Windows support is enabled by default. Mac support is available in Firefox Nightly.

4. From version 67: this feature is behind the WebAuth preference. To change preferences in Chrome, visit chrome://flags.

5. From version 67: this feature is behind the WebAuth preference.

6. Removed in favor of navigator.getBattery().

7. The Battery API was supported on Android, Windows, and Linux with UPower installed. Support for macOS was available starting with Firefox 18.

8. From version 10 until version 16 (exclusive): this feature is behind the dom.battery.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

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

10. Prior to Firefox 8, navigator.cookieEnabled would report the wrong result if a site exception was in place for the page on which the check was performed. This has been fixed.

11. Use window.doNotTrack instead.

12. Prior to Firefox 32, navigator.doNotTrack would report values of yes and no rather than 1 and 0.

13. For IE11 and subsequent versions, use window.doNotTrack

14. Safari 7.1.3+ uses window.doNotTrack rather than navigator.doNotTrack.

15. From Firefox 52 onwards, the Battery Status API is only available in chrome/privileged code.

16. Later versions of Chrome support the unprefixed MediaDevices.getUserMedia() which replaced this deprecated method.

17. The constraint syntax described here is available as of Firefox 38. Earlier versions (32-37) used an outdated constraint syntax, but the syntax described here is available there through the adapter.js polyfill.

18. An outdated constraint syntax is still in use, but the syntax described here is available through the adapter.js polyfill.

19. Currently only Windows support is enabled by default. Mac support is available in Firefox Nightly.

20. From version 29: this feature is behind the dom.w3c_pointer_events.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

21. See bug 1426786.

22. Always returns 20030107.

23. Always returns undefined.

24. Protocol whitelist includes mailto, mms, nntp, rtsp, and webcal. Custom protocols must be prefixed with web+.

25. The spec requires that the passed supportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.

26. The function does not exist in insecure contexts. This was not enforced until Chrome 58.

27. Starting in Firefox 55, if neither audioCapabilities nor videoCapabilities is specified in supportedConfigurations, a warning is output to the web console.

28. In addition, starting in Firefox 55, if in supportedConfigurations, either audioCapabilities's or videoCapabilities's contentType value doesn't specify a "codecs" substring to define allowed codecs within the media wrapper, a warning is output to the web console. See note below table for example and correction.

29. In the future, if neither audioCapabilities nor videoCapabilities is specified in the supportedConfigurations, a NotSupported exception will be thrown.

30. The function does not exist in insecure contexts. This was not enforced until Opera 45.

31. The function does not exist in insecure contexts. This was not enforced until version 58.

32. Starting in Chrome 59, this method cannot send a Blob whose type is not CORS safelisted. This is a temporary change until a mitigation can be found for the security issues that this creates. For more information see Chrome bug 720283.

33. Starting in Opera 46, this method cannot send a Blob whose type is not CORS safelisted. This is a temporary change until a mitigation can be found for the security issues that this creates. For more information see Chrome bug 720283.

34. From version 16: this feature is behind the Enable service workers preference.

35. Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).

36. Beginning in Chrome 55, this is not supported in cross-origin iframes.

37. Beginning in Chrome 60, this method requires a user gesture. Otherwise it returns false.

38. Until Firefox 26 included, when the vibration pattern was too long or any of its elements too large, Firefox threw an exception instead of returning false (bug 884935).

39. From Firefox 32 onwards, when the vibration pattern is too long or any of its elements too large, it returns true but truncates the pattern (bug 1014581).

40. Beginning in Opera 47, this method requires a user gesture. Otherwise it returns false.

41. Beginning in version 55, this is not supported in cross-origin iframes.

42. Beginning in version 60, this method requires a user gesture. Otherwise it returns false.