# The Complete ECMAScript Guide

> Learn what ECMAScript is, how it relates to JavaScript, how TC39 evolves the language, and how ES edition numbers map to yearly releases.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2018-02-01 | Updated: 2026-07-18 | Topics: [JavaScript](https://flaviocopes.com/tags/js/) | Canonical: https://flaviocopes.com/ecmascript/

<!-- TOC -->

- [What is ECMAScript?](#what-is-ecmascript)
- [What is TC39?](#what-is-tc39)
- [ECMAScript versions](#ecmascript-versions)
- [Recent ECMAScript releases](#recent-ecmascript-releases)
- [What does ES.Next mean?](#what-does-esnext-mean)

<!-- /TOC -->

ECMAScript is the language standard that defines JavaScript syntax, types, objects, and behavior.

The standard is published as **ECMA-262**. The current yearly snapshot is [ECMAScript 2026, the 17th edition](https://262.ecma-international.org/).

## What is ECMAScript?

ECMAScript describes the core language. It defines features such as functions, classes, promises, arrays, modules, and regular expressions.

JavaScript is the name developers normally use for implementations of that standard.

Browser APIs such as the DOM, `fetch()`, and Web Storage are not part of ECMAScript. Browsers provide those APIs around the JavaScript language.

## What is TC39?

[TC39](https://tc39.es/) is the Ecma committee responsible for evolving ECMAScript and maintaining its specification.

New features move through six proposal stages: Stage 0, 1, 2, 2.7, 3, and 4. A Stage 4 proposal is complete and ready to be included in the standard.

The official [TC39 process document](https://tc39.es/process-document/) explains the requirements for every stage.

## ECMAScript versions

Older releases were usually identified by edition number. Since ES2015, releases use their publication year.

ES6 and ES2015 are two names for the same sixth edition.

| Edition | Year-based name | Published |
| --- | --- | --- |
| 17 | ES2026 | 2026 |
| 16 | ES2025 | 2025 |
| 15 | ES2024 | 2024 |
| 14 | ES2023 | 2023 |
| 13 | ES2022 | 2022 |
| 12 | ES2021 | 2021 |
| 11 | ES2020 | 2020 |
| 10 | [ES2019](https://flaviocopes.com/es2019/) | 2019 |
| 9 | [ES2018](https://flaviocopes.com/es2018/) | 2018 |
| 8 | [ES2017](https://flaviocopes.com/es2017/) | 2017 |
| 7 | [ES2016](https://flaviocopes.com/es2016/) | 2016 |
| 6 | [ES2015, or ES6](https://flaviocopes.com/es6/) | 2015 |
| 5.1 | ES5.1 | 2011 |
| 5 | ES5 | 2009 |
| 4 | Not published | — |
| 3 | ES3 | 1999 |
| 2 | ES2 | 1998 |
| 1 | ES1 | 1997 |

The [Ecma ECMA-262 archive](https://ecma-international.org/publications-and-standards/standards/ecma-262/) contains the published editions.

## Recent ECMAScript releases

The yearly releases are incremental. They no longer resemble the huge jump from ES5 to ES2015.

- ES2024 added resizable and transferable ArrayBuffers, `Promise.withResolvers()`, grouping methods, and the regular expression `v` flag
- ES2025 added iterator helpers, Set methods, JSON modules, `RegExp.escape()`, and `Promise.try()`
- ES2026 added `Array.fromAsync()`, `Error.isError()`, `Iterator.concat()`, `Math.sumPrecise()`, base64 and hex methods for `Uint8Array`, and new JSON capabilities

The introduction to the [ECMAScript 2026 specification](https://262.ecma-international.org/) lists the additions in each edition.

## What does ES.Next mean?

**ES.Next** is an informal name for the evolving version of ECMAScript that comes after the latest published snapshot.

It does not permanently mean one specific year. Its contents change as Stage 4 proposals enter the [living ECMAScript specification](https://tc39.es/ecma262/).
