The following tables compare ECMAScript (particularly JavaScript ) support for several popular layout engines . Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.
Explanation of the tables
Engine nomenclature
Rather than the names of web browsers and HTML to PDF converters, the names of the underlying engines are used. Some of the software and online converters that use the various engines are listed below.
Layout engine
Release version
Preview version
Used by
Amaya
11.4.7[1]
N/A
No longer developed; Amaya
Blink
537.36
source code[note 1]
Chromium /Chrome (28+), Opera (15+), Yandex , Liebao and Samsung Browser[citation needed ] .
EdgeHTML
13.10586 [2]
N/A
Microsoft Edge , Universal Windows Platform (UWP) JavaScript apps
Gecko
45.0.1 (March 16, 2016; 8 days ago (2016-03-16 ) [3] )
ESR
45.0.1 (March 16, 2016; 8 days ago (2016-03-16 ) [3] )
38.7.1 (March 16, 2016; 8 days ago (2016-03-16 ) [4] )
Beta
46.0 Beta 4 (March 23, 2016; 1 day ago (2016-03-23 ) [5] [6] )
Developer Edition
47.0a2 (March 8, 2016; 16 days ago (2016-03-08 ) [7] ) daily release
Nightly
48.0a1 (March 8, 2016; 16 days ago (2016-03-08 ) [8] ) daily release
All Mozilla software, including Firefox ; SeaMonkey and Galeon ; Camino ; K-Meleon ; Flock (up to 2.x); Debian IceWeasel ; GNU IceCat (formerly GNU IceWeasel); Cyberfox ; Icedove , Iceape and Iceowl ; Firefox for mobile ("Fennec"). Also used by the Maple platform in 2010 and 2011 Samsung "SmartTV" devices which are based on the build used in Firefox 2.5. Nokia Asha platform is also using Gecko for web apps rendering.
KHTML
4.12.3[9]
N/A
Konqueror [note 2]
Presto
2.12.388
N/A
No longer developed; Opera and Opera Mobile use Blink now; Nintendo DS & DSi Browser ; Internet Channel
Prince
10
20160109
HTML to PDF converters: Prince (previously called PrinceXML) , DocRaptor . The information in the Prince columns is also true of Prince for Books, a related layout engine.
Tasman
(IE 5.2.3 for Mac)
N/A
No longer developed (aborted in 2003); Internet Explorer 5+ for Mac OS X
Trident
7.0 (IE 11)
N/A
Internet Explorer and other Internet Explorer shells like Maxthon (Microsoft Windows operating systems only), Windows Phone 8
WebKit
534.20
nightly build [note 3]
Tizen (both OS and browser), Safari (both desktop and mobile), Google Chrome (before 28), Maxthon 3 , Shiira , iCab 4 , OmniWeb 5.5 +, Web , Adobe AIR , Midori , Adobe Dreamweaver CS4 and CS5 , Android browser, Palm webOS browser, Symbian S60 browser, OWB , Steam , Rekonq , Arora , Flock (version 3+), RockMelt , Dolphin Browser , Sleipnir , Konqueror [note 2] . Used by the LG Smart TV platform to enable web content on TVs. HTML to PDF converters: wkhtmltopdf , PhantomJS , Pdfcrowd [10] , http://www.online-convert.com/ [11] .
Values
Values indicate the level of support in the most recent version of the layout engine, or (if a version number is given) in the specified version. Version numbers without any other value indicate the version at which the layout engine first fully supported the feature.
Value
Meaning
Yes
Indicates that the layout engine fully supports this property/element when valid values are used.
No
Indicates that the property/element is completely ignored.
Partial
Indicates that the property/element is understood, but that not all values are supported. Supported values are implemented correctly.
Incorrect
Indicates that the property/element is understood, but that it is not implemented correctly in all cases.
Experimental
Indicates that the property/element is understood, but supported under an alternate name. May be incomplete or buggy.
Dropped
Indicates that the property/element is no longer supported.
Nightly build
Indicates that the property/element is supported to some extent in an experimental/nightly build. Future support is expected.
Depends
Indicates that the property/element is supported only on certain platforms, or if certain settings are configured.
ECMAScript version support
Standard Library
Global object
Trident
Gecko
WebKit
Presto
Blink
Value properties
NaN
4.0
0.6
Yes
Yes
Yes
Infinity
4.0
0.6
Yes
Yes
Yes
undefined
5.5
0.6
Yes
Yes
Yes
Function properties
eval(x)
3.0
0.6
Yes
Yes
Yes
parseInt(string [, radix])
3.0
0.6
Yes
Yes
Yes
parseFloat(string)
3.0
0.6
Yes
Yes
Yes
isNaN(number)
4.0
0.6
Yes
Yes
Yes
isFinite(number)
4.0
0.6
Yes
Yes
Yes
URI handling functions
decodeURI(encodedURI)
5.5
0.6
Yes
Yes
Yes
decodeURIComponent(encodedURIComponent)
5.5
0.6
Yes
Yes
Yes
encodeURI(uri)
5.5
0.6
Yes
Yes
Yes
encodeURIComponent(uriComponent)
5.5
0.6
Yes
Yes
Yes
Constructor properties
Object
4.0
Yes
Yes
Yes
Yes
Function
4.0
Yes
Yes
Yes
Yes
Array
4.0
Yes
Yes
Yes
Yes
String
3.0
Yes
Yes
Yes
Yes
Boolean
3.0
Yes
Yes
Yes
Yes
Number
3.0
Yes
Yes
Yes
Yes
Date
3.0
Yes
Yes
Yes
Yes
RegExp
4.0
Yes
Yes
Yes
Yes
Error
5.0
Yes
Yes
Yes
Yes
EvalError
5.0
Yes
Yes
Yes
Yes
RangeError
5.0
Yes
Yes
Yes
Yes
ReferenceError
5.0
Yes
Yes
Yes
Yes
SyntaxError
5.0
Yes
Yes
Yes
Yes
TypeError
5.0
Yes
Yes
Yes
Yes
URIError
5.0
Yes
Yes
Yes
Yes
Other properties
Math
3.0
Yes
Yes
Yes
Yes
Additional properties
escape(string)
3.0
Yes
Yes
Yes
Yes
unescape(string)
3.0
Yes
Yes
Yes
Yes
Object object
Trident
Gecko
WebKit
Presto
Blink
Called as function
Object([value])
Yes
Yes
Yes
Yes
Yes
Called as constructor
new Object([value])
4.0
Yes
Yes
Yes
Yes
Properties
prototype
4.0
Yes
Yes
Yes
Yes
Properties of prototype
constructor
4.0
Yes
Yes
Yes
Yes
toString()
4.0
Yes
Yes
Yes
Yes
toLocaleString()
4.0
Yes
Yes
Yes
Yes
valueOf()
4.0
Yes
Yes
Yes
Yes
hasOwnProperty(V)
5.5
Yes
3
Yes
Yes
isPrototypeOf(V)
5.5
Yes
3
Yes
Yes
propertyIsEnumerable(V)
5.5
Yes
3
Yes
Yes
Function object
Trident
Gecko
WebKit
Presto
Blink
Called as function
Function([[p1 [, p2 [, ...]],] body])
?
Yes
Yes
?
Yes
Called as constructor
new Function([[p1 [, p2 [, ...]],] body])
4.0
1.0
Yes
1.0
Yes
Properties
length
?
1.0
Yes
Yes
Yes
prototype
4.0
1.0
Yes
1.0
Yes
Properties of prototype
length
?
1.0
Yes
?
Yes
constructor
4.0
1.0
Yes
1.0
Yes
toString()
4.0
1.0
Yes
1.0
Yes
apply(thisArg, argArray)
4.0
1.0
Yes
1.0
Yes
call(thisArg [, arg1 [, arg2 [, ...]]])
4.0
1.0
Yes
1.0
Yes
Properties of instances
length
4.0
1.0
Yes
1.0
Yes
prototype
4.0
1.0
Yes
1.0
Yes
Array object
Trident
Gecko
WebKit
Presto
Blink
Called as function
Array([item1 [, item2 [, ...]]])
Yes
Yes
Yes
Yes
Yes
Called as constructor
new Array([item1, item2 [, ...]])
4.0
1.0
Yes
1.0
Yes
new Array(len)
4.0
1.0
Yes
1.0
Yes
Properties
prototype
4.0
1.0
Yes
1.0
Yes
Properties of prototype
constructor
4.0
1.0
Yes
1.0
Yes
toString()
4.0
1.0
Yes
1.0
Yes
toLocaleString()
5.5
1.0
Yes
1.0
Yes
concat([item1 [, item2 [,...]]])
4.0
1.0
Yes
1.0
Yes
join(separator)
4.0
1.0
Yes
1.0
Yes
pop()
5.5
1.0
Yes
1.0
Yes
push([item1 [, item2 [,...]]])
5.5
1.0
Yes
1.0
Yes
reverse()
4.0
1.0
Yes
1.0
Yes
shift()
5.5
1.0
Yes
1.0
Yes
slice(start, end)
4.0
1.0
Yes
1.0
Yes
sort(comparefn)
4.0
1.0
Yes
1.0
Yes
splice(start, deleteCount [, item1 [, item2 [, ...]]])
5.5
1.0
Yes
1.0
Yes
unshift([item1 [, item2 [, ...]]])
5.5
1.0
Yes
1.0
Yes
indexOf(searchElement[, fromIndex])
9.0[13]
1.8
522
2.1
Yes
lastIndexOf(searchElement[, fromIndex])
1.8
522
2.1
Yes
filter(callback[, thisObject])
1.8
522
2.1
Yes
forEach(callback[, thisObject])
1.8
522
2.1
Yes
every(callback[, thisObject])
1.8
522
2.1
Yes
map(callback[, thisObject])
1.8
522
2.1
Yes
some(callback[, thisObject])
1.8
522
2.1
Yes
reduce(callback[, initialValue])
1.9
528
2.5.22
Yes
reduceRight(callback[, initialValue])
1.9
528
2.5.22
Yes
Properties of instances
length
4.0
1.0
Yes
1.0
Yes
String object
Trident
Gecko
WebKit
Presto
Blink
Called as function
String([value])
Yes
Yes
Yes
Yes
Yes
Called as constructor
new String([value])
3.0
1.0
Yes
1.0
Yes
Properties
prototype
4.0
1.0
Yes
1.0
Yes
fromCharCode([char0 [, char1 [, ...]]])
4.0
1.0
Yes
1.0
Yes
Properties of prototype
constructor
4.0
1.0
Yes
1.0
Yes
toString()
3.0
1.0
Yes
1.0
Yes
valueOf()
3.0
1.0
Yes
1.0
Yes
charAt(pos)
3.0
1.0
Yes
1.0
Yes
charCodeAt(pos)
5.5
1.0
Yes
1.0
Yes
concat([string1 [, string2 [, ...]]])
4.0
1.0
Yes
1.0
Yes
indexOf(searchString, position)
3.0
1.0
Yes
1.0
Yes
lastIndexOf(searchString, position)
3.0
1.0
Yes
1.0
Yes
localeCompare(that)
5.5
1.0
Yes
1.0
Yes
match(regexp)
4.0
1.0
Yes
1.0
Yes
replace(searchValue, replaceValue)
3.0
1.0
Yes
1.0
Yes
search(regexp)
4.0
1.0
Yes
1.0
Yes
slice(start, end)
4.0
1.0
Yes
1.0
Yes
split(separator, limit)
4.0
1.0
Yes
1.0
Yes
substring(start, end)
3.0
1.0
Yes
1.0
Yes
toLowerCase()
3.0
1.0
Yes
1.0
Yes
toLocaleLowerCase(comparefn)
3.0
1.0
Yes
1.0
Yes
toUpperCase()
3.0
1.0
Yes
1.0
Yes
toLocaleUpperCase()
3.0
1.0
Yes
1.0
Yes
Additional properties of prototype
substr(start, length)
4.0
1.0
Yes
1.0
Yes
Properties of instances
length
3.0
1.0
Yes
1.0
Yes
Boolean object
Trident
Gecko
WebKit
Presto
Blink
Called as function
Boolean([value])
Yes
Yes
Yes
Yes
Yes
Called as constructor
new Boolean([value])
3.0
Yes
Yes
Yes
Yes
Properties
prototype
4.0
Yes
Yes
Yes
Yes
Properties of prototype
constructor
4.0
Yes
Yes
Yes
Yes
toString()
4.0
Yes
Yes
Yes
Yes
valueOf()
4.0
Yes
Yes
Yes
Yes
Number object
Trident
Gecko
WebKit
Presto
Called as function
Number([value])
?
Yes
Yes
?
Called as constructor
new Number([value])
3.0
1.0
Yes
1.0
Properties
prototype
4.0
1.0
Yes
1.0
MAX_VALUE
4.0
1.0
Yes
1.0
MIN_VALUE
4.0
1.0
Yes
1.0
NaN
4.0
1.0
Yes
1.0
NEGATIVE_INFINITY
4.0
1.0
Yes
1.0
POSITIVE_INFINITY
4.0
1.0
Yes
1.0
Properties of prototype
constructor
4.0
1.0
Yes
1.0
toString([radix])
4.0
1.0
Yes
1.0
toLocaleString()
5.5
1.0
Yes
1.0
valueOf()
4.0
1.0
Yes
1.0
toFixed(fractionDigits)
5.5
1.0
Yes
1.0
toExponential(fractionDigits)
5.5
1.0
Yes
1.0
toPrecision(precision)
5.5
1.0
Yes
1.0
Math object
Trident
Gecko
WebKit
Presto
Value properties
E
3.0
1.0
Yes
1.0
LN10
3.0
1.0
Yes
1.0
LN2
3.0
1.0
Yes
1.0
LOG2E
3.0
1.0
Yes
1.0
LOG10E
3.0
1.0
Yes
1.0
PI
Yes
Yes
Yes
Yes
SQRT1_2
3.0
1.0
Yes
1.0
SQRT2
Yes
Yes
Yes
Yes
Function properties
abs(x)
3.0
1.0
Yes
1.0
acos(x)
3.0
1.0
Yes
1.0
asin(x)
3.0
1.0
Yes
1.0
atan(x)
3.0
1.0
Yes
1.0
atan2(y, x)
3.0
1.0
Yes
1.0
ceil(x)
3.0
1.0
Yes
1.0
cos(x)
3.0
1.0
Yes
1.0
exp(x)
3.0
1.0
Yes
1.0
floor(x)
3.0
1.0
Yes
1.0
log(x)
3.0
1.0
Yes
1.0
max([value1 [, value2 [, ...]]])
3.0
1.0
Yes
1.0
min([value1 [, value2 [, ...]]])
3.0
1.0
Yes
1.0
pow(x, y)
3.0
1.0
Yes
1.0
random()
3.0
1.0
Yes
1.0
round(x)
3.0
1.0
Yes
1.0
sin(x)
3.0
1.0
Yes
1.0
sqrt(x)
3.0
1.0
Yes
1.0
tan(x)
3.0
1.0
Yes
1.0
Date object
Trident
Gecko
WebKit
Presto
Called as function
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]])
?
?
?
?
Called as constructor
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]])
4.0
1.0
Yes
1.0
new Date (value)
4.0
1.0
Yes
1.0
new Date ()
4.0
1.0
Yes
1.0
Properties
prototype
4.0
1.0
Yes
1.0
parse(string)
3.0
1.0
Yes
1.0
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]])
3.0
1.0
Yes
1.0
Properties of prototype
constructor
4.0
1.0
Yes
1.0
toString()
4.0
1.0
Yes
1.0
toDateString()
4.0
1.0
Yes
1.0
toTimeString()
4.0
1.0
Yes
1.0
toLocaleString()
4.0
1.0
Yes
1.0
toLocaleDateString()
4.0
1.0
Yes
1.0
toLocaleTimeString()
4.0
1.0
Yes
1.0
valueOf()
4.0
1.0
Yes
1.0
getTime()
3.0
1.0
Yes
1.0
getFullYear()
4.0
1.0
Yes
1.0
getMonth()
3.0
1.0
Yes
1.0
getUTCMonth()
4.0
1.0
Yes
1.0
getDate()
3.0
1.0
Yes
1.0
getUTCDate()
4.0
1.0
Yes
1.0
getDay()
3.0
1.0
Yes
1.0
getUTCDay()
4.0
1.0
Yes
1.0
getHours()
3.0
1.0
Yes
1.0
getUTCHours()
4.0
1.0
Yes
1.0
getMinutes()
3.0
1.0
Yes
1.0
getUTCMinutes()
4.0
1.0
Yes
1.0
getSeconds()
3.0
1.0
Yes
1.0
getUTCSeconds()
4.0
1.0
Yes
1.0
getMilliseconds()
4.0
1.0
Yes
1.0
getUTCMilliseconds()
4.0
1.0
Yes
1.0
getTimezoneOffset()
4.0
1.0
Yes
1.0
setTime(time)
3.0
1.0
Yes
1.0
setMilliseconds(ms)
4.0
1.0
Yes
1.0
setUTCMilliseconds(ms)
4.0
1.0
Yes
1.0
setSeconds(sec [, ms])
3.0
1.0
Yes
1.0
setUTCSeconds(sec [, ms])
4.0
1.0
Yes
1.0
setMinutes(min [, sec [, ms]])
3.0
1.0
Yes
1.0
setUTCMinutes(min [, sec [, ms]])
4.0
1.0
Yes
1.0
setHours(hour [, min [, sec [, ms]]])
4.0
1.0
Yes
1.0
setUTCHours(hour [, min [, sec [, ms]]])
4.0
1.0
Yes
1.0
setDate(date)
4.0
1.0
Yes
1.0
setUTCDate(date)
4.0
1.0
Yes
1.0
setMonth(month [, date])
3.0
1.0
Yes
1.0
setUTCMonth(month [, date])
4.0
1.0
Yes
1.0
setFullYear(year [, month [, date]])
4.0
1.0
Yes
1.0
setUTCFullYear(year [, month [, date]])
4.0
1.0
Yes
1.0
toUTCString()
4.0
1.0
Yes
1.0
Additional properties of prototype
getYear()
3.0
1.0
Yes
1.0
setYear(year)
3.0
1.0
Yes
1.0
toGMTString()
4.0
1.0
Yes
1.0
RegExp object
Trident
Gecko
WebKit
Presto
Called as function
RegExp (pattern, flags)
?
?
?
?
Called as constructor
new RegExp (pattern, flags)
4.0
1.0
Yes
1.0
Properties
prototype
4.0
1.0
Yes
1.0
Properties of prototype
constructor
4.0
1.0
Yes
1.0
exec(string)
4.0
1.0
Yes
1.0
test(string)
4.0
1.0
Yes
1.0
toString()
4.0
1.0
Yes
1.0
Properties of instances
source
4.0
1.0
Yes
1.0
global
4.0
1.0
Yes
1.0
ignoreCase
5.5
1.0
Yes
1.0
multiline
5.5
1.0
Yes
1.0
lastIndex
4.0
1.0
Yes
1.0
Error object
Trident
Gecko
WebKit
Presto
Called as function
Error (message)
?
?
?
?
Called as constructor
new Error (message)
5.0
1.0
Yes
1.0
Properties
prototype
5.0
1.0
Yes
1.0
Properties of prototype
constructor
5.0
1.0
Yes
1.0
name
5.5
1.0
Yes
1.0
message
5.5
1.0
Yes
1.0
toString()
5.0
1.0
Yes
1.0
NativeError objects
Trident
Gecko
WebKit
Presto
Called as function
EvalError (message)
?
1.0
Yes
?
RangeError (message)
?
1.0
Yes
?
ReferenceError (message)
?
1.0
Yes
?
SyntaxError (message)
?
1.0
Yes
?
TypeError (message)
?
1.0
Yes
?
URIError (message)
?
1.0
Yes
?
Called as constructor
new EvalError (message)
?
1.0
Yes
?
new RangeError (message)
?
1.0
Yes
?
new ReferenceError (message)
?
1.0
Yes
?
new SyntaxError (message)
?
1.0
Yes
?
new TypeError (message)
?
1.0
Yes
?
new URIError (message)
?
1.0
Yes
?
Properties
prototype
?
1.0
?
?
Properties of prototype
constructor
?
1.0
?
?
name
?
1.0
Yes
?
message
?
1.0
Yes
?
References
Notes
External links
Webdevout — mostly covers Windows browsers. Extensive bug testing.