Laravel Packages

PHP Desktop and Mobile User Agent Parser

Published Updated
PHP Desktop and Mobile User Agent Parser image

The jenssegers-agent package is a desktop/mobile user agent parser with support for Laravel, based on MobileDetect. You can use this package in any PHP application, and it also provides a Laravel service provider, giving you a service Facade:

use Jenssegers\Agent\Facades\Agent;

Agent::is('Firefox');
Agent::is('iPhone');

// Magic methods
Agent::isFirefox();
Agent::isIPhone();

// Device type
Agent::isDesktop();
Agent::isMobile();
Agent::isTablet();
Agent::isPhone();

Besides user agent helpers, the Agent service provides a language helper, device name method, platform, and more. For example, you could get the accepted browser languages using the following method:

Agent::languages(); // ['en-us', 'en']

Using the languages method, you could set the locale during a request in a middleware. Here's a simple example just to illustrate just off the top of my head:

public function handle(Request $request, Closure $next): Response
{
    $supported_locales = ['en', 'es'];
    $user_locales = Agent::languages();

    foreach ($user_locales as $locale) {
        if (in_array($locale, $supported_locales)) {
            app()->setLocale($locale);
        }
    }

    return $next($request);
}

If you do not support the locale, the config('app.fallback_locale') setting will define the locale. You might also use the languages() method in middleware to redirect a locale-specific route prefix /{locale}/ based on the user agent's supported language.

Route::prefix('/{locale}')->group(function () {
    // ...
})->whereIn('locale', ['en', 'es']);

The Agent service can also determine if the current user agent is a bot and what type of bot:

// Is the user a bot?
Agent::isRobot(); // bool

// get the robot name
Agent::robot();

Lastly, to get the device name, platform, and browser, you can use the aptly named methods on the facade:

Agent::device(); // "Macintosh"
Agent::platform(); // "OS X"
Agent::browser(); // "Safari"
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
PhpStorm 2026.3 Adds an Agent Workspace and PHP 8.6 Support image

PhpStorm 2026.3 Adds an Agent Workspace and PHP 8.6 Support

Read article
Insert Middleware Before or After Existing Laravel Middleware image

Insert Middleware Before or After Existing Laravel Middleware

Read article
Laravel Herd 2: Coding Agents, Workspaces, and Cloud Deploys image

Laravel Herd 2: Coding Agents, Workspaces, and Cloud Deploys

Read article
Strict Request Input Casting in Laravel image

Strict Request Input Casting in Laravel

Read article
Prevent Duplicate File Uploads With Laravel Storage Dedupler image

Prevent Duplicate File Uploads With Laravel Storage Dedupler

Read article
Slow Job Alerts and Replica Commit IDs in Laravel 13.40 image

Slow Job Alerts and Replica Commit IDs in Laravel 13.40

Read article