Node.js Lifecycle Intelligence

Node.js End-of-Life Dates —
Official EOL Schedule for Every Version

Updated May 16, 2026 · endoflife.ai · 8 min read

Node.js follows a predictable release schedule — but that doesn't mean teams keep up with it. Node.js 14 reached end of life in April 2023. Node.js 16 followed in September 2023. Node.js 18 hit end of support in April 2025. Right now, production servers running any of these versions receive zero security patches, zero CVE fixes, zero official support.

This page is the single authoritative reference for Node.js end-of-life dates across every major version — with EOL Risk Scores™, migration notes, and plain-English guidance on what to do if you're running past end of support.

Complete Node.js EOL Schedule

Node.js releases even-numbered versions as Long-Term Support (LTS). Odd-numbered versions are short-lived and never reach LTS. The table below covers every major LTS version and its official end-of-life date as published by the Node.js Release Working Group.

Version LTS Start End of Life Status EOL Risk Score™
Node.js 10 Oct 2018 Apr 30, 2021 EOL 95
Node.js 12 Oct 2019 Apr 30, 2022 EOL 92
Node.js 14 Oct 2020 Apr 30, 2023 EOL 90
Node.js 16 Oct 2021 Sep 11, 2023 EOL 90
Node.js 18 Oct 2022 Apr 30, 2025 EOL 85
Node.js 20 Oct 2023 Apr 30, 2026 EOL 78
Node.js 22 Oct 2024 Apr 30, 2027 Active LTS 50
Node.js 24 Oct 2025 Apr 30, 2028 Current 20
⚠ Security notice
Node.js 20 reached end of life on April 30, 2026. If you are running Node.js 18 or Node.js 20 in production today, you are running an unpatched runtime. New CVEs disclosed after the EOL date will never receive an official fix for those versions.

Node.js 14 — End of Life April 30, 2023

Node.js 14 entered LTS in October 2020 and reached its official end-of-life date on April 30, 2023. It has now been unsupported for over three years.

Node.js 14 was the last version to ship with OpenSSL 1.1.1, which itself reached end of life in September 2023. That means teams still running Node.js 14 are operating with two compounding EOL risks: the runtime and its bundled cryptography library are both unsupported.

EOL Risk Score™
Node.js 14 — Score: 90 Critical

Why teams are still running Node.js 14

The most common reason is dependency lock-in. Node.js 14 was the last version to support certain native addons and older npm packages that haven't been updated. Teams that depend on node-sass, older versions of bcrypt, or native modules compiled against Node.js 14's V8 ABI often face non-trivial migration work.

Migrating from Node.js 14

Node.js 16 — End of Life September 11, 2023

Node.js 16 was cut short by seven months. Originally scheduled to reach EOL in April 2024, the Node.js Release Working Group accelerated its end-of-life to September 11, 2023 because the OpenSSL 1.1.1 library it depended on was reaching its own EOL the same month. Running past that date would have meant shipping a runtime with an unpatched cryptography library.

If your team was caught off-guard by the early EOL, you weren't alone. Many pipelines that had Node.js 16 pinned assumed they had until mid-2024. The real deadline was six months earlier.

EOL Risk Score™
Node.js 16 — Score: 90 Critical
Historical note
Node.js 16's accelerated EOL is a good example of why pinning to a "safe" version without monitoring its lifecycle is dangerous. Vendor timelines change. The Node.js 16 version page tracks these dates so you don't have to.

Node.js 18 — End of Life April 30, 2025

Node.js 18 reached end of life on April 30, 2025. It was in active LTS for two years and was widely adopted as the "safe" production version throughout 2023 and 2024. As of today it has been EOL for over a year.

Node.js 18 shipped with V8 10.2, native fetch() support, and the first stable node:test module. Many teams upgraded to 18 specifically for these features — and then stayed there. The upgrade from 18 to 22 is less disruptive than 14→18 was, but it still requires testing.

EOL Risk Score™
Node.js 18 — Score: 85 Critical

Key breaking changes moving from Node.js 18 to 22

Node.js 20 — End of Life April 30, 2026

Node.js 20 reached end of life on April 30, 2026 — just weeks ago. Teams that were on Node.js 20 thinking they had more runway are now in the same position as Node.js 18 teams were a year ago: running a version that will never receive another security patch.

Node.js 20 introduced the stable Permission Model, native --env-file support, and V8 11.3. If you are currently on Node.js 20, the upgrade path to Node.js 22 is the shortest and lowest-risk jump in the current release cycle.

EOL Risk Score™
Node.js 20 — Score: 78 Critical
Action required
If you are running Node.js 20 in production, you need to upgrade to Node.js 22. The migration is straightforward — most codebases require only dependency updates and a build pipeline change. Start with a staging environment and target completion within 30 days.

Node.js 22 — Current LTS, EOL April 30, 2027

Node.js 22 is the current Long-Term Support release. It entered LTS in October 2024 and is supported until April 30, 2027. This is where every production Node.js deployment should be today.

Node.js 22 ships with V8 12.4, a stable node:sqlite module, improved require(esm) support, and native --run for package.json scripts. It represents the most capable and longest-supported Node.js version currently available.

EOL Risk Score™
Node.js 22 — Score: 50 Medium · Supported until Apr 2027

Node.js 24 is the current "Current" release, available for teams that want the latest features. It will enter LTS in October 2025 and is supported until April 2028. For most production deployments, Node.js 22 is the right choice today.

What the EOL Risk Score™ Means for Node.js

Every Node.js version page on endoflife.ai carries an EOL Risk Score™ — a 0–100 score measuring the actual security and operational risk of running that version in production. The score is calculated from four factors:

Score reference
Node.js 14 → 90 Critical · Node.js 16 → 90 Critical · Node.js 18 → 85 Critical · Node.js 20 → 78 Critical · Node.js 22 → 50 Medium · Node.js 24 → 20 Low

How to Migrate Safely

The fastest path from any EOL Node.js version to Node.js 22 follows the same pattern regardless of your starting point:

Step 1 — Audit your dependencies

Run npm outdated and npm audit before touching your Node.js version. Resolve dependency issues first — a clean dependency tree makes the runtime upgrade significantly easier.

Step 2 — Check for native addons

Native addons compiled against older Node.js ABIs (node-gyp, nan, napi) may need recompilation or replacement. Run npm ls --depth=0 and check each package against its Node.js 22 compatibility status.

Step 3 — Update your CI pipeline first

Change your CI runner to Node.js 22 before updating production. If your test suite passes on 22, production will follow cleanly. Use .nvmrc or .node-version to pin the version explicitly.

Step 4 — Use a feature flag deploy

Deploy Node.js 22 to a canary or staging environment carrying real traffic before full rollout. Monitor error rates, memory usage, and response times for 24 hours before promoting to production.

Step 5 — Update your lockfiles

After upgrading Node.js, regenerate package-lock.json or yarn.lock with the new engine. Some packages resolve differently across Node.js versions.

Check your full stack
Node.js runtime EOL is one piece of the puzzle. Your npm packages, frameworks, and OS runtime each have their own end-of-life dates. Use the EOL Checker or Stack Scanner to audit your entire dependency tree at once.

Know before your scanner does.

Get EOL alerts for the products in your stack — free, no spam, unsubscribe any time.

✓ You're subscribed. We'll alert you before your stack goes EOL.