https://webaim.org/blog/user-agent-string-history/ skip to main content WebAIM - Web Accessibility In Mind Main Navigation * Services * Articles * Resources * Projects * Community Search: [ ]Submit Search Introduction to Web Accessibility WebAIM Training History of the browser user-agent string You are here: Home > Blog > History of the browser user-agent string [mosaic]In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing. [netscape]And behold, then came a new web browser known as "Mozilla", being short for "Mosaic Killer," but Mosaic was not amused, so the public name was changed to Netscape, and Netscape called itself Mozilla/1.0 (Win3.1), and there was more rejoicing. And Netscape supported frames, and frames became popular among the people, but Mosaic did not support frames, and so came "user agent sniffing" and to "Mozilla" webmasters sent frames, but to other browsers they sent not frames. And Netscape said, let us make fun of Microsoft and refer to Windows as "poorly debugged device drivers," and Microsoft was angry. And so Microsoft made their own web browser, which they called Internet Explorer, hoping for it to be a "Netscape Killer". [ie]And Internet Explorer supported frames, and yet was not Mozilla, and so was not given frames. And Microsoft grew impatient, and did not wish to wait for webmasters to learn of IE and begin to send it frames, and so Internet Explorer declared that it was "Mozilla compatible" and began to impersonate Netscape, and called itself Mozilla/1.22 (compatible; MSIE 2.0; Windows 95), and Internet Explorer received frames, and all of Microsoft was happy, but webmasters were confused. And Microsoft sold IE with Windows, and made it better than Netscape, and the first browser war raged upon the face of the land. [mozilla] And behold, Netscape was killed, and there was much rejoicing at Microsoft. But Netscape was reborn as Mozilla, and Mozilla built Gecko, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826, and Gecko was the rendering engine, and Gecko was good. [firefox] And Mozilla became Firefox, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0, and Firefox was very good. And Gecko began to multiply, and other browsers were born that used its code, and they called themselves Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1 the one, and Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/ 20071008 SeaMonkey/1.0 another, each pretending to be Mozilla, and all of them powered by Gecko. And Gecko was good, and IE was not, and sniffing was reborn, and Gecko was given good web code, and other browsers were not. [konqueror]And the followers of Linux were much sorrowed, because they had built Konqueror, whose engine was KHTML, which they thought was as good as Gecko, but it was not Gecko, and so was not given the good pages, and so Konquerer began to pretend to be "like Gecko" to get the good pages, and called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) and there was much confusion. [opera]Then cometh Opera and said, "surely we should allow our users to decide which browser we should impersonate," and so Opera created a menu item, and Opera called itself Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51, or Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51, or Opera/ 9.51 (Windows NT 5.1; U; en) depending on which option the user selected. [safari]And Apple built Safari, and used KHTML, but added many features, and forked the project, and called it WebKit, but wanted pages written for KHTML, and so Safari called itself Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5, and it got worse. And Microsoft feared Firefox greatly, and Internet Explorer returned, and called itself Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) and it rendered good code, but only if webmasters commanded it to do so. [chrome]And then Google built Chrome, and Chrome used Webkit, and it was like Safari, and wanted pages built for Safari, and so pretended to be Safari. And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to be Mozilla, and Chrome called itself Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/ 525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13, and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded. Comments << Older Comments 1. [d0cd2bb2] KevMc September 23, 2010 And lo, IE8 was too powerful for some and made their old fashioned portals crumble, so to buy time while they rebuilt their homepages they crippled their customers IE8 so that it pretended to be the lowly IE6 and could be forced to inhabit the depths that are known as Quirksmode Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; Alexa Toolbar) 2. [231eb6f6] Steven Shippee January 24, 2011 Any way one can change this string to something more meaningful? Rather than: HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0; +Trident/4.0;+MathPlayer+2.20;+SLCC1;+.NET+CLR+2.0.50727; +.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E; +InfoPath.3;+MS-RTC+LM+8) I really, really don't need to let others know I have MathPlayer or Infopath, etc., do I? 3. [dd2d4bb3] TeMc March 18, 2011 Thanks for this article man, I laughed my ass off multiple times (gotta see the docter ;-D ) btw, got here because it was linked from http://css-tricks.com/ browser-detection-is-bad/ which was linked from http:// css-tricks.com/new-poll-conditional-tags-for-all-browsers/# comment-90341 which was recently published. 4. [4aa9e6f7] Nivek April 28, 2011 Great article, man. Now I have some insight into that LONG confusing string name each browser is using... 5. [052476fc] Alex April 29, 2011 I did never understand, why meanwhile none of them get rid of it. Everything would be so simple: Firefox/4.0 (Windows NT 6.0; Gecko/2.0.1) MSIE/9.0 (Windows NT 6.0; Trident/5.0) Chrome/12.0.706.0 (Windows NT 6.0; AppleWebKit/534.25) Safari/5.0.4 (Windows NT 6.0; AppleWebKit/533.20.27) Konqueror/4.5 (Windows NT 6.0; KHTML/4.5.4) 6. [15f111b4] Dylan May 20, 2011 Everything would be so simple: Mozilla/5.0 7. [c92b97c2] Igoreso May 20, 2011 ^ This. 8. [4c18e9b2] Dan. May 26, 2011 WHAhahahahahahaaa..... "......and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded......." 9. [01822efa] anonymous August 9, 2011 And Opera 10 pretends to be Opera 9.8 (but not Mozilla anymore) http://my.opera.com/chooseopera/blog/2009/05/29/ changes-in-operas-user-agent-string-format 10. [ff8bed0b] Ice August 31, 2011 I just wish people would add a new, revised user-agent string in form of: : (:; ; Then instead of "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1" we'd have "Chrome/13.0.782.107 (Windows NT 7.0; Mozilla:5.0/KHTML/ AppleWebKit:535.1; AppleWebKit:531.1;) which would be much simpler to extract desired data from. 11. [ff8bed0b] Ice August 31, 2011 I see the placeholders inside > and < were stripped away.. Meant to say: [Browser name]:[Browser version] ([OS name]:[OS version]; [Engine inheritance path]; [Engine name]:[Engine version]) 12. [dcb0b279] Petah September 27, 2011 Two words, feature detection! 13. [8e909305] gion January 30, 2012 Very funny stuff. It's actually kind of sad, but presented in this manner I laughed my brains out. The conclusion is that every browser's user agent starts with "Mozilla" which makes it quite insignificant. freaky stuff 14. [6ee06363] tomexsans February 7, 2012 Hahahah so funny, i wish that a team of programmers give time to straighten up this chaotic masquerade of web-browsers. But that is a Mission Impossible ;3 15. [6e42645b] Janemann April 25, 2012 Read this daily WTF to see what a senior enterprise java programmer can make out of this ... a living! 16. [f82bc512] Gip April 25, 2012 And in 2012 the user-agent string is completely useless. 17. [f1e3ab21] TJ April 30, 2012 meh I'll take Safari or Chrome over FF any day. FF still has a broken setTimeout() which is just unacceptable 18. [e7c60f52] kni June 9, 2012 W3 should revise the User-Agent tag. Instead of this uncomprehensive user agents, we should have adapted user agents which say both browser and features compatible: Chrome/19.0 Windows/5.2 HTML/5 Flash/10.0 CSS/3; JS; Java/4; Webm; Mp4; Canvas; Video; Audio Would be longer, but at least easy to understand. 19. [c2d1cf6e] Navarr July 15, 2012 While reading the comments, I came upon the complete and utter conclusion that several of the users here haven't put 2 and 2 together to realize why browsers are still pretending to be each other. This is the internet, my friends, where content continues to exist for as long as possible, and sometimes even longer. Browsers continue to send horrid user agent strings like this because there are still websites that use user agent sniffing (even modern ones that do it) and some of these may never be updated. The browsers, desiring to support all content on the internet, must then have this horrid user agent in order to do so. Because "Legacy Code" We should not make user agents simpler, we should not add compatible features to them (history WILL repeat itself), we should ignore them entirely and code feature detection into the JavaScript itself with the use of tools like Modernizr. 20. [658bb5d5] Miles. July 15, 2012 The "begates" have become "becames", and linear progression turned into the timeline for 'Primer' as cut by Quentin Tarantino. 21. [0533211a] Pat July 16, 2012 Umm... User Agent Switcher (add-on for firefox) anyone? Now you can REALLY mess with the web app developer's minds (at the risk of royally screwing up the rendition of some sites). Seriously, there's at least one site where I use this so the dang thing actually works with Firefox 13 (with a "generified Mozilla" setting). And it can be used to hide details of what plugins/ addons you have, if you want. 22. [6fc1aec3] Ard July 17, 2012 This sounds a modern interpretation of the story of the tower of babel. 23. [7e8ce06e] juegos de ni as July 17, 2012 And in 2012 the user-agent string is completely useless. 24. [cb7c3711] someone July 17, 2012 Lets' clear the decks. 'HTML5'. 25. [0e0e9e24] Fadi (itoctopus) July 18, 2012 There are two problems with the user agent that urge us to find a replacement: - It can be faked - Users can hide it The above demonstrate that it's an unreliable way to guess what browser the user is using. We really need a method that definitely tells us which browser the user is using. 26. [62fa2724] Why so geeky August 13, 2012 You know I been wondering since I took up this web thing, why the whole process needs to be so much trouble. Everything is so geeky, user agent strings? Why, why not just safari, chrome who needs a version? Firefox forces its automatic updates anyway. Just call it this unfinished thingy. It amazes me how this development thing works. Everyone just produces unfinished works, that are built on top of unfinished frameworks etc... In the real (physical world) if you deliver an unfinished product you are not getting paid, simple as that. Not on the WWW, you send it and work out the "bugs" later. Bugs, nice name for broken software or poor craftsmanship. In the real world you would of lost your job. I don't need to know your versions, I don't care if you are a lion, snow leopard or what every you are. I got an idea, lets just add some OOP Javscript to the mix. But you need to use this or that or the other wacky method to use an OOP like style etc.. Lets stop making all these programming languages on top of other ones and instead make on that syntax is like English instead. Place this in that directory, add an darn slider here because they are so fancy. Tell this browser to crash because it totally not cool or not like every other one. Anyway that is my little rant. Everything is so overcomplicated it hurts, when will the internet world wake up and work on making all this fancy jazz simple. well simple-1.3.45rc 27. [3ba3330f] 5fonts September 9, 2012 There are two problems with the user agent that urge us to find a replacement: - It can be faked - Users can hide it The above demonstrate that it s an unreliable way to guess what browser the user is using. We really need a method that definitely tells us which browser the user is using. Newer Comments >> September 3, 2008 [5] Aaron Andersen 233 Comments Search the blog Search for: [ ] [Search] Blog Archives * April 2022 * March 2022 * February 2022 * January 2022 * August 2021 * 2022 * 2021 * 2020 * 2019 * 2018 * 2017 * 2016 * 2015 * 2014 * 2013 * 2012 * 2011 * 2010 * 2009 * 2008 * 2007 * 2006 RSS Feeds (c)2022 WebAIM Institute for Disability Research, Policy, and Practice Utah State University 6807 Old Main Hill Logan, UT 84322-6807 435.797.7024 Check Your Accessibility Web site address: [ ] [WAVE] From the Blog * Tips for Accessible Screen Sharing * The WebAIM Million - 2022 Update * Introducing the Accessibility IMpact (AIM) Score and Other WAVE Updates * The crisis is real: Where are the web accessibility professionals? Popular Resources * WebAIM Training * WCAG 2 Checklist * WebAIM Monthly Newsletter * Color Contrast Checker * Web Accessibility for Designers * WAVE Web Accessibility Evaluation Tool * Contact * About * RSS Feeds * Twitter * Copyright & Terms of Use