1. The Beginning: Mosaic, Netscape, and the Birth of Browser Snobbery

It all started in the early days of the web with Mosaic, the first browser to support inline images. Then came Netscape Navigator, introducing support for frames — a revolutionary feature at the time. Web developers quickly jumped aboard and began delivering enhanced layouts — but only to browsers they trusted.

Thus began the first wave of discrimination: if your user-agent string included "Mozilla", you got the full experience; if not, you were downgraded to raw HTML.

2. Microsoft’s Clever Hack: Disguise to Survive

Despite supporting frames, Internet Explorer found itself locked out of the premium experience simply because it wasn’t “Mozilla.” So, Microsoft made a bold move: it shipped IE with the user-agent string:

Mozilla/1.22 (compatible; MSIE 2.0)

A little deception? Perhaps. But it worked. Suddenly, IE got access to the “good” web. This marked the birth of a long-standing arms race in user-agent camouflage.

3. Rise of Firefox: A New Engine, the Same Old Game

Fast forward a few years. Netscape faded, but Mozilla returned as Firefox, backed by a new rendering engine — Gecko. Firefox quickly won the hearts of developers, and sites began optimizing for Gecko over the aging Trident engine in IE.

Once again, web developers began to discriminate, and once again, browsers had to adapt. Even Gecko-based browsers like Camino and SeaMonkey had to identify as Mozilla to stay relevant.

4. The KHTML Rebellion and WebKit’s Evolution

Then came Konqueror, powered by the KHTML engine. Though technically sound, it was treated as second-class. To gain fair treatment, Konqueror disguised itself:

Mozilla/5.0 (compatible; Konqueror/3.2) (KHTML, like Gecko)

The game was no longer about what you are, but who you pretend to be.

Apple later forked KHTML into WebKit to create Safari, which in turn presented itself as:

Mozilla/5.0... AppleWebKit/... (KHTML, like Gecko) Safari/...

And the impersonation game grew more complex.

5. Chrome’s Arrival: Legacy in Layers

When Google Chrome launched using WebKit, it needed to be treated like Safari. So, it adopted a layered disguise:

Mozilla/5.0... AppleWebKit/... (KHTML, like Gecko) Chrome/... Safari/...

Look closely:

  • Mozilla pretender
  • WebKit pretending to be KHTML
  • KHTML pretending to be Gecko

A Russian doll of identity.

6. Conclusion: A String Frozen in Time

The user-agent string today is less about clarity and more about legacy compatibility theater. Each browser wears a mask, not out of deceit, but out of necessity — a silent contract with the fragmented web.

What was once a useful identifier has become a codeword-laced homage to the browser wars — an unintentional monument to decades of chaos, creativity, and compromise.

And yes, we’re still calling ourselves "Mozilla."