Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
D

device-detector

> AI 编程
Open source

The Universal Device Detection library will parse any User Agent and detect the browser, operating system, device used (desktop, tablet, mobile, tv, cars, conso

3.5K stars0 likes0 views
WebsiteGitHub

About

The Universal Device Detection library will parse any User Agent and detect the browser, operating system, device used (desktop, tablet, mobile, tv, cars, conso

DeviceDetector

Code Status

Description

The Universal Device Detection library that parses User Agents and Browser Client Hints to detect devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, feed readers, media players, PIMs, ...), operating systems, brands and models.

Usage

Using DeviceDetector with composer is quite easy. Just add matomo/device-detector to your projects requirements.

composer require matomo/device-detector

And use some code like this one:

…

Methods check device type:

$dd->isSmartphone();
$dd->isFeaturePhone();
$dd->isTablet();
$dd->isPhablet();
$dd->isConsole();
$dd->isPortableMediaPlayer();
$dd->isCarBrowser();
$dd->isTV();
$dd->isSmartDisplay();
$dd->isSmartSpeaker();
$dd->isCamera();
$dd->isWearable();
$dd->isPeripheral();

Methods check client type:

$dd->isBrowser();
$dd->isFeedReader();
$dd->isMobileApp();
$dd->isPIM();
$dd->isLibrary();
$dd->isMediaPlayer();

Get OS family:

use DeviceDetector\Parser\OperatingSystem;

$osFamily = OperatingSystem::getOsFamily($dd->getOs('name'));

Get browser family:

use DeviceDetector\Parser\Client\Browser;

$browserFamily = Browser::getBrowserFamily($dd->getClient('name'));

Instead of using the full power of DeviceDetector it might in some cases be better to use only specific parsers. If you aim to check if a given useragent is a bot and don't require any of the other information, you can directly use the bot parser.

require_once 'vendor/autoload.php';

use DeviceDetector\Parser\Bot AS BotParser;

$botParser = new BotParser();
$botParser->setUserAgent($userAgent);

// OPTIONAL: discard bot information. parse() will then return true instead of information
$botParser->discardDetails();

$result = $botParser->parse();

if (!is_null($result)) {
    // do not do anything if a bot is detected
    return;
}

// handle non-bot requests

Using without composer

Alternatively to using composer you can also use the included autoload.php. This script will register an autoloader to dynamically load all classes in DeviceDetector namespace.

Device Detector requires a YAML parser. By default Spyc parser is used. As this library is not included you need to include it manually or use another YAML parser.

…

Caching

By default, DeviceDetector uses a built-in array cache. To get better performance, you can use your own caching solution:

  • You can create a class that implement DeviceDetector\Cache\CacheInterface
  • Or if your project uses a PSR-6 or PSR-16 compliant caching system (like symfony/cache or matthiasmullie/scrapbook), you can inject them the following way:
…

Contributing

Hacking the library

This is a free/libre library under license LGPL v3 or later.

Your pull requests and/or feedback is very welcome!

Listing all user agents from your logs

Sometimes it may be useful to generate the list of most used user agents on your website, extracting this list from your access logs using the following command:

zcat ~/path/to/access/logs* | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head -n20000 > /home/matomo/top-user-agents.txt

Contributors

Created by the Matomo team, Stefan Giehl, Matthieu Aubry, Michał Gaździk, Tomasz Majczak, Grzegorz Kaszuba, Piotr Banaszczyk and contributors.

Together we can build the best Device Detection library.

We are looking forward to your contributions and pull requests!

Tests

See also: QA at Matomo

Running tests

cd /path/to/device-detector
curl -sS https://getcomposer.org/installer | php
php composer.phar install
./vendor/bin/phpunit

Device Detector for other languages

There are already a few ports of this tool to other languages:

  • .NET https://github.com/totpero/DeviceDetector.NET
  • .NET https://github.com/nandor23/UaDetector
  • .NET https://github.com/jorik041/MatomoDeviceDetector.NET
  • Ruby https://github.com/podigee/device_detector
  • JavaScript/TypeScript/NodeJS https://github.com/etienne-martin/device-detector-js
  • NodeJS https://github.com/sanchezzzhak/node-device-detector
  • Python 3 https://github.com/thinkwelltwd/device_detector
  • Python 3 https://github.com/pranavagrawal321/UA-Extract
  • Crystal https://github.com/creadone/device_detector
  • Elixir https://github.com/elixir-inspector/ua_inspector
  • Java https://github.com/deevvicom/device-detector
  • Java https://github.com/PaniniGelato/java-device-detector
  • Rust https://github.com/simplecastapps/rust-device-detector
  • Rust https://github.com/arnaudbriche/device-detector-rs
  • Rust https://github.com/stry-rs/device-detector
  • Go https://github.com/skalibog/device-detector-go
  • Go https://github.com/gamebtc/devicedetector
  • Go https://github.com/umutbasal/device-detector-go
  • Go https://github.com/robicode/device-detector
  • Go https://github.com/shubhamc-ins/device-detector

Icon packs

If you are looking for icons to use alongside Device Detector, these repositories can be of use:

  • Official Matomo pack
  • Unofficial Simbiat pack

What Device Detector is able to detect

The lists below are auto generated and updated from time to time. Some of them might not be complete.

Last update: 2026/09/06

List of detected operating systems:

AIX, Android, Android Go, Android TV, Alpine Linux, Amazon Linux, AmigaOS, Armadillo OS, AROS, tvOS, ArcaOS, Arch Linux, AOSC OS, ASPLinux, Azure Linux, BackTrack, Bada, Baidu Yi, BeOS, BlackBerry OS, BlackBerry Tablet OS, blackPanther OS, Bliss OS, Brew, BrightSignOS, BSD, Caixa Mágica, CentOS, CentOS Stream, Clear Linux OS, ClearOS Mobile, Chrome OS, Chromium OS, China OS, Contiki, Coolita OS, CyanogenMod, Debian, Deepin, DragonFly, DVKBuntu, ElectroBSD, elementary OS, EulerOS, Fedora, Fenix, Firefox OS, Fire OS, Foresight Linux, FortiOS, Freebox, FreeBSD, FRITZ!OS, FydeOS, Fuchsia, Gentoo, GENIX, GEOS, GhostBSD, gNewSense, GridOS, Google TV, HP-UX, Haiku OS, iPadOS, HarmonyOS, HarmonyOS NEXT, HasCodingOS, HELIX OS, HyperOS, IRIX, Inferno, Java ME, Joli OS, KaiOS, Kali, Kanotix, KIN OS, KoboOS, KolibriOS, Knoppix, KreaTV, Kubuntu, GNU/Linux, LeafOS, LindowsOS, Linspire, Lineage OS, Linpus, Liri OS, Loongnix, Lubuntu, Lumin OS, LuneOS, VectorLinux, Mac, Maemo, Mageia, Mandriva, MeeGo, Meta Horizon, MINIX, Mocor OS, MocorDroid, moonOS, Motorola EZX, Mint, MildWild, MorphOS, MyOS, NetBSD, MTK / Nucleus, MRE, NeXTSTEP, NEWS-OS, Nintendo, Nintendo Mobile, Nova, NuttX, OS/2, OSF1, openSUSE, OpenBSD, OpenHarmony, OpenVMS, OpenVZ, OpenWrt, Opera TV, Oracle Linux, Ordissimo, Orsay, Pardus, PCLinuxOS, PICO OS, Plan 9, Plasma Mobile, PlayStation Portable, PlayStation, Proxmox VE, Puffin OS, PureOS, Qtopia, Raspberry Pi OS, Raspbian, Red Hat, Red Star, RedOS, Revenge OS, risingOS, RISC OS, Rocky Linux, Roku OS, Rosa, RouterOS, Remix OS, Resurrection Remix OS, REX, RazoDroiD, RTOS & Next, Sabayon, SUSE, Sailfish OS, Scientific Linux, SeewoOS, SerenityOS, Sirin OS, Slackware, Smartisan OS, Solaris, Star-Blade OS, SteamOS, Syllable, Symbian, Symbian OS, Symbian OS Series 40, Symbian OS Series 60, Symbian^3, TencentOS, ThinOS, ThreadX, Titan OS, Tizen, TiVo OS, TmaxOS, Turbolinux, Ubuntu, ULTRIX, UOS, Vega OS, VIDAA, ViziOS, watchOS, Wear OS, WebTV, Whale OS, Windows, Windows CE, Windows IoT, Windows Mobile, Windows Phone, Windows RT, WoPhone, Xbox, Xubuntu, YunOS, Zenwalk, ZorinOS, iOS, palmOS, Webian, webOS

List of detected browsers:

Via, Pure Mini Browser, Pure Lite Browser, Raise Fast Browser, Rabbit Private Browser, Fast Browser UC Lite, Fast Explorer, Lightning Browser, Cake Browser, IE Browser Fast, Vegas Browser, OH Browser, OH Private Browser, XBrowser Mini, Sharkee Browser, Lark Browser, Pluma, Anka Browser, Azka Browser, Dragon Browser, Easy Browser, Dark Web Browser, Dark Browser, 18+ Privacy Browser, 115 Browser, 1DM Browser, 1DM+ Browser, 2345 Browser, 360 Secure Browser, 360 Speed Browser, 360 Phone Browser, 7654 Browser, Avant Browser, ABrowse, Ace, Acoo Browser, AdBlock Browser, Adult Browser, Ai Browser, Airfind Secure Browser, ANT Fresco, ANTGalio, Aloha Browser, Aloha Browser Lite, ALVA, AltiBrowser, Amaya, Amaze Browser, Amerigo, Amigo, Android Browser, Anonyv Browser, AOL Explorer, AOL Desktop, AOL Shield, AOL Shield Pro, Aplix, AppBrowzer, AppTec Secure Browser, APUS Browser, Arora, Arctic Fox, Amiga Voyager, Amiga Aweb, APN Browser, Arachne, Arc Search, Armorfly Browser, ArtisBrowser, Arvin, Ask.com, Ask Browser, Asus Browser, Atom, Atomic Web Browser, Atlas, Avast Secure Browser, AVG Secure Browser, Avira Secure Browser, AwoX, Awesomium, Basic Web Browser, Beaker Browser, Beamrise, BF Browser, BlackBerry Browser, Bluefy, BrowseHere, Browser Hup Pro, Baidu Browser, Baidu Spark, Bang, Bangla Browser, Basilisk, Belva Browser, Beyond Private Browser, Beonex, Berry Browser, Bitchute Browser, BizBrowser, Black Browser, BlackHawk, Blazer, Bloket, Bunjalloo, B-Line, Black Lion Browser, Blue Browser, Bonsai, Borealis Navigator, Brave, BriskBard, BroKeep Browser, Browspeed Browser, BrowseX, Browzar, Browlser, Browse Safe, Browser Mini, BrowsBit, Biyubi, Byffox, BXE Browser, Camino, Catalyst, Catsxp, Cave Browser, CCleaner, CG Browser, ChanjetCloud, Chedot, Cherry Browser, Centaury, Clario Browser, Clear TV Browser, Cliqz, Coc Coc, CoolBrowser, Colibri, Columbus Browser, Comet, Comodo Dragon, Coast, Charon, ChatGPT Atlas, CM Browser, CM Mini, Chrome Frame, Headless Chrome, Headless Edge, Chrome, Chrome Mobile iOS, Conkeror, Chrome Mobile, Chowbo, Classilla, CoolNovo, Colom Browser, CometBird, Comfort Browser, COS Browser, Cornowser, Chim Lac, ChromePlus, Chromium, Chromium GOST, Cyberfox, Cheshire, Cromite, Crow Browser, Crusta, Craving Explorer, Crazy Browser, Cunaguaro, Chrome Webview, CyBrowser, dbrowser, Peeps dBrowser, Dark Web, Dark Web Private, DDU Browser, Debuggable Browser, Decentr, Deepnet Explorer, deg-degan, Deledao, Delta Browser, Desi Browser, DeskBrowse, Dezor, Diigo Browser, DoCoMo, Dolphin, Dolphin Zero, Dorado, Dot Browser, Dooble, Doubao, Dillo, DUC Browser, DuckDuckGo Privacy Browser, East Browser, Ecosia, Edge WebView, Every Browser, Epic, Elinks, EinkBro, Element Browser, Elements Browser, Eolie, Explore Browser, eZ Browser, EudoraWeb, EUI Browser, GNOME Web, G Browser, Espial TV Browser, fGet, Falkon, Faux Browser, Fire Browser, Fiery Browser, Firefox Mobile iOS, Firebird, Fluid, Fennec, Firefox, Firefox Focus, Firefox Reality, Firefox Rocket, Firefox Klar, Float Browser, Flock, Floorp, Flow, Flow Browser, Firefox Mobile, FireSend Browser, Fireweb, Fireweb Navigator, Flash Browser, Flast, Flyperlink, FOSS Browser, FreeU, Freedom Browser, Frost, Frost+, Fulldive, Galeon, Gener8, Ghostery Privacy Browser, GinxDroid Browser, Glass Browser, Godzilla Browser, Good Browser, Google Earth, Google Earth Pro, GOG Galaxy, GoBrowser, GoKu, GO Browser, GreenBrowser, Habit Browser, Halo Browser, Harman Browser, HasBrowser, Hawk Turbo Browser, Hawk Quick Browser, Helio, Herond Browser, Hexa Web Browser, HeyTapBrowser, Hi Browser, hola! Browser, Holla Web Browser, HotBrowser, HotJava, HONOR Browser, HTC Browser, Huawei Browser Mobile, Huawei Browser, Harmony 360 Browser, HUB Browser, iBrowser, iBrowser Mini, IBrowse, iDesktop PC Browser, iCab, iCab Mobile, iTop Private Browser, Ifbrowser, iNet Browser, Iridium, Iron Mobile, IceCat, IceDragon, Isivioo, IVVI Browser, Iceweasel, Impervious Browser, Incognito Browser, Inspect Browser, Insta Browser, Internet Explorer, Internet Browser Secure, Internet Webbrowser, Intune Managed Browser, Indian UC Mini Browser, InBrowser

GitHub Issues· 83 open

View all on GitHub
  • #8384

    ClientHints::isMobile should have null value if no special headers provider

    Updated Sep 14, 2026
  • #8012

    WebOS TVs

    Updated Sep 10, 2026

Highlights

  • •You can create a class that implement DeviceDetector\Cache\CacheInterface
  • •Or if your project uses a PSR-6 or PSR-16 compliant caching system (like symfony/cache or matthiasmullie/scrapbook), you can inject them the following way:
  • •.NET https://github.com/totpero/DeviceDetector.NET
  • •.NET https://github.com/nandor23/UaDetector
  • •.NET https://github.com/jorik041/MatomoDeviceDetector.NET
  • •Ruby https://github.com/podigee/device_detector
  • •JavaScript/TypeScript/NodeJS https://github.com/etienne-martin/device-detector-js
  • •NodeJS https://github.com/sanchezzzhak/node-device-detector
  • •Python 3 https://github.com/thinkwelltwd/device_detector
  • •Python 3 https://github.com/pranavagrawal321/UA-Extract

> Tags

PHPbot-detectiondetection-librarydevice-detectorhacktoberfest

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
CategoryAI 编程
PricingOpen source

> Related tools

G
GitHub Copilot
GitHub 官方 AI 编程助手,覆盖补全、Chat 与 Agent 模式。
C
Cursor
AI 原生代码编辑器,对话改代码、多文件 Agent 与规则体系是其核心。
S
skills
Skills for Real Engineers. Straight from my .agents directory.