Resources > Engines
This page lists the common browser engines:
Introduction
A browser engine — also called a layout engine or rendering engine — is the core of a web browser, responsible for rendering web pages.
A browser engine can be used by many different browsers. For example, the Gecko engine is used by Camino, Epiphany, Fennec, Firefox,
Galeon, K-Meleon, Mozilla, Netscape 6-9, SeaMonkey, and others. Browsers which use the same version of the same engine should display pages the
same if the browsers are configured the same, but there can be differences. For example, Chrome and Safari use the same browser engine, but they
have different JavaScript interpreters, which can create rendering differences. Or, for example, some browsers have different default styles
— e.g. default background colours — which can also create rendering differences.
Common Browser Engines
There are four major browser engines in use today, not counting those used for mobile devices:
- Gecko : developed by the Mozilla organization, this is a free, open source engine used by many browsers, of which the
best known are Firefox, SeaMonkey, and Netscape 6-9.
- Presto : developed by Opera Software, this is a proprietary engine used in recent versions of the Opera browser.
- Trident : developed by Microsoft, this is a proprietary engine used by many browsers, of which the best known are
Internet Explorer and most AOL browsers for Windows.
- WebKit (or AppleWebKit): developed by Apple, this is a free, open source engine based on the KHTML engine, used by a small number
of browsers, including Chrome, Safari, and OmniWeb.
Minor browser engines include:
- iCab : developed for versions 1-3 of the iCab browser, which runs under OS X. (Later versions of iCab use the Apple WebKit.)
- KHTML : developed for the Linux KDE Desktop, is used in the KDE Konqueror browser, and more importantly was used to
create Apple’s WebKit engine; the WebKit engine can legitimately be called a KHTML engine.
- Tasman : developed by Microsoft for its extinct Apple browsers.
The most common browser engines, and their versions, are:
| BROWSER ENGINE | EXAMPLES OF BROWSERS USING ENGINES | LATEST VERSION |
| GECKO (used by many browsers) |
| Gecko 1.0 | Mozilla 1.0.x, Netscape 7.0 | Mozilla 1.0.2 |
| Gecko 1.4.x | Mozilla 1.4.x, Netscape 7.1 | Mozilla 1.4.1 |
| Gecko 1.7.x | Mozilla 1.7.x, Firefox 1.0.x, Netscape 7.2, Netscape 8.0–8.13 | Mozilla 1.7.13 |
| Gecko 1.8.0.x | Firefox 1.5.x.x, Camino 1.0.x, SeaMonkey 1.0.x | Firefox 1.5.0.12 |
| Gecko 1.8.1.x | Firefox 2.0.x.x, Netscape 9.x, and SeaMonkey 1.1.x | Firefox 2.0.0.20 |
| Gecko 1.9.0.x | Firefox 3.0.x.x | Firefox 3.0.19 |
| Gecko 1.9.1.x | Firefox 3.5.x.x, SeaMonkey 2.x | Firefox 3.5.17 |
| Gecko 1.9.2.x | Firefox 3.6.x.x | Firefox 3.6.28 |
| Gecko 2.0 | Firefox 4.0.x | Firefox 4.0.1 |
| Gecko 5.0 | Firefox 5.0.x | Firefox 5.0.1 |
| Gecko 6.0 | Firefox 6.0.x | Firefox 6.0.2 |
| Gecko 7.0 | Firefox 7.0.x | Firefox 7.0.1 |
| Gecko 8.0 | Firefox 8.0.x | Firefox 8.0.1 |
| Gecko 9.0 | Firefox 9.0.x | Firefox 9.0.1 |
| Gecko 10.0 | Firefox 10.0.x | Firefox 10.0.2 |
| Gecko 11.0 | Firefox 11.0.x | Firefox 11.0 |
| Gecko 12.0 | Firefox 12.0.x | Firefox 12.0 |
| Gecko 13.0 | Firefox 13.0.x | Firefox 13.0.1 |
| Gecko 14.0 | Firefox 14.0.x | Firefox 14.0.1 |
| Gecko 15.0 | Firefox 15.0.x | Firefox 15.0.1 |
| Gecko 16.0 | Firefox 16.0.x | Firefox 16.0.2 |
| Gecko 17.0 | Firefox 17.0.x | Firefox 17.0.1 |
| Gecko 18.0 | Firefox 18.0.x | Firefox 18.0.2 |
| Gecko 19.0 | Firefox 19.0.x | Firefox 19.0.2 |
| Gecko 20.0 | Firefox 20.0.x | Firefox 20.0.1 |
| Gecko 21.0 | Firefox 21.0.x | Firefox 20.0 |
| PRESTO (used by Opera 7 and up) |
| Presto 1.0 | Opera 7.x | Opera 7.54 |
| Presto ?.? | Opera 8.x | Opera 8.54 |
| Presto 2.1.1 | Opera 9.x | Opera 9.64 |
| Presto 2.2 | Opera 10.00 - 10.10 | Opera 10.10 |
| Presto 2.5 | Opera 10.5x | Opera 10.54 |
| Presto 2.6 | Opera 10.6x | Opera 10.63 |
| Presto 2.7 | Opera 11.0x | Opera 11.01 |
| Presto 2.8 | Opera 11.1x | Opera 11.11 |
| Presto 2.9 | Opera 11.5x | Opera 11.52 |
| Presto 2.10 | Opera 11.6x | Opera 11.64 |
| Presto 2.10 | Opera 12.0x | Opera 12.15 |
| TRIDENT (Microsoft’s browser engine for Windows, used by IE4 and up, MSN Explorer, Netscape 8, most AOL browsers,
Avant, Maxthon, SlimBrowser, and many more) |
| Trident I | IE 4.0x | IE 4.01 |
| Trident II | IE 5.0x | IE 5.01 |
| Trident III | IE 5.5x | IE 5.5000 |
| Trident IV | IE 6.x | IE 6.0 |
| Trident V | IE 7.x | IE 7.0 |
| Trident 4 | IE 8.x | IE 8.0 |
| Trident 5 | IE 9.x | IE 9.0 |
| Trident 6 | IE 10.x | IE 10.0 |
| WebKit (Apple Safari’s browser engine, based on Konqueror’s KHTML engine, used by Safari, Chrome, Rockmelt, and OmniWeb) |
| WebKit 85.x | Safari 1.0 | 1.0.3 |
| WebKit 100.x | Safari 1.1 | 1.1 |
| WebKit 125.x | Safari 1.2 | 1.2 |
| WebKit 312.x | Safari 1.3 | 1.3.2 |
| WebKit 412.x–419.x | Safari 2.0 | 2.0.5 |
| WebKit 522.x–523.x | Safari 3.0 | 3.0.4 |
| WebKit 525.x | Safari 3.1, Safari 3.2 | Safari 3.2.x |
| WebKit 526.x–530.x | Safari 4.0 β, Safari 4.0 | Safari 4.0 |
| WebKit 533.x | Safari 5.0 | Safari 5.0.x |
Note : the numbering of Internet Explorer’s browser engine became really strange after
IE7: IE8 uses Trident 4, but IE6 uses Trident IV; and IE9 uses Trident 5, but IE7 uses Trident V. Presumably no one at Microsoft knows that
IV is 4, or V is 5: the engine
for IE8 should have been called Trident VI or Trident 6; and the engine for IE9 should have been called Trident VII or Trident 7.
Identifying Browser Engines
There are a few principles a designer should consider when trying to identify browser engines:
Identifying the engine should rarely be necessary: if you design to the standards, pages should work well
without browser-specific code. Exception : old versions of IE often require some IE-specific
code.
Identifying the version of the engine should even more rarely be necessary: if you design pages to gracefully degrade with older
browsers — i.e. to work with older browsers, though perhaps less lovely — pages should
work well without version-specific code. Exception : old versions of IE often require
some version-specific code.
It is better to identify the browser engine than it is to identify the browser: it is the browser engine that
does the rendering, and several browsers may use the same browser engine.
It is better to use Internet
Explorer Conditional Comments to reveal IE-specific code, because conditional comments are absolutely
reliable: they work even if JavaScript is disabled, and they can’t be tricked by browser spoofing.
It is better, when a JavaScript-based browser sniffer must be used, to use a proven, standard module
to identify the engine. The module should use Internet
Explorer Conditional Comments to identify IE, and should analyze the lowercase equivalent of navigator.userAgent to identify other browsers.
It is critical to examine the userAgent string carefully to minimize the risk of being fooled by browser spoofing.
For example, since “gecko” appears in the Safari userAgent string, but Safari is not a Gecko browser,
it is wrong to assume that “gecko” indicates a Gecko browser.
This author has observed the following aspects of the lowercase equivalent of the userAgent string; this information is useful in creating
an effective browser sniffer:
- KHTML-based browsers — e.g. Chrome, Konqueror, Safari — have “khtml”.
- WebKit-based browsers — e.g. Chrome and Safari — have “gecko”, “khtml”, and “safari”.
- Chrome has “chrome/” (note the slash), “gecko”, “khtml”, and “safari”.
- Opera has “opera” and may contain “gecko” or “msie”.
- Gecko-based browsers have “gecko/” (note the slash).
- MSN-TV has “msie” and “web-tv”.
- IE has “msie”.
- IE 8 usually has “trident/4”.
- IE 9 has “trident/5”.
A sample browser sniffer exists which applies the above principles.