Microsoft Edge User Agent string

I just noticed that while all other browsers seem to have their own user agent strings, Microsoft Edge's seems to look something like this:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393

Why does it have Mozilla, Chrome and Safari, and not just Edge in it?


Solution 1:

So Why does it have Mozilla, Chrome and Safari, and not just Edge in it?

Webpage designers are simply lazy, and they attempt to block visitors from using specific browsers, because they want to use the easier framework which is only supported by certain browsers.

It also is a deliberate design decision to limit the usefulness of user-agent checks. This decision likely based on the fact (from the perspective of Spartan/Edge Developers), is that in the past, websites would look specifically for IE and notify users to use a different browser.

Since Edge/Spartan was Microsoft's first attempt to modernize the Trident engine, and Edge/Spartan's purpose was to match the feature set of (Blink, AppleWebKit, and Gecko) at the time, the user agent simply advertising itself as being everything is one way to prevent Webpage designers from easily targetting Edge the same way they targeted IE.

Many websites that you visit today will not display well in IE because they are not coded properly and usually display a page like they would in an old browser, even though Internet Explorer 11 supports many of the new web standards. Some pages will display incorrectly in IE while working perfectly fine on other browsers such as Chrome or Firefox.

There's also a problem with jerky scrolling that doesn't go away for some websites even after you turn off smooth scrolling, and there are cases in which important elements will not display because a webpage identifies your browser as IE.

Microsoft's new Spartan engine masks itself as Chrome

Chrome and Firefox also does something similar:

Mozilla/5.0 (Windows NT X.Y; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2657.0 Safari/537.36,gzip(gfe),gzip(gfe)"

It is worth pointing out that IE11's user agent is similar:

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

User-agent string changes

Solution 2:

Edge pretended to be Chrome, and Chrome pretended to be Safari, and Safari pretended to be Mozilla. And Edge used EdgeHTML but revealed it not, and Chrome used Blink, but revealed it not, but Chrome pretended to use WebKit. And Webkit pretended to be KHTML, and KHTML pretended to be Gecko. And confusion abounded excessively on the face of the web.

Taken from What is the User Agent string name for Microsoft Edge? comment by Claude

Microsoft Edge UA string:

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

I detail why in this blog post.

Neowin recently reported that Microsoft’s new browser for Windows 10, Spartan, uses the Chrome UA string, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0″. That is done on purpose.

You’ll also notice that the entire string ends with “Edge/12.0″, which Chrome does not.

I should point out, that this isn’t a redical departure from what Microsoft did with IE 11, which on Windows 8 reads: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko, as explained in this post.

What is User Agent sniffing?

Often, web developers will UA sniffing for browser detection. Mozilla explains it well on their blog:

Serving different Web pages or services to different browsers is usually a bad idea. The Web is meant to be accessible to everyone, regardless of which browser or device they’re using. There are ways to develop your web site to progressively enhance itself based on the availability of features rather than by targeting specific browsers.

Here’s a great article explaining the history of the User Agent.

Often, lazy developers will just sniff for the UA string and disable content on their website based on which browser they believe the viewer is using. Internet Explorer 8 is a common point of frustration for developers, so they will frequently check if a user is using ANY version of IE, and disable features.

The Edge team details this even deeper on their blog.

All user agents strings contain more information about other browsers than the actual browser you are using – not just tokens, but also ‘meaningful’ version numbers.

Internet Explorer 11’s UA string:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

Microsoft Edge UA string:

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

The userAgent property has been aptly described as “an ever-growing pack of lies” by Patrick H. Lauke in W3C discussions. (“or rather, a balancing act of adding enough legacy keywords that won’t immediately have old UA-sniffing code falling over, while still trying to convey a little bit of actually useful and accurate information.”)

We recommend that web developers avoid UA sniffing as much as possible; modern web platform features are nearly all detectable in easy ways. For example, the Modernizr library is a fantastic and simple way of detecting features.

Over the past year, we’ve seen some UA-sniffing sites that have been updated to detect Microsoft Edge… only to provide it with a legacy IE11 code path. This is not the best approach, as Microsoft Edge matches ‘WebKit’ behaviors, not IE11 behaviors (any Edge-WebKit differences are bugs that we’re interested in fixing).

In our experience Microsoft Edge runs best on the ‘WebKit’ code paths in these sites. Also, with the internet becoming available on a wider variety of devices, please assume unknown browsers are good – please don’t limit your site to working only on a small set of current known browsers. If you do this, your site will almost certainly break in the future.

Conclusion

By presenting the Chrome UA string, we can work around the hacks these developers are using, to present the best experience to users.

Taken from What is the User Agent string name for Microsoft Edge? answer by Dave Voyles.