View on GitHub


Device detection (phone, tablet, desktop, mobile grade, os, versions)

Download this project as a .zip file Download this project as a tar.gz file


A loose port of Mobile-Detect to JavaScript.

This script will detect the device by comparing patterns against a given User-Agent string. You can find out information about the device rendering your web page:

Current master branch is using detection logic from Mobile-Detect@2.8.11

Live Demo

@zeno created a very nice live-demo. See it in action with your device:




<script src="mobile-detect.js"></script>
    var md = new MobileDetect(window.navigator.userAgent);
    // ... see below

Node.js / Express

var MobileDetect = require('mobile-detect'),
    md = new MobileDetect(req.headers['user-agent']);
// ... see below


var md = new MobileDetect(
    'Mozilla/5.0 (Linux; U; Android 4.0.3; en-in; SonyEricssonMT11i' +
    ' Build/4.1.A.0.562) AppleWebKit/534.30 (KHTML, like Gecko)' +
    ' Version/4.0 Mobile Safari/534.30');

// more typically we would instantiate with 'window.navigator.userAgent'
// as user-agent; this string literal is only for better understanding

console.log( );          // 'Sony'
console.log( );           // 'Sony'
console.log( md.tablet() );          // null
console.log( md.userAgent() );       // 'Safari'
console.log( md.os() );              // 'AndroidOS'
console.log('iPhone') );      // false
console.log('bot') );         // false
console.log( md.version('Webkit') );         // 534.3
console.log( md.versionStr('Build') );       // '4.1.A.0.562'
console.log( md.match('playstation|xbox') ); // false

More Info ...

There is some documentation generated by JSDoc:

Side Effects

Script creates the global property MobileDetect.

Modernizr Extension

When using Modernizr, you can include mobile-detect-modernizr.js. It will add the CSS classes mobile, phone, tablet and mobilegradea if applicable.

You can easily extend it, e.g. android, iphone, etc.

Size (bytes)



$ bower install hgoebl/mobile-detect.js --save

Node.js / npm

$ npm install mobile-detect --save

CDN - jsDelivr

<script src="//"></script>

cdnjs -

<script src="//"></script>

Alternatives / Infos

Often device detection is the first solution in your mind. Please consider looking for other solutions like media queries and feature detection (e.g. w/ Modernizr). Maybe there are better (simpler, smaller, faster) device detection libraries, so here you have a list (order has no meaning apart from first element):

Mobile-Usage Statistics

If you have to provide statistics about how many and which mobile devices are hitting your web-site, you can generate statistics (data and views) with hgoebl/mobile-usage. There are many hooks to customize statistical calculation to your needs.


MIT-License (see LICENSE file).


Your contribution is welcome. If you want new devices to be supported, please contribute to Mobile-Detect instead.

To run generate-script it is necessary to have Mobile-Detect as a sibling directory to mobile-detect.js/. (I tried to use git subtree but had some problems on Mac OS X - probably my fault...)



Open tests/SpecRunner.html in different browsers.


$ npm test
$ # or
$ grunt jasmine_node


If you want, you can donate to Mobile-Detect.