PHPackages                             sajidwarner/laravel-device-detector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. sajidwarner/laravel-device-detector

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

sajidwarner/laravel-device-detector
===================================

A comprehensive Laravel package for detecting browsers, devices, robots, platforms, and Tor connections with advanced user agent parsing

v1.0.6(6mo ago)581↓100%MITPHPPHP ^8.1|^8.2|^8.3|^8.4

Since Oct 30Pushed 6mo agoCompare

[ Source](https://github.com/sajidwarner/laravel-device-detector)[ Packagist](https://packagist.org/packages/sajidwarner/laravel-device-detector)[ RSS](/packages/sajidwarner-laravel-device-detector/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (6)Versions (8)Used By (0)

Laravel Device Detector
=======================

[](#laravel-device-detector)

A comprehensive Laravel package for detecting browsers, devices, robots, platforms, and Tor connections with advanced user agent parsing.

Features
--------

[](#features)

- 🌐 **Browser Detection**: Chrome, Firefox, Safari, Edge, Opera, Brave, Tor, and more
- 📱 **Mobile Device Detection**: Detect mobile brands and models (Samsung, iPhone, Xiaomi, etc.)
- 💻 **Desktop Detection**: Identify desktop browsers and operating systems
- 🤖 **Robot/Bot Detection**: Identify search engine crawlers and bots
- 🔒 **Tor Detection**: Real-time Tor exit node detection with caching
- 🖥️ **Platform Detection**: Windows, macOS, Linux, Android, iOS, etc.
- 📊 **Tablet Detection**: Identify tablets and their models
- ⚡ **Performance**: Cached Tor nodes, optimized regex patterns
- 🎯 **Client Hints Support**: Uses modern Sec-CH-UA headers

Installation
------------

[](#installation)

Install via Composer:

```
composer require sajidwarner/laravel-device-detector
```

### Laravel Auto-Discovery

[](#laravel-auto-discovery)

The package will automatically register the service provider and facade.

### Manual Registration (Optional)

[](#manual-registration-optional)

If auto-discovery is disabled, add to `config/app.php`:

```
'providers' => [
    SajidWarner\DeviceDetector\DeviceDetectorServiceProvider::class,
],

'aliases' => [
    'DeviceDetector' => SajidWarner\DeviceDetector\Facades\DeviceDetector::class,
],
```

### Publish Configuration

[](#publish-configuration)

```
php artisan vendor:publish --provider="SajidWarner\DeviceDetector\DeviceDetectorServiceProvider"
```

Usage
-----

[](#usage)

### Basic Usage

[](#basic-usage)

```
use SajidWarner\DeviceDetector\Facades\DeviceDetector;

// Detect current request
$device = DeviceDetector::detect();

// Get specific information
$browser = DeviceDetector::getBrowser();
$platform = DeviceDetector::getPlatform();
$deviceType = DeviceDetector::getDeviceType();
$isMobile = DeviceDetector::isMobile();
$isTablet = DeviceDetector::isTablet();
$isDesktop = DeviceDetector::isDesktop();
$isRobot = DeviceDetector::isRobot();
$isTor = DeviceDetector::isTor();
```

### Full Detection Array

[](#full-detection-array)

```
$data = DeviceDetector::detect();

/*
Returns:
[
    'browser' => 'Google Chrome',
    'browser_version' => '120.0',
    'platform' => 'Windows 10',
    'device_type' => 'desktop',
    'device_brand' => null,
    'device_model' => null,
    'is_mobile' => false,
    'is_tablet' => false,
    'is_desktop' => true,
    'is_robot' => false,
    'is_tor' => false,
    'robot_name' => null,
    'ip' => '192.168.1.1'
]
*/
```

### In Controllers

[](#in-controllers)

```
use Illuminate\Http\Request;
use SajidWarner\DeviceDetector\Facades\DeviceDetector;

class HomeController extends Controller
{
    public function index(Request $request)
    {
        $device = DeviceDetector::detect($request);

        if ($device['is_mobile']) {
            return view('mobile.home', compact('device'));
        }

        if ($device['is_robot']) {
            return response('Bot detected: ' . $device['robot_name']);
        }

        return view('home', compact('device'));
    }
}
```

### Middleware Usage

[](#middleware-usage)

Create a middleware to block Tor or bots:

```
php artisan make:middleware BlockTor
```

```
use SajidWarner\DeviceDetector\Facades\DeviceDetector;

public function handle($request, Closure $next)
{
    if (DeviceDetector::isTor($request)) {
        return response('Tor connections not allowed', 403);
    }

    return $next($request);
}
```

### Blade Directives

[](#blade-directives)

```
@mobile
    Mobile view content
@endmobile

@desktop
    Desktop view content
@enddesktop

@tablet
    Tablet view content
@endtablet

@robot
    Bot detected
@endrobot

@tor
    Tor browser detected
@endtor
```

Detected Browsers
-----------------

[](#detected-browsers)

- Google Chrome
- Mozilla Firefox
- Safari
- Microsoft Edge
- Opera / Opera GX
- Brave
- Vivaldi
- Tor Browser
- Kahf Browser
- Samsung Internet
- UC Browser
- Internet Explorer
- And many more...

Detected Mobile Brands
----------------------

[](#detected-mobile-brands)

- Apple (iPhone, iPad)
- Samsung
- Xiaomi
- Huawei
- OnePlus
- Oppo
- Vivo
- Google (Pixel)
- Motorola
- Nokia
- LG
- Sony
- And more...

Detected Robots/Bots
--------------------

[](#detected-robotsbots)

- Googlebot
- Bingbot
- Yahoo Slurp
- DuckDuckBot
- Baiduspider
- YandexBot
- Facebook Bot
- Twitter Bot
- LinkedIn Bot
- And many more...

Configuration
-------------

[](#configuration)

Edit `config/device-detector.php`:

```
return [
    // Cache duration for Tor exit nodes (in seconds)
    'tor_cache_duration' => 3600,

    // Tor exit nodes URL
    'tor_exit_node_url' => 'https://check.torproject.org/exit-addresses',

    // Enable/disable Tor detection
    'enable_tor_detection' => true,

    // Enable/disable robot detection
    'enable_robot_detection' => true,
];
```

API Routes
----------

[](#api-routes)

The package provides test routes (disabled in production):

```
GET /device-detector/test

```

Returns JSON with detected device information.

Requirements
------------

[](#requirements)

- PHP &gt;= 8.1
- Laravel &gt;= 10.0

Testing
-------

[](#testing)

```
composer test
```

Security
--------

[](#security)

If you discover any security issues, please email instead of using the issue tracker.

Credits
-------

[](#credits)

- [Syed Sajid Akram](https://github.com/sajidwarner) - Package Author &amp; Maintainer
- [Claude.ai](https://claude.ai) - AI Assistant by Anthropic (Package Development &amp; Architecture)
- [ChatGPT](https://chat.openai.com/) - AI Assistant by OpenAI (Code Assistance &amp; Suggestions)
- [Google Gemini](https://gemini.google/) - AI Assistant by Google (Code Assistance &amp; Suggestions)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Support
-------

[](#support)

For support, please open an issue on [GitHub](https://github.com/sajidwarner/laravel-device-detector).

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance67

Regular maintenance activity

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

7

Last Release

194d ago

PHP version history (2 changes)v1.0.0PHP ^8.1|^8.2|^8.3

v1.0.5PHP ^8.1|^8.2|^8.3|^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/95d56fad87dfe210e91b44ce4cefac17fb18bd8a969e6bcf554ce0a237560b09?d=identicon)[sajidwarner](/maintainers/sajidwarner)

---

Top Contributors

[![sajidwarner](https://avatars.githubusercontent.com/u/42565206?v=4)](https://github.com/sajidwarner "sajidwarner (7 commits)")

---

Tags

laraveluser agentbrowser detectionbot-detectionmobile-detectiontor detectionDevice detectionUser agent parserrobot detection

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sajidwarner-laravel-device-detector/health.svg)

```
[![Health](https://phpackages.com/badges/sajidwarner-laravel-device-detector/health.svg)](https://phpackages.com/packages/sajidwarner-laravel-device-detector)
```

###  Alternatives

[laravolt/avatar

Turn name, email, and any other string into initial-based avatar or gravatar.

2.0k5.4M31](/packages/laravolt-avatar)[watson/active

Laravel helper for recognising the current route, controller and action

3253.6M14](/packages/watson-active)[thadafinser/user-agent-parser

UserAgent parsing done right http://useragent.mkf.solutions/

249316.9k2](/packages/thadafinser-user-agent-parser)[glhd/conveyor-belt

14797.0k](/packages/glhd-conveyor-belt)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[dragon-code/pretty-routes

Pretty Routes for Laravel

10058.7k4](/packages/dragon-code-pretty-routes)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
