JavaScript, a.k.a. Web ECMAScript

Living Standard — 22 July 2016

This Version:
File a bug (but check the list of open bugs first)
IRC: #whatwg on Freenode
Version History:
Mathias Bynens
Translation (non-normative)

Table of Contents

  1. 1 Goals
  2. 2 Conformance
  3. 3 Terminology
  4. References
  5. Acknowledgments

1 Goals

This specification aims to document the differences between the ECMAScript specification and the compatibility and interoperability requirements for ECMAScript implementations in web browsers. The ultimate goal of this document is to upstream its contents to the ECMAScript standard. [ECMASCRIPT]

2 Conformance

Everything in this specification is normative except for examples, notes, and sections marked as non-normative.

A JavaScript implementation must be a conforming implementation of ECMAScript with the extensions described in this document. [ECMASCRIPT]

A user agent must also be a conforming implementation of HTML, if applicable. [HTML]

Script authors must not depend on the extensions defined in this specification.

3 Terminology

The key words “must” and “should” in this document are to be interpreted as described in RFC 2119. [RFC2119]

Special symbols in this document are identified using their Unicode code points and names. [UNICODE]

When this specification uses the term ECMAScript character, it means a 16-bit unsigned value used to represent a single 16-bit unit of text. [ECMASCRIPT]


ECMAScript Language Specification. ECMA.
HTML, Ian Hickson. WHATWG.
Key words for use in RFCs to Indicate Requirement Levels, Scott Bradner. IETF.
Unicode Standard. Unicode Consortium.


Thanks to Anne van Kesteren, Aryeh Gregor, Claude Pache, Daniel Ehrenberg, David Håsäther, Domenic Denicola, James Graham, John-David Dalton, Masatoshi Kimura, Ms2ger, Simon Pieters, Simon Sapin, Steven Levithan, Mark ‘Tarquin’ Wilton-Jones, and Tom Schuster for their useful comments.

Special thanks to James Graham for collecting and documenting most of these requirements on the WHATWG Wiki, and Juriy ‘kangax’ Zaytsev (Юрий Зайцев) for his ECMAScript Extensions Compatibility Table.