[HN Gopher] Why do all browsers' user agents start with "Mozilla...
___________________________________________________________________
Why do all browsers' user agents start with "Mozilla/"? (2008)
Author : nan60
Score : 63 points
Date : 2025-06-22 20:04 UTC (2 hours ago)
(HTM) web link (stackoverflow.com)
(TXT) w3m dump (stackoverflow.com)
| gnabgib wrote:
| (2008)
|
| The post popular answer includes: _History of the browser user-
| agent string_ related discussions:
|
| 2022 (87 points, 20 comments)
| https://news.ycombinator.com/item?id=31246438
|
| 2019 (62 points, 22 comments)
| https://news.ycombinator.com/item?id=21085388
|
| 2018 (558 points, 168 comments)
| https://news.ycombinator.com/item?id=16525559
|
| 2013 (100 points, 32 comments)
| https://news.ycombinator.com/item?id=6674812
| shmerl wrote:
| Really weird and convoluted reasons for it. A better question is
| why it was never fixed / renamed to proper names.
| ronsor wrote:
| Backwards compatibility at all costs
| ExoticPearTree wrote:
| Probably because now if you come with a different User-Agent
| you might get blocked by a WAF or a load balancer. Too much
| history to just forget overnight.
| madeofpalk wrote:
| They did in the new UA api https://developer.mozilla.org/en-
| US/docs/Web/HTTP/Reference/...
| fredoralive wrote:
| To avoid breaking stuff basically, easier to have ugly UA
| strings than persuade every site that does weird UA parsing to
| fix themselves.
|
| The main exception to this was Opera back when it had its own
| engine, which did use Opera at the start of its fairly clean
| default UA string. Then when they reached version 10 they had
| to make the primary version 9 with a second real version later
| in the string as sites couldn't cope with two digit version
| numbers...
| imiric wrote:
| I miss Opera. It's a damn shame that it was so badly
| mismanaged, and ultimately sold off to investors, which
| further buried it into irrelevance. It now survives on
| gaming-oriented gimmicks and shady promotions. I hear that
| Vivaldi is supposed to be a continuation of it, but from what
| I've seen it's just another Chromium clone with a closed-
| source UI, without any distinguishing features.
|
| Opera in the late 90s / early 2000s was excellent. It was
| lightweight and snappy. Among the first to support tabs. The
| Presto engine was the most performant on machines of the era.
| The trialware/adware was annoying, but the browser was solid.
| The built-in email client was decent as well.
|
| In 2009 they launched a very interesting web server / sharing
| feature with Opera Unite, which unfortunately didn't gain
| traction.
|
| Opera Mini was the best mobile browser for a few years as
| well, before smartphones took off.
| FirmwareBurner wrote:
| _> It's a damn shame that it was so badly mismanaged_
|
| I think even the best management in the world wouldn't have
| helped it survive the onslaught of Google's Chrome and
| their massive war chest in that time. It's like a team of
| girl scouts versus the NBA.
| fredoralive wrote:
| Amen brother.
|
| My personal big thing was the ability to "minimise" / deque
| tabs, a legacy of the really early version of tabs that
| were basically based around the concept of the Windows task
| bar (and MDI), not tabs. I'm not a Firefox user as it's the
| least worst option, and there used to be Firefox extensions
| that mostly (but not quite) did it, but Mozilla naturally
| broke it as part of their general view that making Firefox
| worse will somehow make it popular[1].
|
| Also mouse gestures. Again, you can kinda do it with
| Firefox, but random stuff like the home shortcut screen
| don't support it nowadays because???
|
| Also, I want a status bar. I don't care if it's old
| fashioned, but I want one.
|
| Sorry if this is becoming a Mozilla / Firefox gripe fest.
|
| [1] I don't think Opera had a nice preview view for RSS
| feeds, but Firefox did. Then they broke it for random
| reasons? Gee, raw XML is so much better than a sensible
| view, thank you Mozilla!
| JdeBP wrote:
| Possibly, but it wouldn't be the first time that people took a
| field that was supposed to be an originator name and made it
| something else entirely.
|
| There's a field in the Volume Boot Record of disc volumes, in
| the PC compatible world, that was supposed to be the name of
| the OEM whose software formatted the volume. It was (and is) a
| few bytes of identifying human-readable text. Operating systems
| ended up doing string comparisons and parsing numbers, and
| breaking in odd ways, including not even recognizing their own
| handiwork, when operating system vendors did not use the name
| of the first vendor.
|
| * https://jdebp.uk/FGA/volume-boot-block-oem-name-field.html
|
| It has probably been long enough since MS-DOS 3.3 and in turn
| the Browser Wars that someone is right now failing to learn
| from history and making this mistake anew, yet again,
| somewhere.
| wolrah wrote:
| > A better question is why it was never fixed / renamed to
| proper names.
|
| Because the reason it is the way it is in the first place is
| compatibility with sites that are doing things objectively
| wrong already, which makes it really hard to get them to
| change.
|
| The problem is that poorly designed systems limit access or
| disable features based on a user-agent allowlist, which is
| never the right answer. There is no right way to do it because
| it's always wrong, but people choose to do it anyways.
|
| I'm personally a fan of treating broken sites as broken, but I
| understand that realistically any "alternative" browser has to
| deal with all the broken sites designed for whatever came
| before it because otherwise most normal users won't consider
| switching.
|
| If I were made King of the Internet for a day and able to
| enforce any changes I wanted on everyone, all the major
| browsers would have to change their user-agent string to
| something totally unique on the same day, intentionally
| breaking any sites that are doing it wrong for everyone so the
| broken sites are forced to fix their own nonsense. That'd come
| maybe two or three decrees down the line from "All ISPs are
| required to provide a globally routable IPv6 block in
| accordance with RFC 6177, providing only CGN IPv4 is a capital
| offense".
| Gigachad wrote:
| Personally I'd get rid of the user agent entirely. Stop
| sending it and let sites query available features rather than
| check the specific browser version.
| impure wrote:
| Mozilla should start charging a licensing fee for starting your
| user agent with Mozilla/ Money problems solved!
| wvbdmp wrote:
| In a way it seems like a classic trademark violation, tricking
| people (or their servers) into thinking your product is someone
| else's. I wonder if there are actual agreements about this
| these days.
| rileymat2 wrote:
| The mark in this usage has gone unprotected for so long, I
| doubt there would be any success with that.
|
| Also, I doubt tricking servers would indicate creating
| consumer confusion with the trademark.
| im3w1l wrote:
| Adversarial compatibility is pretty nice though, I don't
| think we should do away with it.
| userbinator wrote:
| See _Sega v. Accolade_ for a precedent of why that likely won
| 't work.
| GuB-42 wrote:
| Google would have to pay a lot of licensing fees then...
|
| > Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML,
| like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36
|
| It is Mozilla (nope), Linux (yes, in a sense), Android (yes)
| AppleWebKit (not Apple and not WebKit), KHTML (nope), Gecko
| (nope), Chrome (yes), Mobile (yes), Safari (nope).
|
| So maybe they owe something to Mozilla, Apple and KDE.
| RainyDayTmrw wrote:
| In a similar way: Why was there no Windows 9? [1]
|
| [1]: https://www.pcworld.com/article/435584/why-
| windows-10-isnt-n...
| uxjw wrote:
| TL;DR: Some code looking for Windows 95 or 98 only looked for
| "Windows 9" to match both, and would have matched Windows 9.
|
| Now Apple has the year in the OS version we'll have people
| wondering in a few years what happened to iOS 19-25.
| DecentShoes wrote:
| This is false, Windows reports its version as a series of
| integers, not as a string, and if there was any code that did
| you could easily work around it by writing "Windows Nine" or
| "Windows v9" or whatever.
| danielheath wrote:
| I worked on a codebase that had this bug, so I'm not sure
| where you're getting "this is false" from.
|
| We sold software that was installed long-term at customer
| sites, and they weren't going to update it until they
| needed to, so the bug persisted in production well after we
| fixed it.
| Johnbot wrote:
| Best I can tell it's only libraries that generate those
| sort of strings, which could just as well report a
| different string for Windows 9. The actual Windows API
| even returns the version information for Windows 8 if the
| application isn't manifested for 10 and onwards.
| DecentShoes wrote:
| This is a straight up lie and it's very obvious.
|
| Windows reports its version numbers as a series of integers or
| by bools from helper functions, not as a string, and if there
| was any code that did you could easily work around it by having
| it report "Windows Nine" or "Windows v9" or whatever.
|
| https://learn.microsoft.com/en-us/windows/win32/api/sysinfoa...
|
| https://learn.microsoft.com/en-us/windows/win32/sysinfo/vers...
| Gigachad wrote:
| There's also no reason that the public facing name has to be
| the same as the internal name. They could have called it
| Windows 9 and internally reported it as anything in the apis.
|
| Its basically standard in software to do this when the actual
| name for something comes out near the end or changes often so
| you don't have to update all the code to reference the new
| name.
| technothrasher wrote:
| Not _all_ browsers (e.g. "Lynx/2.9.0dev.12 libwww-FM/2.1") :)
| nreilly wrote:
| Maybe we should move to something like termcap for browsers? /s
| anamexis wrote:
| Has anyone tried running a generic User-Agent on a standard
| modern browser? (By "generic", I mean one that does away with
| this whole compatibility dance.) I'm curious how much would break
| or degrade.
| userbinator wrote:
| Unfortunately, everything that does fingerprinting/"bot
| detection" will get triggered.
| Gigachad wrote:
| All of the privacy stuff straight up breaks the internet
| these days. Try using a VPN and half the time CDNs straight
| up refuse to serve you the JS files so sites like
| supermarkets or flight booking websites load broken or show
| some generic forbidden error.
|
| Blanking out the user agent would have to be pushed by either
| Apple, Google, or Microsoft. And out of those I feel like
| only Apple would do it. iCloud private relay doesn't end up
| breaking websites since companies care about not degrading
| the experience for Apple users and make sure the site still
| works.
| arp242 wrote:
| Opera Presto didn't use it, and had a User-Agent like:
| Opera/9.80 (X11; Linux zvav; U; en) Presto/2.12.423
| Version/12.16
|
| Didn't seem to cause that much problems.
|
| It did keep the version at 9.80, presumably because >=10 must
| have caused problems somewhere.
| usr1106 wrote:
| Ironically Cloudflare blocks the real Mozilla derived browser on
| this Linux phone, so I can't access SO anymore. (Turnstile was
| broken a long time. It finally got fixed half a year ago. Now I
| note it does not even come up any more, just a static message
| that I should throw away my phone^W^W^W^W upgrade my browser. No
| idea whether Cloudflare or SO is to blame.)
| userbinator wrote:
| No surprise, CF is in bed with Big Browser. There are
| workarounds but I won't go into detail here since "the walls
| have ears"; suffice to say that the "bot" scraping companies
| still have no trouble getting around it.
___________________________________________________________________
(page generated 2025-06-22 23:00 UTC)