Node.js Release and EOL Timeline - LTS Schedule, Active LTS and Maintenance, and End-of-Life Dates

First Published:
Last Updated:

This is a language-runtime installment in my history-and-timeline series. Rather than tracking a single AWS service or a foundation model family, this article builds one chronological reference for a question that developers, SREs, and platform teams ask over and over: which Node.js versions are supported, when does each one reach end of life, and how does the Node.js release model actually work?

The answer is unusually easy to get wrong, because Node.js has a release model that is different from most other runtimes. Even-numbered majors become Long Term Support (LTS) releases; odd-numbered majors are short-lived and never do. Each LTS line moves through a Current phase, an Active LTS phase, and a Maintenance phase before it reaches End-of-Life. On top of that, the project has just announced that this odd/even model is being retired starting with Node.js 27. This article organizes all of that into a single page, with every date linked to a primary source.

Facts in this article were verified against nodejs.org and the nodejs/Release schedule as of 2026-07-24. Release dates, LTS transition dates, and end-of-life dates are taken from the official Node.js Releases page and the machine-readable schedule published by the Node.js Release Working Group; dates that are still in the future are labelled as scheduled and are subject to change.

This article focuses on releases, LTS transitions, and end-of-life dates. It is not a migration guide, a performance comparison, or a survey of the npm ecosystem or of alternative runtimes; those are out of scope so that the timeline stays a clean chronology of support facts. Node.js is frequently run on serverless platforms, so for how these versions map onto a managed runtime, see the companion articles below.

Companion articles on hidekazu-konishi.com:

Background and Method of Creating the Node.js Release and EOL Timeline

The reason for creating this timeline is that Node.js support facts are both high-stakes and easy to confuse. Running an end-of-life version means running a runtime that will never receive another security patch, yet the exact date a given major "goes dark" is spread across release blog posts, a schedule table, and a machine-readable file. I wanted one page that puts every release, LTS transition, and end-of-life date in order, with a primary source attached to each.

Before the timeline, it is worth defining the vocabulary precisely, because the Node.js project uses these terms with specific meanings.
  • Current is the phase a new major enters at release. It receives the newest features and non-breaking changes that land on the main branch. A major stays Current for roughly six months. Current releases are where new functionality first appears, and are generally not recommended for conservative production use.
  • Active LTS (Long Term Support) is the phase an even-numbered major enters after its Current phase. During Active LTS the focus shifts to stability: the release receives bug fixes, security patches, and carefully selected non-breaking improvements that have been audited by the Release team. This is the phase most production workloads should target.
  • Maintenance (also called Maintenance LTS) is the final supported phase. The release receives only critical bug fixes and security updates - no new features. It is a wind-down window that gives teams time to move to a newer line before support ends.
  • End-of-Life (EOL) means the release line receives no further updates of any kind, including security fixes. When a new security release fixes a vulnerability in supported lines, an EOL line that shares the same flaw simply does not get a patch. This is why staying on a supported line matters.
The single most important structural fact about Node.js releases is the odd/even model. A new major is cut from the main branch every six months: even-numbered majors are released in April and odd-numbered majors in October. Only even-numbered majors are promoted to LTS. When an even major transitions to Active LTS (in October, alongside the next odd release), it begins its long support window. Odd-numbered majors (for example 19, 21, 23, and 25) never enter Active LTS or Maintenance; they stay Current for about six months and then go straight to End-of-Life. Odd releases exist to stage new features for the next LTS line, and are not intended for long-lived production deployments.

The support windows themselves have a defined length. Since Node.js 12, each even (LTS) major is in Active LTS for 12 months, then in Maintenance for 18 months, for a total of 30 months of LTS coverage - and, counting the initial Current phase, roughly three years from first release to End-of-Life (the EOL date typically falls on April 30 of the third year after release). Prior to Node.js 12, the split was the other way around: 18 months Active and 12 months Maintenance. Each LTS line is also given a chemical-element codename (Argon, Boron, Carbon, and so on) so that a support line can be referred to independently of its version number.

To organize this history, I have taken the following approaches.
  • Tracking the release, LTS transition, and end-of-life events of each major version in chronological order.
  • Summarizing the current support status of every relevant version in a single reference table.
The inclusion criteria are deliberately explicit. Initial releases, Active LTS transitions, and end-of-life dates are recorded as timeline events, together with the governance and policy milestones that shaped the model (the Node.js Foundation, the OpenJS Foundation, the standardization of LTS windows, and the upcoming schedule change). The current-status table then consolidates the per-version dates. This is a chronology of support facts, not a recommendation engine: I do not rank versions or advise which one to run beyond stating what is and is not supported.

The source policy is primary-only. Every date is taken from nodejs.org (the Releases page and official blog), the nodejs/Release repository maintained by the Release Working Group (including its machine-readable schedule), or official OpenJS Foundation and Linux Foundation announcements. Dates from endoflife.date, Wikipedia, or secondary technical media are not used as the source of record. Where the project states only a scheduled future date, the timeline marks it as scheduled rather than presenting it as settled fact.

This timeline primarily references the following sources.
There may be slight differences between an initial release date, the date a line transitions into LTS, and the date a blog post announcing it was published. The dates below prioritize the schedule maintained by the Release Working Group.
The content posted here is limited to the milestones considered essential for understanding the history of Node.js releases and support.
In other words, please note that the items on this timeline are representative milestones I have selected, not an exhaustive list of every point release.

Node.js Release and End-of-Life Historical Timeline (Updates from September 8, 2015)

Here is the chronological timeline of Node.js releases, LTS transitions, and end-of-life events, from the formation of the Node.js Foundation and the io.js merge through the current lines and the scheduled change to the release model. Node.js itself was created by Ryan Dahl in 2009, and npm followed in 2010; in late 2014 a group of contributors forked the project as io.js to obtain faster releases and open governance. The timeline below begins where that story converges - the point at which the modern LTS model was born.

* You can sort the table by clicking on the column name.
DateEvent
2015-06-16The Node.js Foundation is established, uniting Node.js and io.js under neutral governance. After the io.js fork of late 2014, the two communities agreed to converge under the Node.js Foundation, hosted by the Linux Foundation, providing the open governance model that made a predictable release and LTS process possible. Source: Node.js Foundation ratified technical governance (Linux Foundation).
2015-09-08Node.js 4.0.0 is released, combining Node.js and io.js into a single codebase. The release merged the Node.js and io.js projects; it was numbered 4.0.0 because it incorporated major updates from io.js 3.x, and it shipped with V8 4.5. It also introduced a plan for long-term support and a regular release cycle following Semantic Versioning. Source: Node.js Foundation Combines Node.js and io.js Into a Single Codebase.
2015-10-12Node.js 4 "Argon" enters Active LTS - the LTS model begins. Node.js 4 became the first Long Term Support line, establishing the convention that even-numbered majors are promoted to LTS and receive an extended support window. Source: Node.js Releases (nodejs.org).
2016-04-26Node.js 6 "Boron" is released (entering Active LTS on 2016-10-18). Node.js 6 became a widely adopted LTS line during 2016-2018. Source: Node.js v6.0.0 released.
2017-05-30Node.js 8 "Carbon" is released (entering Active LTS on 2017-10-31). Node.js 8 introduced broad async/await support in production and became the LTS line of 2017-2018. Source: Node.js v8.0.0 released.
2018-04-24Node.js 10 "Dubnium" is released (entering Active LTS on 2018-10-30). Source: Node.js v10.0.0 released.
2018-04-30Node.js 4 "Argon" reaches End-of-Life - the first LTS line to do so, closing the support window for the release that started the LTS model. Source: Node.js Releases (nodejs.org).
2019-03-12The OpenJS Foundation is formed by merging the Node.js Foundation and the JS Foundation. Announced at the Open Source Leadership Summit, the OpenJS Foundation became the neutral home for Node.js and dozens of other JavaScript projects, and remains the steward under which the Release Working Group operates. Source: Node.js Foundation and JS Foundation merge to form OpenJS Foundation.
2019-04-23Node.js 12 "Erbium" is released, and the LTS support windows are standardized. From Node.js 12 onward, each LTS major is in Active LTS for 12 months and then in Maintenance for 18 months (before Node.js 12 the split had been 18 months Active and 12 months Maintenance). Source: Node.js v12.0.0 released (release policy: nodejs/Release).
2019-12-31Node.js 8 "Carbon" reaches End-of-Life. Source: Node.js Releases (nodejs.org).
2020-04-21Node.js 14 "Fermium" is released (entering Active LTS on 2020-10-27). Source: Node.js v14.0.0 released.
2021-04-20Node.js 16 "Gallium" is released (entering Active LTS on 2021-10-26). Node.js 16 shipped with OpenSSL 1.1.1, a detail that would later shorten its support window. Source: Node.js v16.0.0 released.
2021-04-30Node.js 10 "Dubnium" reaches End-of-Life. Source: Node.js Releases (nodejs.org).
2022-04-19Node.js 18 "Hydrogen" is released (entering Active LTS on 2022-10-25). Node.js 18 became the default "safe" production LTS line throughout 2023-2024. Source: Node.js v18.0.0 released.
2022-04-30Node.js 12 "Erbium" reaches End-of-Life. Source: Node.js Releases (nodejs.org).
2023-04-18Node.js 20 "Iron" is released (entering Active LTS on 2023-10-24). Node.js 20 became one of the most widely deployed LTS lines in the project's history. Source: Node.js v20.0.0 released.
2023-04-30Node.js 14 "Fermium" reaches End-of-Life. Source: Node.js Releases (nodejs.org).
2023-09-11Node.js 16 "Gallium" reaches End-of-Life about seven months early. Because Node.js 16 shipped with OpenSSL 1.1.1, its EOL was moved forward from the originally planned April 2024 to coincide with the end of support for OpenSSL 1.1.1 on 2023-09-11, so that the line would not remain in use after its bundled crypto library stopped receiving fixes. Source: Node.js 16 is reaching End-of-Life in September 2023.
2024-04-24Node.js 22 "Jod" is released (entering Active LTS on 2024-10-29). Source: Node.js v22.0.0 released.
2025-04-30Node.js 18 "Hydrogen" reaches End-of-Life. Source: Node.js Releases (nodejs.org).
2025-05-06Node.js 24 "Krypton" is released (entering Active LTS on 2025-10-28). Source: Node.js v24.0.0 released.
2026-04-30Node.js 20 "Iron" reaches End-of-Life. Because Node.js 20 was so widely deployed, its EOL left a large installed base needing to move to Node.js 22 or 24. Source: Node.js Releases (nodejs.org).
2026-05-05Node.js 26 is released as the new Current line (scheduled to enter Active LTS on 2026-10-28). Node.js 26 is the last major to follow the existing odd/even model. Source: Node.js v26.0.0 released.
2026-06-01Node.js 25 reaches End-of-Life. As an odd-numbered release, Node.js 25 was never promoted to LTS and reached EOL about six months after release - the last short-lived odd line under the current model. Source: Node.js Releases (nodejs.org).
2026-10-28 (scheduled)Node.js 27 begins its Alpha phase, marking the start of the new release model. A new Alpha channel (running October to March, with semver-major changes allowed for early ecosystem testing) precedes the Current phase. Source: Evolving the Node.js Release Schedule.
2027-04-22 (scheduled)Node.js 27 is released as the first version under the new schedule. From Node.js 27, the odd/even distinction is retired and every major becomes LTS: one major per year in April, promoted to LTS in October, with version numbers aligned to the calendar year of the Current release (27 in 2027, 28 in 2028) and a total of 36 months of support to End-of-Life. Source: Evolving the Node.js Release Schedule.

There may be slight differences between an initial release date, the date a line enters LTS, and the date a blog post was published. The dates above follow the schedule maintained by the Node.js Release Working Group, and future dates are marked as scheduled.

Current Overview of Node.js Versions and Support Status

Having followed the chronology, this section summarizes the current picture: how the release phases fit together, which versions are supported right now, and the full per-version schedule. As of 2026-07-24, the supported (non-EOL) lines are Node.js 22 (Maintenance LTS), Node.js 24 (Active LTS), and Node.js 26 (Current). Everything from Node.js 20 and earlier, along with the odd-numbered lines 21, 23, and 25, has reached End-of-Life and no longer receives security updates.

Release Phases and the Odd/Even Model

Every major starts as Current for about six months. Even-numbered majors then transition to Active LTS for 12 months, followed by Maintenance for 18 months, and finally End-of-Life. Odd-numbered majors skip LTS entirely: they stay Current for about six months and go straight to End-of-Life. The table below shows the phase sequence for each parity.
PhaseWhat it meansApplies to
CurrentNewest features and non-breaking changes; about six months. Not recommended for conservative production use.Every major (even and odd)
Active LTSBug fixes, security patches, and audited non-breaking improvements; 12 months. The recommended target for production.Even-numbered majors only
MaintenanceCritical bug fixes and security updates only; 18 months. A wind-down window before EOL.Even-numbered majors only
End-of-LifeNo further updates of any kind, including security fixes.Every major, eventually
The figure below shows each even-numbered LTS line as a horizontal band, segmented by phase, so that the overlap between supported lines - and the point at which each one ends - can be read at a glance.
Node.js Version Support Timeline - a Gantt-style band chart showing the Current, Active LTS, Maintenance, and End-of-Life phases of Node.js even-numbered LTS versions 4 through 26 from 2015 to 2029
Node.js Version Support Timeline - Current, Active LTS, Maintenance, and End-of-Life (even-numbered LTS lines)

Per-Version Support Schedule

The table below lists the even-numbered (LTS) lines together with the most recent odd-numbered lines, with each date taken from the Node.js Releases schedule. Future dates are marked (scheduled) and are subject to change.

* You can sort the table by clicking on the column name.
VersionCodenameInitial ReleaseActive LTS StartMaintenance StartEnd-of-LifeStatus
26.x-2026-05-052026-10-28 (scheduled)2027-10-20 (scheduled)2029-04-30 (scheduled)Current
25.x-2025-10-15-2026-04-012026-06-01End-of-Life
24.xKrypton2025-05-062025-10-282026-10-20 (scheduled)2028-04-30 (scheduled)Active LTS
23.x-2024-10-16-2025-04-012025-06-01End-of-Life
22.xJod2024-04-242024-10-292025-10-212027-04-30 (scheduled)Maintenance LTS
21.x-2023-10-17-2024-04-012024-06-01End-of-Life
20.xIron2023-04-182023-10-242024-10-222026-04-30End-of-Life
18.xHydrogen2022-04-192022-10-252023-10-182025-04-30End-of-Life
16.xGallium2021-04-202021-10-262022-10-182023-09-11End-of-Life
14.xFermium2020-04-212020-10-272021-10-192023-04-30End-of-Life
12.xErbium2019-04-232019-10-212020-11-302022-04-30End-of-Life
10.xDubnium2018-04-242018-10-302020-05-192021-04-30End-of-Life
8.xCarbon2017-05-302017-10-312019-01-012019-12-31End-of-Life
6.xBoron2016-04-262016-10-182018-04-302019-04-30End-of-Life
4.xArgon2015-09-082015-10-122017-04-012018-04-30End-of-Life

Odd-numbered lines (5, 7, 9, 11, 13, 15, 17, 19) are omitted from the table for readability; like 21, 23, and 25, each stayed Current for about six months and then reached End-of-Life without an LTS phase. The full machine-readable schedule for every line, including the exact point releases, is published as schedule.json in the nodejs/Release repository.

The Upcoming Release Model (from Node.js 27)

Node.js is changing its release model, and Node.js 26 is the last line to follow the odd/even convention. Starting with Node.js 27, the project moves to one major release per year and every major becomes an LTS release. The key changes, as described by the Node.js Release Working Group, are:
  • No more odd/even distinction. Every major is promoted to LTS; there are no more short-lived odd releases.
  • One major per year. A new major is released each April and is promoted to LTS the following October.
  • Calendar-aligned version numbers. The major version matches the calendar year of its initial Current release - 27 in 2027, 28 in 2028, and so on.
  • A new Alpha channel. Each line begins with a six-month Alpha phase (October to March) in which semver-major changes are allowed, so the ecosystem can test against breaking changes early.
  • About 36 months of total support. Counting the Alpha, Current, and LTS phases, each line is supported for roughly three years before End-of-Life.
The project has noted that this new schedule is not final and may be amended, so the scheduled dates for Node.js 27 and later should be treated as provisional until each transition is confirmed.

Frequently Asked Questions about Node.js Releases and End-of-Life

Which Node.js versions are LTS?

Only even-numbered major versions are promoted to Long Term Support (LTS). As of 2026-07-24 the supported LTS lines are Node.js 24 (Active LTS) and Node.js 22 (Maintenance LTS), while Node.js 26 is the current Current release and is scheduled to become Active LTS on 2026-10-28. Odd-numbered versions (such as 23 and 25) never become LTS. Note that from Node.js 27 the odd/even distinction is being retired and every major will become LTS.

How long is a Node.js LTS version supported?

Since Node.js 12, each even-numbered LTS line is in Active LTS for 12 months and then in Maintenance for 18 months, for 30 months of LTS coverage. Counting the initial six-month Current phase, that is roughly three years from first release to End-of-Life, with the EOL date typically falling on April 30 of the third year after release. Before Node.js 12, the split was 18 months Active and 12 months Maintenance.

What is the difference between Active LTS and Maintenance?

During Active LTS, a release receives bug fixes, security patches, and audited non-breaking improvements, and it is the phase most production workloads should target. During Maintenance, the release receives only critical bug fixes and security updates - no new features - as a wind-down window before End-of-Life. Both are "supported" phases, meaning the line still receives security fixes; End-of-Life is when security fixes stop.

When does Node.js 20 reach end of life?

Node.js 20 "Iron" reached End-of-Life on 2026-04-30. Node.js 18 "Hydrogen" reached End-of-Life on 2025-04-30, and Node.js 22 "Jod" is scheduled to reach End-of-Life on 2027-04-30. The exact EOL date for every major is listed in the per-version table above; the values come from the official Node.js Releases schedule.

Why are odd-numbered Node.js versions not recommended for production?

Odd-numbered majors (for example 19, 21, 23, and 25) are never promoted to LTS. They stay in the Current phase for about six months and then go straight to End-of-Life, so they receive only a short window of updates. Their purpose is to stage new features ahead of the next even-numbered LTS line, not to be run long-term. This changes from Node.js 27, after which every major becomes LTS.

What is changing in the Node.js release schedule from version 27?

Starting with Node.js 27, the release model changes in several ways: the odd/even distinction is retired and every major becomes LTS; there is one major release per year (in April) promoted to LTS in October; version numbers align with the calendar year of the initial Current release (27 in 2027, 28 in 2028); a new six-month Alpha channel is added before the Current phase; and each line is supported for about 36 months in total. Node.js 26 is the last line under the current model, and Node.js 27 is the first under the new one. The project has said this schedule may still be amended.

Summary

In this article, I built a chronological timeline of Node.js releases, LTS transitions, and end-of-life dates, and summarized the current support status of each version in a single reference.

The timeline shows three arcs: a formative phase (2015) in which the io.js fork converged under the Node.js Foundation and Node.js 4 introduced the LTS model; a maturation phase (2016-2025) in which the odd/even convention, the chemical-element codenames, and the standardized 12-month Active plus 18-month Maintenance windows made support dates predictable - with Node.js 16's early, OpenSSL-driven end-of-life as the notable exception; and a transition phase (2026 onward) in which Node.js 26 becomes the last line under the old model and Node.js 27 begins a new schedule where every major is LTS on an annual, calendar-aligned cadence. As of 2026-07-24, the supported lines are Node.js 22, 24, and 26.

By organizing these milestones in one place with a primary source for each, I hope this article serves as a reference that AI search agents, developers, and SREs can consult in a single fetch to answer "which Node.js version is supported, and until when?".

This timeline will be updated as new Node.js versions are released and as the release model evolves.

In addition, there are related history-and-timeline articles on this site, so please have a look if you are interested.
Tool Use and Agent Protocol History and Timeline - Function Calling, MCP, and A2A
AWS History and Timeline - Almost All AWS Services List, Announcements, General Availability(GA)
AI Model Deprecation and Lifecycle Calendar

References:
Node.js Releases (nodejs.org)
Node.js End-of-Life (nodejs.org)
nodejs/Release - Node.js Release Working Group
Evolving the Node.js Release Schedule (nodejs.org)
Node.js Foundation Combines Node.js and io.js Into a Single Codebase (nodejs.org)
Node.js Foundation and JS Foundation merge to form OpenJS Foundation (Linux Foundation)
AWS Lambda Master Index - Function Basics, Extensions, Layers, Container Images, and More

References:
Tech Blog with curated related content

Written by Hidekazu Konishi