https://github.com/ariya/uainfer
Infer the user agent from its User Agent string
https://github.com/ariya/uainfer
browser javascript nodejs user-agent user-agent-parser useragent
Last synced: 3 months ago
JSON representation
Infer the user agent from its User Agent string
- Host: GitHub
- URL: https://github.com/ariya/uainfer
- Owner: ariya
- License: mit
- Created: 2018-10-06T03:44:52.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-11-28T05:45:29.000Z (almost 3 years ago)
- Last Synced: 2025-06-04T00:05:09.462Z (4 months ago)
- Topics: browser, javascript, nodejs, user-agent, user-agent-parser, useragent
- Language: JavaScript
- Homepage: https://ariya.github.io/uainfer
- Size: 32.2 KB
- Stars: 22
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# uainfer
[](https://www.npmjs.com/package/uainfer)
[](https://bundlephobia.com/result?p=uainfer)
[](https://github.com/ariya/uainfer/blob/master/LICENSE)
[](https://github.com/ariya/uainfer/actions)This is a simple JavaScript library to infer the user agent from its claimed [User-Agent string](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent). The objective of uainfer to provide a human-friendly answer to the inquiry _"What browser am I using?"_.
In the context of a web browser, the most common way to obtain the User-Agent string is from [the value](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent) of `navigator.userAgent`. In the context of an HTTP server, it can be retrieved from the `User-Agent` header field in the HTTP request.
Example usage with Node.js REPL (or [](https://npm.runkit.com/uainfer)):
```js
> uainfer = require('uainfer');
> claim = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2';
> ua = uainfer.analyze(claim);
> ua.toString()
'Internet Explorer 7 on Windows XP'
```(To use this library in a front-end application, see this [JSFiddle demo](http://jsfiddle.net/5467k1tp/))
For browsers utilizing Chrome/Blink engine (Samsung Browser, Opera, Vivaldi, etc), the result can contain the corresponding equivalent version of Chrome:
```js
> console.log(ua)
UserAgent {
browser:
{ name: 'Vivaldi',
version: 1.96,
fullVersion: '1.96.1147.52',
chromeFamily: { version: 65, fullVersion: '65.0.3325.183' } },
os: { name: 'Windows', version: '10' } }
```Non-goals:
* Recognize every single web browsers and obscure user agents out there.
* Deduce other information such as CPU type, device, form factor, etc.Design choices:
* For a better maintenance, avoid regular expressions.
* Always expand its small but fairly extensive test suite.
* Keep it tidy and lightweight This library is created and maintained by [@AriyaHidayat](https://twitter.com/AriyaHidayat).