UNPKG

node-device-detector

Version:

Nodejs device detector (port matomo-org/device-detector)

1,042 lines (976 loc) 64.9 kB
# [node-device-detector](https://www.npmjs.com/package/node-device-detector) _Last update: 21/05/2025_ ## Description Port php lib [matomo-org/device-detector](https://github.com/matomo-org/device-detector) to NodeJs * [Online demo](https://mwfx8e.sse.codesandbox.io/) ## Code Status <a name="top"></a> ![Chai](https://github.com/sanchezzzhak/node-device-detector/workflows/Tests/badge.svg) ![YAML Lint](https://github.com/sanchezzzhak/node-device-detector/workflows/YAML%20Lint/badge.svg) ![Prettier](https://github.com/sanchezzzhak/node-device-detector/workflows/Prettier/badge.svg) ![CodeQL](https://github.com/sanchezzzhak/node-device-detector/workflows/CodeQL/badge.svg) ## Contents + [Helpers](#helpers) + [Single parsers](#single-parsers) + [Settings](#options) + [Specific methods](#specific-methods) + [Examples](#others) + [Support brands](#brands-list) + [Support device types](#device-types) + [Support browsers](#browsers-list) Install - ``` npm install node-device-detector --save ``` or ``` yarn add node-device-detector ``` Usage - ```js // commonJS const DeviceDetector = require('node-device-detector'); // or ESModule import DeviceDetector from "node-device-detector"; const detector = new DeviceDetector({ clientIndexes: true, deviceIndexes: true, osIndexes: true, deviceAliasCode: false, deviceTrusted: false, deviceInfo: false, maxUserAgentSize: 500, }); const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const result = detector.detect(userAgent); console.log('result parse', result); ``` ### Result parse ```text { os: { name: 'Android', // os name short_name: 'AND', // os short code name (format A-Z0-9{3}) version: '5.0', // os version platform: '', // os platform (x64, x32, amd etc.) family: 'Android' // os family }, client: { type: 'browser', // client type name: 'Chrome Mobile', // client name name short_name: 'CM', // client short code name (only browser, format A-Z0-9{2,3}) version: '43.0.2357.78', // client version engine: 'Blink', // client engine name (only browser) engine_version: '' // client engine version (only browser) family: 'Chrome' // client family (only browser) }, device: { id: 'ZT', // short code device brand name (format A-Z0-9{2,3}) type: 'smartphone', // device type brand: 'ZTE', // device brand name model: 'Nubia Z7 max' // device model name code: 'NX505J' // device model code (only result for enable detector.deviceAliasCode) trusted: true // device trusted (result only for enable detector.deviceTrusted and have fixture data + ClientHints are required) info: {} // device specs (result only fir enable detector.deviceInfo) } } ``` Result parse empty ```text { os: {}, // empty objects its os not found client: {}, // empty objects its client not found device: { id: '', // empty string its device brand not found type : 'device type', // device type or empty string brand: '', // empty string its device brand not found model: '' // empty string its device model not found } } ``` ### Helpers<a name="helpers"></a> ### [[top]](#top) ```js // commonJS const DeviceDetector = require('node-device-detector'); const DeviceHelper = require('node-device-detector/helper'); // or ESModule import DeviceDetector from "node-device-detector"; import DeviceHelper from "node-device-detector/helper"; const detector = new DeviceDetector(); const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const result = detector.detect(userAgent); /* check device type (feature phone, smartphone or phablet) */ DeviceHelper.isMobile(result); /* check device type is desktop */ DeviceHelper.isDesktop(result); /* check device type is tablet */ DeviceHelper.isTablet(result); /* check device type car (side panel in car) */ DeviceHelper.isCar(result); /* check device type feature phone (push-button telephones) */ DeviceHelper.isFeaturePhone(result); /* check device type smartphone */ DeviceHelper.isSmartphone(result); /* check device type phablet */ DeviceHelper.isPhablet(result); /* check device type game console (xBox, PlayStation, Nintendo etc) */ DeviceHelper.isConsole(result); /* check device type smart speaker (Alisa, Alexa, HomePod etc) */ DeviceHelper.isSmartSpeaker(result); /* check device type SmartTV/TV box */ DeviceHelper.isTv(result); /* check device type portable camera */ DeviceHelper.isCamera(result); /* portable terminal, portable projector */ DeviceHelper.isPeripheral(result); /* LCD panel or interactive panel */ DeviceHelper.isSmartDisplay(result); /* check device type boxes, blu-ray players */ DeviceHelper.isPortableMediaPlayer(result); /* check device type watches, headsets */ DeviceHelper.isWearable(result); /* result device type number id */ DeviceHelper.getDeviceTypeId(result); /* result device type string */ DeviceHelper.getDeviceType(result); /* result client type string */ DeviceHelper.getClientType(result); ``` Using DeviceDetector + ClientHints - [[top]](#top) ```js // commonJS const DeviceDetector = require('node-device-detector'); const DeviceHelper = require('node-device-detector/helper'); const ClientHints = require('node-device-detector/client-hints'); // or ESModule import DeviceDetector from "node-device-detector"; import DeviceHelper from "node-device-detector/helper"; import ClientHints from "node-device-detector/client-hints"; const detector = new DeviceDetector({ clientIndexes: true, deviceIndexes: true, osIndexes: true, deviceAliasCode: false, deviceTrusted: false, deviceInfo: false, // ... all options scroll to Setter/Getter/Options }); /** server side use celint hinsts */ const clientHints = new ClientHints(); const userAgent = res.headers['user-agent']; let headers = res.headers; let meta = {} /** option meta interface (needed to detect whether the device is trusted, this information can be obtained from browser) { width: '720', // Math.ceil(window.screen.width) height: '1440', // Math.ceil(window.screen.height) gpu: 'PowerVR SGX Doma', // (()=>{let e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");return t?t.getParameter(t.getExtension("WEBGL_debug_renderer_info").UNMASKED_RENDERER_WEBGL):null})(); } More details in file docs/CLIENT_HINTS_BROWSER.MD */ let hints = clientHints.parse(headers /* or body.hints */, meta /* or body.meta */); const result = detector.detect(userAgent, hints); // result promise // added for 2.0.4 version or later const result = detector.detectAsync(userAgent, hints); ``` Using parsers singly <a name="single-parsers"></a> - [[top]](#top) #### Detect Bot ```js // commonJS const DeviceDetector = require('node-device-detector'); // or ESModule import DeviceDetector from "node-device-detector"; const userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)'; const detector = new DeviceDetector(); const result = detector.parseBot(userAgent); ``` #### Detect Os ```js // commonJS const DeviceDetector = require('node-device-detector'); // or ESModule import DeviceDetector from "node-device-detector"; const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const detector = new DeviceDetector({ clientIndexes: true, osIndexes: true, deviceIndexes: true, deviceAliasCode: false, }); const result = detector.parseOs(userAgent/*, clientHintData*/); console.log('Result parse os', result); ``` #### Detect Client ```js // commonJS const DeviceDetector = require('node-device-detector'); // or ESModule import DeviceDetector from "node-device-detector"; const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const detector = new DeviceDetector({ clientIndexes: true, deviceIndexes: true, osIndexes: true, deviceAliasCode: false, }); const result = detector.parseClient(userAgent/*, clientHintData*/); console.log('Result parse client', result); ``` #### Lite parse not detect brand ```js // commonJS const DeviceDetector = require('node-device-detector'); // or ESModule import DeviceDetector from "node-device-detector"; const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const detector = new DeviceDetector({ clientIndexes: true, deviceIndexes: true, osIndexes: true, deviceAliasCode: false, }); const resultOs = detector.parseOs(userAgent); const resultClient = detector.parseClient(userAgent); const resultDeviceType = detector.parseDeviceType( userAgent, resultOs, resultClient, {}, /*, clientHintData */ ); const result = Object.assign({os:resultOs}, {client:resultClient}, {device: resultDeviceType}); console.log('Result parse lite', result); ``` ### Getter/Setter/Options <a name="options"></a> ### [[top]](#top) ```js const detector = new DeviceDetector({ osVersionTruncate: 0, // Truncate OS version from 5.0 to 5 (default '' or null) clientVersionTruncate: 2, // Truncate Client version Chrome from 43.0.2357.78 to 43.0.2357 (default '' or null) deviceIndexes: true, // Using indexes for faster device search (default false) clientIndexes: true, // Using indexes for faster client search (default false) osIndexes: true, // Using indexes for faster os search (default false) deviceAliasCode: true, // adds device code to result [device.code] as is (default false) maxUserAgentSize: 500, // uses only 500 chars from useragent string (default null - unlimited) deviceTrusted: true, // check device by specification (default false) deviceInfo: true, // adds device specification to result [device.info] (default false) }); // You can override these settings at any time using special setters, example detector.osVersionTruncate = 0; detector.clientVersionTruncate = 2; detector.deviceIndexes = true; detector.clientIndexes = true; detector.osIndexes = true; detector.deviceAliasCode = true; detector.maxUserAgentSize = 500; detector.deviceTrusted = true; detector.deviceInfo = true; // Array available device types detector.getAvailableDeviceTypes(); // Array available devices brands detector.getAvailableBrands(); // Array available browsers detector.getAvailableBrowsers(); ``` ### Specific methods <a name="specific-methods"></a> ### ```js const DEVICE_PARSER_NAMES = detector.getDeviceParserNames(); // result colection names for device parsers const CLIENT_PARSER_NAMES = detector.getClientParserNames(); // result colection names for client parsers const OS_PARSER_NAMES = detector.getOsParserNames(); // result collection names for os parsers const BOT_PARSER_NAMES = detector.getBotParserNames(); // result collection names for bot parsers const aliasDevice = detector.getParseAliasDevice(); // result AliasDevice parser const deviceInfo = detector.getParseInfoDevice(); // result InfoDevice parser // added custom parser detector.addParseDevice('MyDeviceParser', new MyDeviceParser()); detector.addParseClient('MyClientParser', new MyClientParser()); detector.addParseOs('MyOsParser', new MyOsParser()); detector.addParseBot('MyBotParser', new MyBotParser()); // get single parser by name detector.getParseDevice('MyDeviceParser' /* or DEVICE_PARSER_NAMES.MOBILE */); detector.getParseClient('MyClientParser' /* or CLIENT_PARSER_NAMES.BROWSER */); detector.getParseOs('MyOsParser'/* or OS_PARSER_NAMES.DEFAULT */); detector.getParseBot('MyBotParser'); ``` ### Getting device code as it (experimental) <a name="device-code"></a> [[top]](#top) ```js const DeviceDetector = require('node-device-detector'); const detector = new DeviceDetector() const aliasDevice = detector.getParseAliasDevice(); const result = aliasDevice.parse(userAgent); console.log('Result parse code model', result); // or const AliasDevice = require('node-device-detector/parser/device/alias-device'); const userAgent = 'Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36'; const aliasDevice = new AliasDevice(); const result = aliasDevice.parse(userAgent); console.log('Result parse code model', result); /* result { name: "NX505J" } is not parse result {name: ""} */ ``` ### What about performance? ``` node tests/banchmark.js test result: UA Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36 ----- ┌──────────────────────┬─────────┬──────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼──────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '20,235' │ '±0.26%' │ 98 │ │ detector.parseClient │ 'on' │ '46,058' │ '±0.34%' │ 98 │ │ detector.parseOS │ 'on' │ '20,317' │ '±0.32%' │ 97 │ │ detector.detect │ 'on' │ '7,526' │ '±0.76%' │ 92 │ └──────────────────────┴─────────┴──────────┴─────────────────┴──────────────┘ ``` <details> <summary>Other tests</summary> ``` UA Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 ----- detector.parseDevice x 295,672 ops/sec ±0.79% (96 runs sampled) detector.parseClient x 60,996 ops/sec ±0.60% (99 runs sampled) detector.parseOS x 35,174 ops/sec ±0.28% (97 runs sampled) detector.detect x 16,631 ops/sec ±0.21% (96 runs sampled) ┌──────────────────────┬─────────┬───────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼───────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '295,672' │ '±0.79%' │ 96 │ │ detector.parseClient │ 'on' │ '60,996' │ '±0.60%' │ 99 │ │ detector.parseOS │ 'on' │ '35,174' │ '±0.28%' │ 97 │ │ detector.detect │ 'on' │ '16,631' │ '±0.21%' │ 96 │ └──────────────────────┴─────────┴───────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Linux; Android 12; M2101K9AG Build/SKQ1.210908.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.5005.125 Mobile Safari/537.36 UCURSOS/v1.6_273-android ┌──────────────────────┬─────────┬──────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼──────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '13,671' │ '±0.42%' │ 96 │ │ detector.parseClient │ 'on' │ '9,154' │ '±0.26%' │ 98 │ │ detector.parseOS │ 'on' │ '15,087' │ '±0.36%' │ 99 │ │ detector.detect │ 'on' │ '3,192' │ '±0.29%' │ 97 │ └──────────────────────┴─────────┴──────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Instagram 239.2.0.17.109 (iPhone9,3; iOS 15_5; it_IT; it-IT; scale=2.00; 750x1334; 376668393) NW/3 ┌──────────────────────┬─────────┬───────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼───────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '6,570' │ '±0.30%' │ 98 │ │ detector.parseClient │ 'on' │ '113,007' │ '±0.41%' │ 99 │ │ detector.parseOS │ 'on' │ '18,882' │ '±0.24%' │ 99 │ │ detector.detect │ 'on' │ '3,849' │ '±0.46%' │ 97 │ └──────────────────────┴─────────┴───────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Linux; Android 8.0.0; RNE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36 ┌──────────────────────┬─────────┬──────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼──────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '3,951' │ '±0.37%' │ 97 │ │ detector.parseClient │ 'on' │ '47,425' │ '±0.28%' │ 93 │ │ detector.parseOS │ 'on' │ '21,305' │ '±0.39%' │ 96 │ │ detector.detect │ 'on' │ '2,587' │ '±0.39%' │ 98 │ └──────────────────────┴─────────┴──────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.124 Safari/537.36 Edg/102.0.1245.44 ┌──────────────────────┬─────────┬───────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼───────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'on' │ '280,116' │ '±1.63%' │ 97 │ │ detector.parseClient │ 'on' │ '58,553' │ '±0.31%' │ 98 │ │ detector.parseOS │ 'on' │ '38,153' │ '±0.31%' │ 94 │ │ detector.detect │ 'on' │ '15,530' │ '±0.73%' │ 96 │ └──────────────────────┴─────────┴───────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 ┌──────────────────────┬─────────┬───────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼───────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '584,609' │ '±0.30%' │ 96 │ │ detector.parseClient │ 'off' │ '668' │ '±70.73%' │ 97 │ │ detector.parseOS │ 'off' │ '4,355' │ '±0.31%' │ 98 │ │ detector.detect │ 'off' │ '774' │ '±0.23%' │ 96 │ └──────────────────────┴─────────┴───────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Linux; Android 5.0; NX505J Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36 ┌──────────────────────┬─────────┬─────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼─────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '343' │ '±49.33%' │ 94 │ │ detector.parseClient │ 'off' │ '526' │ '±0.26%' │ 97 │ │ detector.parseOS │ 'off' │ '3,694' │ '±0.23%' │ 97 │ │ detector.detect │ 'off' │ '220' │ '±27.12%' │ 87 │ └──────────────────────┴─────────┴─────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Linux; Android 12; M2101K9AG Build/SKQ1.210908.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.5005.125 Mobile Safari/537.36 UCURSOS/v1.6_273-android ┌──────────────────────┬─────────┬─────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼─────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '424' │ '±0.25%' │ 95 │ │ detector.parseClient │ 'off' │ '6,414' │ '±0.43%' │ 96 │ │ detector.parseOS │ 'off' │ '7,193' │ '±0.33%' │ 96 │ │ detector.detect │ 'off' │ '268' │ '±30.56%' │ 93 │ └──────────────────────┴─────────┴─────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Instagram 239.2.0.17.109 (iPhone9,3; iOS 15_5; it_IT; it-IT; scale=2.00; 750x1334; 376668393) NW/3 ┌──────────────────────┬─────────┬──────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼──────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '2,990' │ '±0.33%' │ 97 │ │ detector.parseClient │ 'off' │ '34,868' │ '±0.21%' │ 99 │ │ detector.parseOS │ 'off' │ '3,379' │ '±0.42%' │ 95 │ │ detector.detect │ 'off' │ '1,274' │ '±0.24%' │ 99 │ └──────────────────────┴─────────┴──────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Linux; Android 8.0.0; RNE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36 ┌──────────────────────┬─────────┬─────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼─────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '603' │ '±84.34%' │ 97 │ │ detector.parseClient │ 'off' │ '583' │ '±0.38%' │ 97 │ │ detector.parseOS │ 'off' │ '9,073' │ '±0.33%' │ 96 │ │ detector.detect │ 'off' │ '272' │ '±28.33%' │ 90 │ └──────────────────────┴─────────┴─────────┴─────────────────┴──────────────┘ ----- UA Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.124 Safari/537.36 Edg/102.0.1245.44 ┌──────────────────────┬─────────┬───────────┬─────────────────┬──────────────┐ │ parse method │ indexes │ ops/sec │ margin of error │ runs sampled │ ├──────────────────────┼─────────┼───────────┼─────────────────┼──────────────┤ │ detector.parseDevice │ 'off' │ '223,548' │ '±0.36%' │ 96 │ │ detector.parseClient │ 'off' │ '1,268' │ '±0.47%' │ 99 │ │ detector.parseOS │ 'off' │ '4,509' │ '±0.59%' │ 94 │ │ detector.detect │ 'off' │ '880' │ '±0.25%' │ 96 │ └──────────────────────┴─────────┴───────────┴─────────────────┴──────────────┘ ``` </details> ### What about tests? Yes we use tests, total tests: ~83.9k ### Get more information about a device (experimental) > This parser is experimental and contains few devices. (1870 devices, alias devices 3970) > ##### Support detail brands/models list: <details> <summary>Show details</summary> | Brand | Device count | Alias count | - | Brand | Device count | Alias count | |----|----|----|----|----|----|----| | 360 | 12 | 13 | - | 8848 | 4 | 0 | | 2e | 2 | 2 | - | 3gnet | 0 | 1 | | 3q | 14 | 62 | - | 4good | 10 | 1 | | 4ife | 0 | 1 | - | a1 | 0 | 1 | | accent | 0 | 5 | - | ace | 8 | 0 | | acer | 5 | 68 | - | acteck | 0 | 0 | | advan | 0 | 1 | - | advance | 0 | 14 | | afrione | 0 | 2 | - | agm | 4 | 0 | | ainol | 2 | 16 | - | airness | 0 | 0 | | airo wireless | 1 | 0 | - | airties | 0 | 0 | | ais | 0 | 2 | - | aiuto | 0 | 0 | | aiwa | 0 | 0 | - | akai | 2 | 5 | | alba | 0 | 1 | - | alcatel | 29 | 433 | | alcor | 1 | 0 | - | alfawise | 0 | 0 | | aligator | 0 | 0 | - | allcall | 0 | 3 | | alldocube | 2 | 6 | - | allview | 0 | 46 | | allwinner | 0 | 3 | - | altech uec | 0 | 0 | | altek | 1 | 0 | - | altice | 0 | 0 | | altron | 0 | 1 | - | amazon | 19 | 30 | | amgoo | 2 | 15 | - | amigoo | 0 | 0 | | amoi | 62 | 2 | - | andowl | 0 | 0 | | anry | 0 | 0 | - | ans | 0 | 0 | | aoc | 0 | 0 | - | aoson | 0 | 6 | | apple | 46 | 44 | - | archos | 89 | 7 | | arian space | 4 | 2 | - | ark | 1 | 36 | | armphone | 0 | 0 | - | arnova | 0 | 36 | | arris | 0 | 0 | - | artel | 0 | 2 | | artizlee | 0 | 1 | - | asano | 0 | 1 | | asanzo | 1 | 0 | - | ask | 0 | 0 | | assistant | 2 | 19 | - | asus | 81 | 230 | | at&t | 1 | 2 | - | atom | 0 | 3 | | atvio | 0 | 0 | - | avenzo | 1 | 3 | | avh | 1 | 0 | - | avvio | 3 | 2 | | axxion | 0 | 0 | - | azumi mobile | 0 | 1 | | bangolufsen | 0 | 0 | - | barnes & noble | 1 | 6 | | bb mobile | 2 | 10 | - | beeline | 11 | 1 | | bellphone | 1 | 1 | - | benq | 0 | 1 | | beyond | 0 | 7 | - | bezkam | 1 | 0 | | bigben | 1 | 0 | - | bihee | 2 | 1 | | billion | 1 | 1 | - | bird | 1 | 0 | | bitel | 4 | 1 | - | bitmore | 2 | 1 | | bkav | 1 | 0 | - | black bear | 2 | 0 | | black fox | 18 | 12 | - | blackview | 16 | 9 | | blu | 13 | 15 | - | bravis | 24 | 17 | | cgv | 1 | 0 | - | clarmin | 3 | 0 | | colors | 7 | 2 | - | cyrus | 1 | 0 | | digifors | 1 | 1 | - | engel | 1 | 1 | | firefly mobile | 4 | 1 | - | formuler | 2 | 0 | | geotel | 3 | 0 | - | gionee | 4 | 0 | | google | 3 | 5 | - | hisense | 2 | 0 | | hoffmann | 1 | 1 | - | hotwav | 18 | 1 | | huawei | 226 | 586 | - | i-mobile | 1 | 0 | | imo mobile | 5 | 0 | - | infinix | 26 | 40 | | inoi | 4 | 0 | - | intex | 18 | 3 | | ipro | 6 | 7 | - | irbis | 15 | 0 | | kiowa | 1 | 0 | - | kurio | 3 | 3 | | lava | 1 | 1 | - | lg | 127 | 286 | | malata | 1 | 0 | - | maze | 4 | 0 | | minix | 1 | 1 | - | mivo | 3 | 2 | | mobicel | 3 | 1 | - | motorola | 28 | 26 | | noa | 1 | 0 | - | nomi | 1 | 1 | | nuu mobile | 9 | 3 | - | nuvo | 3 | 2 | | oneplus | 18 | 48 | - | oppo | 115 | 215 | | oukitel | 8 | 0 | - | öwn | 1 | 2 | | panasonic | 5 | 8 | - | pipo | 5 | 0 | | poco | 9 | 15 | - | realme | 67 | 96 | | samsung | 176 | 761 | - | sharp | 2 | 4 | | sony | 44 | 172 | - | supra | 1 | 0 | | tecno mobile | 91 | 131 | - | tiphone | 1 | 0 | | ulefone | 8 | 0 | - | utok | 1 | 0 | | uz mobile | 1 | 0 | - | vernee | 9 | 2 | | vivo | 205 | 297 | - | walton | 13 | 0 | | we | 8 | 0 | - | weimei | 1 | 0 | | wiko | 7 | 12 | - | wileyfox | 9 | 0 | | wink | 4 | 0 | - | xiaomi | 9 | 8 | | zync | 2 | 0 | - | zyq | 1 | 13 | </details> ```js const DeviceDetector = require('node-device-detector'); const detector = new DeviceDetector(); const infoDevice = detector.getParseInfoDevice(); const result = infoDevice.info('Asus', 'Zenfone 4'); console.log('Result information', result); // or const InfoDevice = require('node-device-detector/parser/device/info-device'); const infoDevice = new InfoDevice(); const result = infoDevice.info('Asus', 'Zenfone 4'); console.log('Result information', result); /* result { display: { size: '5.5', resolution: '1080x1920', // width+height ratio: '16:9', ppi: "401" }, size: '155.4x75.2x7.7', // width+height+thickness weight: '165', hardware: { // ... } os: "Android 7.1", release: "2017.08", sim": "2", } is not found result null */ ``` Cast methods ```js const InfoDevice = require('node-device-detector/parser/device/info-device'); const infoDevice = new InfoDevice; infoDevice.setSizeConvertObject(true); infoDevice.setResolutionConvertObject(true); const result = infoDevice.info('Asus', 'Zenfone 4'); console.log('Result information', result); /* result { display: { size: "5.5", // value in inchs resolution: { width: "1080", // value in px height: "1920" // value in px }, ratio: "16:9", // calculated field ppi: "401" // calculated field }, hardware: { ram: "4096", // RAM value in megabytes cpu_id: 19, // id cpu model in collection cpu: { name: "Qualcomm Snapdragon 630", // brand + name type: "ARM", // architecture type cores: "8", // number of cores / threads clock_rate: 2200, // value in MHz gpu_id: 16 // id gpu model in collection }, gpu: { name: "Qualcomm Adreno 508", clock_rate: 650 } }, os: "Android 7.1", // initial OS version release: "2017.08", // date release or anonce sim": "2", // count SIM size: { width: "75.2", // physical width in millimeters height: "155.4", // physical height in millimeters thickness: "7.7" // physical thickness in millimeters }, weight: "165" // in grams }; */ ``` Others <a name="others"></a> - [[top]](#top) ##### Examples * [detect device in native server](docs/NATIVE_SERVER.MD) * [detect device + client hints in native server](docs/CLIENT_HINT_NATIVE_SERVER.MD) * [detect device in express.js](docs/EXPRESS_SERVER.MD) * [detect device in moleculer.js](docs/MICROSERVICE.MD) * [detect device in uws.js](docs/UWS_SERVER.MD) * [detect device in typescript](docs/TYPE_SCRIPT.MD) * [get client hints in browser](docs/CLIENT_HINTS_BROWSER.MD) <a name="brands-list"></a> ##### Support detect brands list (2080): <details> <summary>Show details</summary> Brand | Brand | Brand | Brand | Brand | Brand | Brand --- | --- | --- | --- | --- | --- | --- 10moons | 2E | 360 | 3GNET | 3GO | 3Q | 4Good 4ife | 5IVE | 7 Mobile | 8848 | A&K | A1 | A95X AAUW | Accent | Accesstyle | Ace | Aceline | Acepad | Acer Acteck | actiMirror | Adreamer | Adronix | Advan | Advance | Advantage Air AEEZO | AFFIX | AfriOne | AG Mobile | AGM | AIDATA | AileTV Ainol | Airis | Airness | AIRON | Airpha | Airtel | Airties AirTouch | AIS | Aiuto | Aiwa | Ajib | Akai | AKIRA Alba | Alcatel | Alcor | ALDI NORD | ALDI SÜD | Alfawise | Alienware Aligator | All Star | AllCall | AllDocube | allente | ALLINmobile | Allview Allwinner | Alps | alpsmart | Altech UEC | Altibox | Altice | Altimo altron | Altus | AMA | Amazon | Amazon Basics | AMCV | AMGOO Amigoo | Amino | Amoi | ANBERNIC | ANCEL | andersson | Andowl Angelcare | AngelTech | Anker | Anry | ANS | ANXONIT | AOC Aocos | Aocwei | AOpen | Aoro | Aoson | AOYODKG | ApoloSign Apple | Aquarius | Arçelik | Archos | Arian Space | Arival | Ark ArmPhone | Arnova | ARRIS | Artel | Artizlee | ArtLine | Asano Asanzo | Ask | Aspera | ASSE | Assistant | astro (MY) | Astro (UA) Asus | AT&T | Athesi | Atlantic Electrics | Atmaca Elektronik | ATMAN | ATMPC ATOL | Atom | Atouch | Atozee | Attila | Atvio | Audiovox AUPO | AURIS | Autan | AUX | Avaya | Avenzo | AVH Avvio | Awow | AWOX | AXEN | Axioo | AXXA | Axxion AYA | AYYA | Azeyou | AZOM | Azumi Mobile | Azupik | b2m Backcell | BAFF | BangOlufsen | Barnes & Noble | BARTEC | BASE | BAUHN BB Mobile | BBK | BDF | BDQ | BDsharing | Beafon | Becker Beeline | Beelink | Beetel | Beista | Beko | Bell | Bellphone Benco | Benesse | BenQ | BenQ-Siemens | BenWee | Benzo | Beyond Bezkam | BGH | Biegedy | Bigben | BIHEE | BilimLand | Billion Billow | BioRugged | Bird | Bitel | Bitmore | Bittium | Bkav Black Bear | Black Box | Black Fox | Blackpcs | Blackphone | Blackton | Blackview Blaupunkt | Bleck | BLISS | Blloc | Blow | Blu | Bluboo Bluebird | Bluedot | Bluegood | BlueSky | Bluewave | BluSlate | BMAX Bmobile | BMW | BMXC | Bobarry | bogo | Bolva | Bookeen Boost | Botech | Boway | bq | Bqeel | BrandCode | Brandt BRAVE | Bravis | BrightSign | Brigmton | Brondi | BROR | BS Mobile Bubblegum | Bundy | Bush | BuzzTV | BYD | BYJU'S | BYYBUO C Idea | C5 Mobile | CADENA | CAGI | Caixun | Camfone | Canaima Canal Digital | Canal+ | Canguro | Capitel | Captiva | Carbon Mobile | Carrefour Casio | Casper | Cat | Cavion | CCIT | Cecotec | Ceibal Celcus | Celkon | Cell-C | Cellacom | CellAllure | Cellution | CENTEK Centric | CEPTER | CG Mobile | CGV | Chainway | Changhong | CHCNAV Cherry Mobile | Chico Mobile | ChiliGreen | China Mobile | China Telecom | Chuwi | CipherLab Citycall | CKK Mobile | Claresta | Clarmin | CLAYTON | ClearPHONE | Clementoni Cloud | Cloudfone | Cloudpad | Clout | Clovertek | CMF | CnM Cobalt | Coby Kyros | Cogeco | COLORROOM | Colors | Comio | CommScope Compal | Compaq | COMPUMAX | ComTrade Tesla | Conceptum | Concord | ConCorde Condor | Connectce | Connex | Conquest | CONSUNG | Continental Edison | Contixo coocaa | COOD-E | Coolpad | Coopers | CORN | Cosmote | Covia Cowon | COYOTE | CPDEVICE | CreNova | Crescent | Crestron | Cricket Crius Mea | Crony | Crosscall | Crown | Ctroniq | Cube | CUBOT CUD | Cuiud | Cultraview | CVTE | Cwowdefu | CX | Cyrus D-Link | D-Tech | Daewoo | Danew | DangcapHD | Dany | Daria DASS | Datalogic | Datamini | Datang | Datawind | Datsun | Dawlance Dazen | DbPhone | Dbtel | Dcode | DEALDIG | Dell | Denali Denka | Denver | Desay | DeWalt | DEXP | DEYI | DF DGTEC | DIALN | Dialog | Dicam | Digi | Digicel | DIGICOM Digidragon | DIGIFORS | Digihome | Digiland | Digit4G | Digma | DIJITSU DIKOM | DIMO | Dinalink | Dinax | DING DING | Diofox | DIORA DISH | Disney | Ditecma | Diva | DiverMax | Divisat | DIXON DL | DMM | DMOAO | DNS | DoCoMo | Doffler | Dolamee Dom.ru | Doogee | Doopro | Doov | Dopod | Doppio | Dora DORLAND | Doro | DPA | DRAGON | Dragon Touch | Dreamgate | DreamStar DreamTab | Droidlogic | Droxio | DSDevices | DSIC | Dtac | DUDU AUTO Dune HD | DUNNS Mobile | DuoTV | Durabook | Duubee | Dykemann | Dyon E-Boda | E-Ceros | E-TACHI | E-tel | Eagle | EagleSoar | EAS Electric Easypix | EBEN | EBEST | Echo Mobiles | ecom | ECON | ECOO EcoStar | ECS | Edenwood | EE | EFT | EGL | EGOTEK Ehlel | Einstein | EKINOX | EKO | Eks Mobility | EKT | ELARI ELE-GATE | Elecson | Electroneum | ELECTRONIA | Elekta | Elektroland | Element Elenberg | Elephone | Elevate | Elista | elit | Elong Mobile | Eltex Ematic | Emporia | ENACOM | ENDURO | Energizer | Energy Sistem | Engel ENIE | Enot | eNOVA | Entity | Envizen | Ephone | Epic Epik One | Epson | Equator | Ergo | Ericsson | Ericy | Erisson Essential | Essentielb | eSTAR | ETOE | Eton | eTouch | Etuline Eudora | Eurocase | EUROLUX | Eurostar | Evercoss | Everest | Everex Everfine | Everis | Evertek | Evolio | Evolveo | Evoo | EVPAD EvroMedia | evvoli | EWIS | EXCEED | Exmart | ExMobile | EXO Explay | Express LUCK | ExtraLink | Extrem | Eyemoo | EYU | Ezio Ezze | F&U | F+ | F150 | F2 Mobile | Facebook | Facetel Facime | Fairphone | Famoco | Famous | Fantec | FaRao Pro | Farassoo FarEasTone | Fengxiang | Fenoti | FEONAL | Fero | FFF SmartLife | Figgers FiGi | FiGO | FiiO | Filimo | FILIX | FinePower | FINIX Finlux | FireFly Mobile | FISE | Fision | FITCO | Fluo | Fly FLYCAT | FLYCOAY | FMT | FNB | FNF | Fobem | Fondi Fonos | FONTEL | FOODO | FORME | Formovie | Formuler | Forstar Fortis | FortuneShip | FOSSiBOT | Four Mobile | Fourel | Foxconn | FoxxD FPT | free | Freetel | FreeYond | FRESH | Frunsi | Fuego FUJICOM | Fujitsu | Funai | Fusion5 | Future Mobile Technology | Fxtec | G-Guard G-PLUS | G-TiDE | G-Touch | Galactic | Galatec | Galaxy Innovations | Gamma Garmin-Asus | Gateway | Gazal | Gazer | GDL | Geanee | Geant Gear Mobile | Gemini | General Mobile | Genesis | Geo Phone | GEOFOX | Geotel Geotex | GEOZON | Getnord | GFive | Gfone | Ghia | Ghong Ghost | Gigabyte | Gigaset | Gini | Ginzzu | Gionee | GIRASOLE Globex | Globmall | GlocalMe | Glofiish | GLONYX | Glory Star | GLX GN Electronics | GOCLEVER | Gocomma | GoGEN | Gol Mobile | GOLDBERG | GoldMaster GoldStar | Goly | Gome | GoMobile | GOODTEL | Google | Goophone Gooweel | GOtv | Gplus | Gradiente | Graetz | Grape | Great Asia Gree | Green Lion | Green Orange | Greentel | Gresso | Gretel | GroBerwert Grünberg | Grundig | Gtel | GTMEDIA | GTX | Guophone | GVC Pro H133 | H96 | Hafury | Haier | Haipai | Haixu | Hamlet Hammer | Handheld | HannSpree | Hanseatic | Hanson | HAOQIN | HAOVM Hardkernel | Harper | Hartens | Hasee | Hathway | HAVIT | HDC HeadWolf | HEC | Heimat | Helio | Hemilton | HERO | HexaByte Hezire | Hi | Hi Nova | Hi-Level | Hiberg | HiBy | High Q HIGH1ONE | Highscreen | HiGrace | HiHi | HiKing | HiMax | HIPER Hipstreet | Hiremco | Hisense | Hitachi | Hitech | HKC | HKPro HLLO | HMD | hoco | HOFER | Hoffmann | HOLLEBERG | Homatics Hometech | HOMII | Homtom | Honeywell | HongTop | HONKUAHG | Hoozo Hopeland | Horion | Horizon | Horizont | Hosin | Hot Pepper | HOTACK Hotel | HOTREALS | Hotwav | How | HP | HTC | Huadoo Huagan | Huavi | Huawei | Hugerock | Humanware | Humax | HUMElab Hurricane | Huskee | Hyatta | Hykker | Hyrican | Hytera | Hyundai Hyve | I KALL | i-Cherry | I-INN | i-Joy | i-mate | i-mobile I-Plus | iBall | iBerry | ibowin | iBrit | IconBIT | Icone Gold iData | IDC | iDino | iDroid | iFIT | iGet | iHome Life iHunt | Ikea | IKI Mobile | iKoMo | iKon | iKonia | IKU Mobile iLA | iLepo | iLife | iMan | Imaq | iMars | iMI IMO Mobile | Imose | Impression | iMuz | iNavi | INCAR | Inch Inco | Indurama | iNew | Infiniton | InfinityPro | Infinix | InFocus InfoKit | Infomir | InFone | Inhon | Inka | Inkti | InnJoo Innos | Innostream | iNo Mobile | Inoi | iNOVA | inovo | INQ Insignia | INSYS | Intek | Intel | Intex | Invens | Inverto Invin | iOcean | IOTWE | iOutdoor | iPEGTOP | iPro | iQ&T IQM | IRA | Irbis | iReplace | Iris | iRobot | iRola iRulu | iSafe Mobile | iStar | iSWAG | IT | iTel | iTruck IUNI | iVA | iView | iVooMi | ivvi | iWaylink | iXTech iYou | iZotron | Jambo | JAY-Tech | Jedi | Jeep | Jeka Jesy | JFone | Jiake | Jiayu | Jin Tu | Jinga | Jio Jivi | JKL | Jolla | Joy | JoySurf | JPay | JREN Jumper | Juniper Systems | Just5 | JUSYEA | JVC | JXD | K-Lite K-Touch | Kaan | Kaiomy | Kalley | Kanji | Kapsys | Karbonn Kata | KATV1 | Kazam | Kazuna | KDDI | Kempler & Strauss | Kenbo Kendo | Keneksi | KENSHI | KENWOOD | Kenxinda | KGTEL | Khadas Kiano | kidiby | Kingbox | Kingstar | Kingsun | KINGZONE | Kinstone Kiowa | Kivi | Klipad | KMC | KN Mobile | Kocaso | Kodak Kogan | Komu | Konka | Konrow | Koobee | Koolnee | Kooper KOPO | Korax | Koridy | Koslam | Kraft | KREZ | KRIP KRONO | Krüger&Matz | KT-Tech | KUBO | KuGou | Kuliao | Kult Kumai | Kurio | KVADRA | Kvant | Kydos | Kyocera | Kyowon Kzen | KZG | L-Max | LAIQ | Land Rover | Landvo | Lanin Lanix | Lark | Laser | Laurus | Lava | LCT | Le Pan Leader Phone | Leagoo | Leben | LeBest | Lectrus | Ledstar | LeEco Leelbox | Leff | Legend | Leke | Lemco | LEMFO | Lemhoov Lenco | Lenovo | Leotec | Lephone | Lesia | Lexand | Lexibook LG | Liberton | Lifemaxx | Lime | Lingbo | Lingwin | Linnex Linsar | Linsay | Listo | LNMBBS | Loewe | LOGAN | Logic Logic Instrument | Logicom | Logik | Logitech | LOKMAT | LongTV | Loview Lovme | LPX-G | LT Mobile | Lumigon | Lumitel | Lumus | Luna LUNNEN | LUO | Luxor | Lville | LW | LYF | LYOTECH LABS M-Horse | M-KOPA | M-Tech | M.T.T. | M3 Mobile | M4tel | MAC AUDIO Macoox | Mafe | MAG | MAGCH | Magenta | Magicsee | Magnus Majestic | Malata | Mango | Manhattan | Mann | Manta Multimedia | Mantra Mara | Marshal | Mascom | Massgo | Masstel | Master-G | Mastertech Matco Tools | Matrix | Maunfeld | Maxcom | Maxfone | Maximus | Maxtron MAXVI | Maxwell | Maxwest | MAXX | Maze | Maze Speed | MBI MBK | MBOX | McLaut | MDC Store | MDTV | meanIT | Mecer MECHEN | Mecool | Mediacom | Medion | MEEG | MEGA VISION | Megacable MegaFon | MEGAMAX | Meitu | Meizu | Melrose | MeMobile | Memup MEO | MESWAO | Meta | Metz | MEU | MicroMax | Microsoft Microtech | Mightier | Minix | Mint | Mintt | Mio | Mione mipo | Miray | Mitchell & Brown | Mito | Mitsubishi | Mitsui | MIVO MIWANG | MIXC | MiXzo | MLAB | MLLED | MLS | MMI Mobell | Mobicel | MobiIoT | Mobiistar | Mobile Kingdom | Mobiola | Mobistel MobiWire | Mobo | Mobvoi | Mode Mobile | Modecom | Mofut | Moondrop MORTAL | Mosimosi | Motiv | Motorola | Motorola Solutions | Movic | MOVISUN Movitel | Moxee | mPhone | Mpman | MSI | MStar | MTC MTN | multibox | Multilaser | MultiPOS | MULTYNET | MwalimuPlus | MYFON MyGica | MygPad | Mymaga | MyMobile | MyPhone (PH) | myPhone (PL) | Myria Myros | Mystery | MyTab | MyWigo | N-one | Nabi | NABO Nanho | Naomi Phone | NASCO | National | Navcity | Navitech | Navitel Navon | NavRoad | NEC | Necnot | Nedaphone | Neffos | NEKO Neo | neoCore | Neolix | Neomi | Neon IQ | Neoregent | Nesons NetBox | Netgear | Netmak | NETWIT | NeuImage | NeuTab | NEVIR New Balance | New Bridge | Newal | Newgen | Newland | Newman | Newsday NewsMy | Nexa | Nexar | NEXBOX | Nexian | NEXON | NEXT Next & NextStar | Nextbit | NextBook | NextTab | NG Optics | NGM | NGpon Nikon | NILAIT | NINETEC | NINETOLOGY | Nintendo | nJoy | NOA Noain | Nobby | Noblex | NOBUX | noDROPOUT | NOGA | Nokia Nomi | Nomu | Noontec | Nordfrost | Nordmende | NORMANDE | NorthTech Nos | Nothing | Nous | Novacom | Novex | Novey | NOVIS NoviSea | NOVO | NTT West | NuAns | Nubia | NUU Mobile | NuVision Nuvo | Nvidia | NYX Mobile | O+ | O2 | Oale | Oangcc OASYS | Obabox | Ober | Obi | OCEANIC | Odotpad | Odys Oilsky | OINOM | ok. | Okapi | Okapia | Oking | OKSI OKWU | Olax | Olkya | Ollee | OLTO | Olympia | OMIX Onda | OneClick | OneLern | OnePlus | Onida | Onix | Onkyo ONN | ONVO | ONYX BOOX | Ookee | Ooredoo | OpelMobile | Openbox Ophone | OPPO | Opsson | Optoma | Orange | Orange Pi | Orava Orbic | Orbita | Orbsmart | Ordissimo | Orion | OSCAL | OTTO OUJIA | Ouki | Oukitel | OUYA | Overmax | Ovvi | öwn Owwo | OX TAB | OYSIN | Oysters | Oyyu | OzoneHD | P-UP Pacific Research Alliance | Packard Bell | Padpro | PAGRAER | Paladin | Palm | Panacom Panasonic | Panavox | Pano | Panodic | Panoramic | Pantech | PAPYRE Parrot Mobile | Partner Mobile | PC Smart | PCBOX | PCD | PCD Argentina | PEAQ Pelitt | Pendoo | Penta | Pentagram | Perfeo | Phicomm | Philco Philips | Phonemax | phoneOne | Pico | PINE | Pioneer | Pioneer Computers PiPO | PIRANHA | Pixela | Pixelphone | PIXPRO | Pixus | Planet Computers Platoon | Play Now | PLDT | Ployer | Plum | PlusStyle | Pluzz PocketBook | POCO | Point Mobile | Point of View | Polar | PolarLine | Polaroid Polestar | PolyPad | Polytron | Pomp | Poppox | POPTEL | Porsche Portfolio | Positivo | Positivo BGH | PPDS | PPTV | Premier | Premio Prestigio | PRIME | Primepad | Primux | PRISM+ | Pritom | Prixton PROFiLO | Proline | Prology | ProScan | PROSONIC | Protruly | ProVision PULID | Punos | Purism | PVBox | Q-Box | Q-Touch | Q.Bell QFX | Qilive | QIN | Qiuwoky | QLink | QMobile | Qnet Mobile QTECH | Qtek | Quantum | Quatro | Qubo | Quechua | Quest Quipus | Qumo | Qupi | Qware | QWATT | R-TV | R3Di Rakuten | Ramos | Raspberry | Ravoz | Raylandz | Razer | RAZZ RCA Tablets | RCT | Reach | Readboy | Realix | Realme | RED RED-X | Redbean | Redfox | RedLine | Redway | Reeder | REGAL RelNAT | Relndoo | Remdun | Renova | RENSO | rephone | Retroid Pocket Revo | Revomovil | Rhino | Ricoh | Rikomagic | RIM | Ringing Bells Rinno | Ritmix | Ritzviva | Riviera | Rivo | Rizzen | ROADMAX Roadrover | Roam Cat | ROCH | Rocket | ROiK | Rokit | Roku Rombica | Romsat | Ross&Moor | Rover | RoverPad | Royole | RoyQueen RT Project | RTK | RugGear | RuggeTech | Ruggex | Ruio | Runbo Rupa | Ryte | S-Color | S-TELL | S2Tel | Saba | Safaricom Sagem | Sagemcom | Saiet | SAILF | Salora | Sambox | Samsung Samtech | Samtron | Sanei | Sankey | Sansui | Santin | SANY Sanyo | Savio | Sber | SCHAUB LORENZ | Schneider | Schok | SCHONTECH Scoole | Scosmos | Seatel | SEBBE | Seeken | SEEWO | SEG Sega | SEHMAX | Selecline | Selenga | Selevision | Selfix | SEMP TCL Sencor | Sencrom | Sendo | Senkatel | SENNA | Senseit | Senwa SERVO | Seuic | Sewoo | SFR | SGIN | Shanling | Sharp Shift Phones | Shivaki | Shtrikh-M | Shuttle | Sico | Siemens | Sigma Silelis | Silent Circle | Silva Schneider | Simbans | simfer | Simply | SINGER Singtech | Siragon | Sirin Labs | Siswoo | SK Broadband | SKG | SKK Mobile Sky | Skyline | SkyStream | Skytech | Skyworth | Smadl | Smailo Smart | Smart Electronic | Smart Kassel | Smart Tech | Smartab | SmartBook | SMARTEC Smartex | Smartfren | Smartisan | Smarty | Smooth Mobile | Smotreshka | SMT Telecom SMUX | SNAMI | SobieTech | Soda | Softbank | Soho Style | Solas SOLE | SOLO | Solone | Sonim | SONOS | Sony | Sony Ericsson SOSH | SoulLink | Soundmax | SOWLY | Soyes | Spark | Sparx SPC | Spectralink | Spectrum | Spice | Spider | Sprint | SPURT SQOOL | SSKY | Star | Star-Light | Starlight | Starmobile | Starway Starwind | STF Mobile | STG Telecom | Stilevs | STK | Stonex | Storex StrawBerry | Stream | STRONG | Stylo | Subor | Sugar | SULPICE TV Sumvision | Sunmax | Sunmi | Sunny | Sunstech | SunVan | Sunvell SUNWIND | Super General | SuperBOX | Supermax | SuperSonic | SuperTab | SuperTV Supra | Supraim | Surfans | Surge | Suzuki | Sveon | Swipe SWISSMOBILITY | Swisstone | Switel | SWOFY | Syco | SYH | Sylvania Symphony | Syrox | System76 | T-Mobile | T96 | TADAAM | TAG Tech Taiga System | Takara | TALBERG | Talius | Tambo | Tanix | TAUBE TB Touch | TCL | TCL SCBC | TD Systems | TD Tech | TeachTouch | Technicolor Technika | TechniSat | Technopc | TECHNOSAT | TechnoTrend | TechPad | TechSmart Techstorm | Techwood | Teclast | Tecno Mobile | TecToy | TEENO | Teknosa Tele2 | Telefunken | Telego | Telenor | Telia | Telit | Telkom Telly | Telma | TeloSystems | Telpo | Temigereev | TENPLUS | Teracube Tesco | Tesla | TETC | Tetratab | teXet | ThL | Thomson Thuraya | TIANYU | Tibuta | Tigers | Time2 | Timovi | TIMvision Tinai | Tinmo | TiPhone | Tivax | TiVo | TJC | TJD TOKYO | Tolino | Tone | TOOGO | Tooky | Top House | Top-Tech TopDevice | TOPDON | Topelotek | Toplux | TOPSHOWS | Topsion | Topway Torex | TORNADO | Torque | TOSCIDO | Toshiba | Touch Plus | Touchmate TOX | TPS | Transpeed | Trecfone | TrekStor | Trevi | TriaPlay Trident | Trifone | Trimble | Trio | Tronsmart | True | True Slim Tsinghua Tongfang | TTEC | TTfone | TTK-TV | TuCEL | TUCSON | Tunisie Telecom Turbo | Turbo-X | TurboKids | TurboPad | Türk Telekom | Turkcell | Tuvio TV+ | TVC | TwinMOS | TWM | Twoe | TWZ | TYD Tymes | U-Magic | U.S. Cellular | UD | UE | UGINE | Ugoos Uhans | Uhappy | Ulefone | Umax | UMIDIGI | Umiio | Unblock Tech Uniden | Unihertz | Unimax | Uniqcell | Uniscope | Unistrong | Unitech UNITED | United Group | UNIWA | Unknown | Unnecto | Unnion Technologies | UNNO Unonu | UnoPhone | Unowhy | UOOGOU | Urovo | UTime | UTOK UTStarcom | UZ Mobile | V-Gen | V-HOME | V-HOPE | v-mobile | V7 VAIO | VALE | VALEM | VALTECH | VANGUARD | Vankyo | VANWIN Vargo | Vastking | VAVA | VC | VDVD | Vega | Veidoo Vekta | Venso | Venstar | Venturer | VEON | Verico | Verizon Vernee | Verssed | Versus | Vertex | Vertu | Verykool | Vesta Vestel | VETAS | Vexia | VGO TEL | ViBox | Victurio | VIDA Videocon | Videoweb | Viendo | ViewSonic | VIIPOO | VIKUSHA | VILLAON VIMOQ | Vinabox | Vinga | Vinsoc | Vios | Viper | Vipro Virzo | Vision Technology | Vision Touch | Visitech | Visual Land | Vitelcom | Vityaz Viumee | Vivax | VIVIBright | VIVIMAGE | Vivo | VIWA | Vizio Vizmo | VK Mobile | VKworld | VNPT Technology | VOCAL | Vodacom | Vodafone VOGA | Völfen | VOLIA | VOLKANO | Volla | Volt | Vonino Vontar | Vorago | Vorcom | Vorke | Vormor | Vortex | VORTEX (RO) Voto | VOX | Voxtel | Voyo | Vsmart | Vsun | VUCATIMES Vue Micro | Vulcan | VVETIME | W&O | WAF | Wainyok | Walker Waltham | Walton | Waltter | Wanmukang | WANSA | WE | We. by Loewe. Web TV | Webfleet | WeChip | Wecool | Weelikeit | Weiimi | Weimei WellcoM | WELLINGTON | Western Digital | Weston | Westpoint | Wexler | White Mobile Whoop | Wieppo | Wigor | Wiko | WildRed | Wileyfox | Winds Wink | Winmax | Winnovo | Winstar | Wintouch | Wiseasy | WIWA WizarPos | Wizz | Wolder | Wolfgang | Wolki | WONDER | Wonu Woo | Wortmann | Woxter | WOZIFAN | WS | X-AGE | X-BO X-Mobile | X-TIGI | X-View | X.Vision | X88 | X96 | X96Q Xcell | XCOM | Xcruiser | XElectron | XGEM | XGIMI | Xgody Xiaodu | Xiaolajiao | Xiaomi | Xion | Xolo | Xoro | XPPen XREAL | Xshitou | Xsmart | Xtouch | Xtratech | Xwave | XY Auto Yandex | Yarvik | YASIN | YELLYOUTH | YEPEN | Yes | Yestel Yezz | Yoka TV | Yooz | Yota | YOTOPT | Youin | Youwei Ytone | Yu | YU Fly | Yuandao | YUHO | YUMKEM | YUNDOO Yuno | YunSong | Yusun | Yxtel | Z-Kai | Zaith | Zamolxe Zatec | Zealot | Zeblaze | Zebra | Zeeker | Zeemi | Zen Zenek | Zentality | Zfiner | ZH&K | Zidoo | ZIFFLER | ZIFRO Zigo | ZIK | Zinox | Ziox | Zonda | Zonko | Zoom ZoomSmart | Zopo | ZTE | Zuum | Zync | ZYQ | Zyrex ZZB </details> [[top]](#top) <a name="device-types"></a> <details> <summary>Support device types:</summary> | type | id | | ---- | ---- | | desktop | 0 | | smartphone | 1 | | tablet | 2 | | feature phone | 3 | | console | 4 | | tv | 5 | | car browser | 6 | | smart display | 7 | | camera | 8 | | portable media player | 9 | | phablet | 10 | | smart speaker | 11 | | wearable | 12 | | peripheral | 13 | </details> ##### Support detect browsers list (679): <details> <summary>Show details</summary> Browser | Browser | Browser | Browser | Browser | Browser | Browser --- | --- | --- | --- | --- | --- | --- 115 Browser | 18+ Privacy Browser | 1DM Browser | 1DM+ Browser | 2345 Browser | 360 Phone Browser | 360 Secure Browser 7654 Browser | 7Star | ABrowse | Acoo Browser | AdBlock Browser | Adult Browser | Ai Browser Airfind Secure Browser | Aloha Browser | Aloha Browser Lite | AltiBrowser | ALVA | Amaya | Amaze Browser Amerigo | Amiga Aweb | Amiga Voyager | Amigo | Android Browser | Anka Browser | ANT Fresco ANTGalio | AOL Desktop | AOL Explorer | AOL Shield | AOL Shield Pro | Aplix | APN Browser AppBrowzer | AppTec Secure Browser | APUS Browser | Arachne | Arc Search | Arctic Fox | Armorfly Browser Arora | Arvin | Ask.com | Asus Browser | Atlas | Atom | Atomic Web Browser Avant Browser | Avast Secure Browser | AVG Secure Browser | Avira Secure Browser | Awesomium | AwoX | Azka Browser B-Line | Baidu Browser | Baidu Spark | Bang | Bangla Browser | Basic Web Browser | Basilisk Beaker Browser | Beamrise | Belva Browser | Beonex | Berry Browser | Beyond Private Browser | BF Browser Bitchute Browser | Biyubi | BizBrowser | Black Lion Browser | BlackBerry Browser | Bl