bowser vs ua-parser-js vs platform
User Agent Detection Libraries Comparison
1 Year
bowserua-parser-jsplatformSimilar Packages:
What's User Agent Detection Libraries?

User agent detection libraries are essential tools in web development that allow developers to identify the browser, operating system, and device type of users visiting their web applications. This information can be crucial for optimizing user experience, ensuring compatibility, and delivering tailored content based on the user's environment. Each of these libraries offers unique features and capabilities for parsing user agent strings, enabling developers to make informed decisions about how to serve content and functionality based on the user's specific setup.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
bowser14,798,8435,540-944 years agoMIT
ua-parser-js14,671,0779,4841.2 MB1817 days agoAGPL-3.0-or-later
platform1,522,7633,233-345 years agoMIT
Feature Comparison: bowser vs ua-parser-js vs platform

Detection Accuracy

  • bowser:

    Bowser provides high accuracy in detecting various browsers and their versions, including mobile and desktop environments. It uses a well-maintained database of user agent strings, ensuring that developers can rely on its results for making decisions about feature support and compatibility.

  • ua-parser-js:

    ua-parser-js excels in detection accuracy across a wide range of user agents, including less common browsers and devices. Its extensive parsing capabilities make it suitable for applications that need to handle diverse user environments.

  • platform:

    Platform focuses on detecting the platform type (browser, OS) rather than detailed version information. While it is accurate for basic detection, it may not provide the granularity needed for applications that require precise browser versioning.

Library Size

  • bowser:

    Bowser is designed to be lightweight, with a small footprint that makes it suitable for performance-sensitive applications. Its size allows for quick loading times, which is crucial for enhancing user experience on the web.

  • ua-parser-js:

    ua-parser-js is larger than Bowser and Platform due to its comprehensive feature set. While it offers extensive capabilities, developers should consider the trade-off between functionality and library size when integrating it into their projects.

  • platform:

    Platform is extremely lightweight and minimalistic, making it an excellent choice for projects where performance is a top priority. Its small size ensures that it does not bloat the application bundle.

Ease of Use

  • bowser:

    Bowser features a simple and intuitive API that allows developers to quickly implement user agent detection without a steep learning curve. Its straightforward methods make it easy to integrate and use within various projects.

  • ua-parser-js:

    ua-parser-js has a slightly steeper learning curve due to its more extensive feature set. However, once understood, it provides powerful capabilities for detailed user agent parsing, making it worthwhile for complex applications.

  • platform:

    Platform is designed for simplicity, providing a very easy-to-use API that requires minimal setup. Developers can quickly get started with basic platform detection without any complicated configurations.

Community and Maintenance

  • bowser:

    Bowser is actively maintained and has a strong community backing. Regular updates ensure that it stays current with new browser versions and user agent changes, making it a reliable choice for developers.

  • ua-parser-js:

    ua-parser-js has a robust community and is regularly updated to accommodate new user agents and browsers. Its active maintenance ensures that it remains a reliable choice for developers needing up-to-date detection capabilities.

  • platform:

    Platform is also maintained, but it may not have as large of a community as Bowser. It is suitable for projects that do not require frequent updates or extensive support.

Extensibility

  • bowser:

    Bowser can be extended through custom user agent strings, allowing developers to add support for specific browsers or versions as needed. This flexibility makes it adaptable for various projects.

  • ua-parser-js:

    ua-parser-js offers extensibility through its ability to add custom parsers and modify existing ones. This feature is beneficial for applications that require tailored detection logic for unique user agents.

  • platform:

    Platform is less extensible compared to Bowser and ua-parser-js, focusing on simplicity rather than customization. It is best suited for straightforward use cases where extensibility is not a primary concern.

How to Choose: bowser vs ua-parser-js vs platform
  • bowser:

    Choose Bowser if you need a lightweight, fast, and reliable library for parsing user agent strings. Bowser is particularly useful for projects that require accurate detection of browsers and their versions, and it has a simple API that makes it easy to integrate into existing codebases.

  • ua-parser-js:

    Choose ua-parser-js if you need a comprehensive solution for user agent parsing that supports a wide range of browsers and devices. It offers extensive capabilities for identifying not just the browser and OS, but also device types, making it suitable for applications that require detailed analytics and reporting.

  • platform:

    Choose Platform if you want a straightforward library that provides a simple way to detect the platform (browser, OS, etc.) without the overhead of a full user agent parser. It is ideal for projects where you only need basic platform detection and prefer a minimalistic approach.

README for bowser

Bowser

A small, fast and rich-API browser/platform/engine detector for both browser and node.

  • Small. Use plain ES5-version which is ~4.8kB gzipped.
  • Optimized. Use only those parsers you need — it doesn't do useless work.
  • Multi-platform. It's browser- and node-ready, so you can use it in any environment.

Don't hesitate to support the project on Github or OpenCollective if you like it ❤️ Also, contributors are always welcome!

Financial Contributors on Open Collective Build Status Greenkeeper badge Coverage Status Downloads

Contents

Overview

The library is made to help to detect what browser your user has and gives you a convenient API to filter the users somehow depending on their browsers. Check it out on this page: https://bowser-js.github.io/bowser-online/.

⚠️ Version 2.0 breaking changes ⚠️

Version 2.0 has drastically changed the API. All available methods are on the docs page.

For legacy code, check out the 1.x branch and install it through npm install bowser@1.9.4.

Use cases

First of all, require the library. This is a UMD Module, so it will work for AMD, TypeScript, ES6, and CommonJS module systems.

const Bowser = require("bowser"); // CommonJS

import * as Bowser from "bowser"; // TypeScript

import Bowser from "bowser"; // ES6 (and TypeScript with --esModuleInterop enabled)

By default, the exported version is the ES5 transpiled version, which do not include any polyfills.

In case you don't use your own babel-polyfill you may need to have pre-built bundle with all needed polyfills. So, for you it's suitable to require bowser like this: require('bowser/bundled'). As the result, you get a ES5 version of bowser with babel-polyfill bundled together.

You may need to use the source files, so they will be available in the package as well.

Browser props detection

Often we need to pick users' browser properties such as the name, the version, the rendering engine and so on. Here is an example how to do it with Bowser:

const browser = Bowser.getParser(window.navigator.userAgent);

console.log(`The current browser name is "${browser.getBrowserName()}"`);
// The current browser name is "Internet Explorer"

or

const browser = Bowser.getParser(window.navigator.userAgent);
console.log(browser.getBrowser());

// outputs
{
  name: "Internet Explorer"
  version: "11.0"
}

or

console.log(Bowser.parse(window.navigator.userAgent));

// outputs
{
  browser: {
    name: "Internet Explorer"
    version: "11.0"
  },
  os: {
    name: "Windows"
    version: "NT 6.3"
    versionName: "8.1"
  },
  platform: {
    type: "desktop"
  },
  engine: {
    name: "Trident"
    version: "7.0"
  }
}

Filtering browsers

You could want to filter some particular browsers to provide any special support for them or make any workarounds. It could look like this:

const browser = Bowser.getParser(window.navigator.userAgent);
const isValidBrowser = browser.satisfies({
  // declare browsers per OS
  windows: {
    "internet explorer": ">10",
  },
  macos: {
    safari: ">10.1"
  },

  // per platform (mobile, desktop or tablet)
  mobile: {
    safari: '>=9',
    'android browser': '>3.10'
  },

  // or in general
  chrome: "~20.1.1432",
  firefox: ">31",
  opera: ">=22",

  // also supports equality operator
  chrome: "=20.1.1432", // will match particular build only

  // and loose-equality operator
  chrome: "~20",        // will match any 20.* sub-version
  chrome: "~20.1"       // will match any 20.1.* sub-version (20.1.19 as well as 20.1.12.42-alpha.1)
});

Settings for any particular OS or platform has more priority and redefines settings of standalone browsers. Thus, you can define OS or platform specific rules and they will have more priority in the end.

More of API and possibilities you will find in the docs folder.

Browser names for .satisfies()

By default you are supposed to use the full browser name for .satisfies. But, there's a short way to define a browser using short aliases. The full list of aliases can be found in the file.

Similar Projects

  • Kong - A C# port of Bowser.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.