The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.


HTTP::Headers::UserAgent - identify browser by parsing User-Agent string (deprecated)


  use HTTP::Headers::UserAgent;

  $user_agent = HTTP::Headers::UserAgent->new( $ENV{HTTP_USER_AGENT} );
  $browser = $user_agent->browser;
  $version = $user_agent->version;
  $os      = $user_agent->os;

  $platform = $user_agent->platform;


This module, HTTP::Headers::UserAgent, is deprecated. I suggest you use one of the other modules which provide the same functionality. Check the SEE ALSO section for pointers. This module is being kept on CPAN for the moment, in case someone is using it, but at some point in the future it will probably be removed from CPAN.

This module is now just a wrapper around HTTP::BrowswerDetect, which is still actively maintained. If you're still using this module, and have a reason for not wanting to switch, please let me know, so I can either help you migrate, or ensure the module continues to support your needs.



Creates a new HTTP::Headers::UserAgent object. Takes the HTTP_USER_AGENT string as a parameter.

string [ HTTP_USER_AGENT ]

If a parameter is given, sets the user-agent string.

Returns the user-agent as an unprocessed string.


Tries to guess the platform. Returns ia32, ppc, alpha, hppa, mips, sparc, or unknown.

  ia32   Intel archetecure, 32-bit (x86)
  ppc    PowerPC
  alpha  DEC (now Compaq) Alpha
  hppa   HP
  mips   SGI MIPS
  sparc  Sun Sparc

This is the only function which is not yet implemented as a wrapper around an equivalent function in HTTP::BrowserDetect.


Tries to guess the operating system. Returns irix, win16, win95, win98, winnt, win32 (Windows 95/98/NT/?), macos, osf1, linux, solaris, sunos, bsdi, os2, or unknown.

This is now a wrapper around HTTP::BrowserDetect methods. Using HTTP::BrowserDetect natively offers a better interface to OS detection and is recommended.


Returns the name of the browser, or 'Unknown'.

This is now a wrapper around HTTP::BrowserDetect::browser_string

In previous versions of this module, the documentation said that this method return a list with agent name and version. But it never did, it jusr returned the browser name.


Returns the version of the browser, as a floating-point number. Note: this means that version strings which aren't valid floating point numbers won't be recognised.

This method is just a wrapper around the public_version() method in HTTP::BrowserDetect.


For backwards compatibility with HTTP::Headers::UserAgent 1.00, a GetPlatform subroutine is provided.


Returns Win95, Win98, WinNT, UNIX, MAC, Win3x, OS2, Linux, or undef.

In some cases ( `Win32', `Windows CE' ) where HTTP::Headers::UserAgent 1.00 would have returned `Win95', will return undef instead.

Will return `UNIX' for some cases where HTTP::Headers::UserAgent would have returned undef.


I have written a review of all CPAN modules for parsing the User-Agent string. If you have a specific need, it may be worth reading the review, to find the best match.

In brief though, I would recommend you start off with one of the following modules:


Has best overall coverage of different browsers and other user agents.


Also has good coverage, but is much faster than the other modules, so if performance is important as well, you might prefer this module.


Poorest coverage of the three modules listed here, and doesn't do well at recognising version numbers. It's the best module for detecting whether a given agent is a robot/crawler though.



This module is now maintained by Neil Bowers <>.

The previous maintainer, who wrote this version, was Ivan Kohler.

Portions of this software were originally taken from the Bugzilla Bug Tracking system <>, and are reused here with permission of the original author, Terry Weissman <>.


Copyright (c) 2001 Ivan Kohler. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.