Phones, tablets, TVs, consoles, browsers, operating systems and bots, including the AI crawlers. Reads User-Agent Client Hints, so Windows 11, Brave and real Android models show up as they are.
composer require ruvelo/laravel-device
Read the docs
This demo is a static page, so no server sees your visit. Above: what the package detected for the Chrome-on-Windows request that built the page. With JavaScript on, this box shows what your browser says about itself in navigator.userAgentData, the same data it sends as Client Hints.
Real User-Agent strings, some with the Client Hints Chromium browsers send, and what $request->device() made of each one. Rendered by the package when this page was built.
| Visitor | Type | Browser | System | Device or bot |
|---|---|---|---|---|
|
Chrome on Windows 11
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Client HintsSec-CH-UA: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141" Sec-CH-UA-Mobile: ?0 Sec-CH-UA-Platform: "Windows" Sec-CH-UA-Platform-Version: "19.0.0" Sec-CH-UA-Full-Version-List: "Google Chrome";v="141.0.7390.66", "Not?A_Brand";v="8.0.0.0", "Chromium";v="141.0.7390.66" |
Desktop |
Chrome
141.0.7390.66 Blink |
Windows
11 from Client Hints |
–
|
|
Edge on Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0
|
Desktop |
Edge
141 Blink |
Windows
10 |
–
|
|
Brave, which looks like Chrome
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Client HintsSec-CH-UA: "Brave";v="141", "Not?A_Brand";v="8", "Chromium";v="141" Sec-CH-UA-Platform: "Windows" |
Desktop |
Brave
141 Blink |
Windows
10 from Client Hints |
–
|
|
Firefox on Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0
|
Desktop |
Firefox
143 Gecko |
Windows
10 |
–
|
|
Safari on a Mac
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15
|
Desktop |
Safari
26 WebKit |
macOS
10.15.7 |
Apple Mac
or an iPad |
|
Chrome on a Mac
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Client HintsSec-CH-UA: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141" Sec-CH-UA-Platform: "macOS" Sec-CH-UA-Platform-Version: "26.0.0" |
Desktop |
Chrome
141 Blink |
macOS
26 from Client Hints |
Apple Mac
|
|
Firefox on Ubuntu
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0
|
Desktop |
Firefox
143 Gecko |
Ubuntu
|
–
|
|
A Chromebook
Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
|
Desktop |
Chrome
141 Blink |
Chrome OS
14541.0.0 |
–
|
|
Safari on an iPhone
Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1
|
Phone |
Safari
26 WebKit |
iOS
26.0 |
Apple iPhone
|
|
Chrome on an iPhone
Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/141.0.7390.41 Mobile/15E148 Safari/604.1
|
Phone |
Chrome
141.0.7390.41 WebKit |
iOS
18.6 |
Apple iPhone
|
|
Instagram's in-app browser
Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Instagram 400.0.0.37.75 (iPhone15,3; iOS 18_6; en_US; en; scale=3.00; 1290x2796; 789654321)
|
Phone |
Instagram
400.0.0.37.75 WebKit |
iOS
18.6 |
Apple iPhone
|
|
Safari on an iPad
Mozilla/5.0 (iPad; CPU OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1
|
Tablet |
Safari
26 WebKit |
iPadOS
26.0 |
Apple iPad
|
|
Chrome on an iPad, desktop mode
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/141.0.7390.41 Safari/605.1.15
|
Tablet |
Chrome
141.0.7390.41 WebKit |
iPadOS
|
Apple iPad
|
|
Chrome on a Pixel
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36
Client HintsSec-CH-UA: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Platform-Version: "16.0.0" Sec-CH-UA-Model: "Pixel 9 Pro" |
Phone |
Chrome
141 Blink |
Android
16 from Client Hints |
Google Pixel 9 Pro
|
|
Samsung Internet on a Galaxy
Mozilla/5.0 (Linux; Android 15; SM-S938B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/28.0 Chrome/130.0.0.0 Mobile Safari/537.36
|
Phone |
Samsung Internet
28 Blink |
Android
15 |
Samsung SM-S938B
|
|
A Galaxy Tab
Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Safari/537.36
|
Tablet |
Samsung Internet
27 Blink |
Android
14 |
Samsung SM-X710
|
|
Firefox on Android
Mozilla/5.0 (Android 15; Mobile; rv:143.0) Gecko/143.0 Firefox/143.0
|
Phone |
Firefox
143 Gecko |
Android
15 |
–
|
|
An Amazon Fire tablet
Mozilla/5.0 (Linux; Android 9; KFTRWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/124.3.2 like Chrome/124.0.6367.219 Safari/537.36
|
Tablet |
Silk
124.3.2 Blink |
Fire OS
|
Amazon KFTRWI
|
|
A Huawei phone
Mozilla/5.0 (Linux; Android 12; HarmonyOS; NOH-NX9; HMSCore 6.13.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.4.312 Mobile Safari/537.36
|
Phone |
Huawei Browser
15.0.4.312 Blink |
HarmonyOS
|
Huawei NOH-NX9
|
|
An LG TV
Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.211 Safari/537.36 WebAppManager
|
TV |
Chrome
108.0.5359.211 Blink |
webOS
|
LG
|
|
A Samsung TV
Mozilla/5.0 (SMART-TV; LINUX; Tizen 7.0) AppleWebKit/537.36 (KHTML, like Gecko) 94.0.4606.31/7.0 TV Safari/537.36
|
TV |
–
|
Tizen
7.0 |
Samsung
|
|
A PlayStation 5
Mozilla/5.0 (PlayStation 5 10.40) AppleWebKit/605.1.15 (KHTML, like Gecko)
|
Games console |
–
|
PlayStation
10.40 |
Sony PlayStation 5
|
|
An Xbox
Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox Series X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02
|
Games console |
Edge
20.02 EdgeHTML |
Xbox
|
Microsoft Xbox Series X
|
|
A Nintendo Switch
Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/606.4 (KHTML, like Gecko) NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393
|
Games console |
–
|
Nintendo
|
Nintendo Switch
|
|
A Galaxy Watch
Mozilla/5.0 (Linux; Tizen 5.5; SAMSUNG SM-R820) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/1.0 Chrome/69.0.3497.106 Mobile Safari/537.36
|
Wearable |
Samsung Internet
1 Blink |
Tizen
5.5 |
Samsung Galaxy Watch
|
|
Google, on a phone
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.54 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
|
Bot |
Chrome
141.0.7390.54 Blink |
Android
6.0.1 |
Googlebot Search engine |
|
Bing
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36
|
Bot |
Chrome
116.0.1938.76 Blink |
–
|
Bingbot Search engine |
|
OpenAI, training
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)
|
Bot |
–
|
–
|
GPTBot AI crawler |
|
Anthropic, training
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
|
Bot |
–
|
–
|
ClaudeBot AI crawler |
|
ChatGPT, for a person
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot
|
Bot |
–
|
–
|
ChatGPT-User AI assistant |
|
Perplexity, for search
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)
|
Bot |
–
|
–
|
PerplexityBot AI search |
|
ByteDance
Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)
|
Bot |
–
|
Android
5.0 |
Bytespider AI crawler |
|
A Slack link preview
Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)
|
Bot |
–
|
–
|
Slackbot Link preview |
|
A curl script
curl/8.14.1
|
Bot |
–
|
–
|
curl HTTP client |
Same method names, same answers. Change the import and keep your code; the facade alias Agent keeps working in Blade too. Then, when you like, move to the typed API.
# composer.json - "jenssegers/agent": "^2.6" + "ruvelo/laravel-device": "^1.0" - use Jenssegers\Agent\Agent; + use Ruvelo\Device\Agent; $agent = new Agent(); $agent->isMobile(); // unchanged $agent->browser(); // "Edge", not "Chrome" $agent->version('Edge'); // "141.0.0.0" // The typed way $device = $request->device(); $device->type; // DeviceType::Phone $device->os->atLeast(17); // true $device->isAiBot(); // false
| jenssegers/agent | Typed API |
|---|---|
isMobile() | $device->isMobile() |
isTablet(), isPhone() | isTablet(), isPhone() |
isDesktop() | isDesktop() |
isRobot(), robot() | isBot, botName, botCategory |
browser(), version($b) | browser->name, browser->version |
platform() | os->name, os->version |
device() | brand, model |
languages() | languages |
@mobile
<a href="/app">Get the Halyard app</a>
@elsebot
{{-- Crawlers get the plain page --}}
@else
<a href="/download">Halyard for desktop</a>
@endmobile