coderef

User agent sniffingBaseline · Widely available

The navigator.userAgent property and several others loosely identify a browser. Selectively showing content based on the user agent string, also known as user agent sniffing, is unreliable. Consider using feature detection or user agent client hints instead.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Sep 20, 2016. Widely available since Mar 20, 2019.

Browser support

DesktopChrome
1–3Not supported
4+Supportedsince Jan 25, 2010
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–3Not supported
3.5+Supportedsince Jun 30, 2009
Current: 157
Safari
1–9.1Not supported
10+Supportedsince Sep 20, 2016
Current: 27
MobileChrome Android
18+Supportedsince Jun 27, 2012
Current: 155
Firefox Android
4+Supportedsince Mar 29, 2011
Current: 157
Safari iOS
1–9.3Not supported
10+Supportedsince Sep 13, 2016
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: appCodeName.

Feature detection

JS · check before using
if ("Navigator" in globalThis && "userAgent" in Navigator.prototype) {
  // Navigator.userAgent is available
}

Sub-features

Support for each part of the feature (17). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Navigator.appCodeName112111841
Navigator.appName112111841
Navigator.appVersion112111841
Navigator.javaEnabled112111841
Navigator.platform112111841
Navigator.plugins112111841
Navigator.product112111841
Navigator.productSub112111841
Navigator.userAgent112111841
Navigator.vendor112111841
Navigator.vendorSub112131841
WorkerNavigator.appCodeName4123.51018410
WorkerNavigator.appName4123.541845
WorkerNavigator.appVersion4123.541845
WorkerNavigator.platform4123.541845
WorkerNavigator.product4123.51018410
WorkerNavigator.userAgent4123.541845