The short answer
All three release lines have reached end-of-life as of October 2026. Python 3.9 reached EOL on 2025-10-31 at version 3.9.25. PostgreSQL 13 reached EOL on 2025-11-13, after final release 13.23 (shipped 2025-11-10). Node.js 20 LTS reached EOL on 2026-04-30, after release 20.20.2 (shipped 2026-03-24).
Calling get_eol_status on the free Dev Facts Check MCP server (https://devfacts.openkrill.app/mcp) returns both the requested cycle's release object and the supportedCycles list in one response.
Three common EOL checks and their supported upgrade targets
This is what get_eol_status returned across our 2026-10-19 and 2026-10-20 runs for PostgreSQL 13, Node.js 20 and Python 3.9:
| Product and cycle | Status (isEol) | Release date (releasedOn) | EOL date (eolFrom) | Latest patch (latest.name) | Supported upgrade cycles (supportedCycles) |
|---|---|---|---|---|---|
PostgreSQL 13 | EOL (true) | 2020-09-24 | 2025-11-13 | 13.23 (2025-11-10) | 14 (EOL 2026-11-12), 15 (2027-11-11), 16 (2028-11-09), 17 (2029-11-08), 18 (2030-11-14) |
Node.js 20 (LTS from 2023-10-24) | EOL (true) | 2023-04-18 | 2026-04-30 | 20.20.2 (2026-03-24) | 22 LTS (EOL 2027-04-30), 24 LTS (2028-04-30), 26 (2029-04-30) |
Python 3.9 | EOL (true) | 2020-10-05 | 2025-10-31 | 3.9.25 (2025-10-31) | 3.11 (EOL 2027-10-31), 3.12 (2028-10-31), 3.13 (2029-10-31), 3.14 (2030-10-31), 3.15 (2031-10-31) |
Active PostgreSQL release cycles in October 2026
If your team is migrating off PostgreSQL 13, note that PostgreSQL 14 reaches end-of-life on 2026-11-12, less than one month away. This is the supportedCycles list get_eol_status returned for postgresql on 2026-10-20:
| Major cycle | LTS flag (isLts) | Latest minor version (latest) | End-of-life date (eolFrom) |
|---|---|---|---|
| PostgreSQL 18 | false | 18.6 | 2030-11-14 |
| PostgreSQL 17 | false | 17.11 | 2029-11-08 |
| PostgreSQL 16 | false | 16.15 | 2028-11-09 |
| PostgreSQL 15 | false | 15.19 | 2027-11-11 |
| PostgreSQL 14 | false | 14.24 | 2026-11-12 |
How 4 EOL lookup options compared on PostgreSQL 13
We ran the same PostgreSQL 13 check across 4 tools on 2026-10-19:
| Tool | Time | What a single query returns | Install or key needed |
|---|---|---|---|
Dev Facts Check MCP (get_eol_status) | 1,027 ms | Target cycle release (eolFrom: "2025-11-13", latest.name: "13.23") plus all 5 supportedCycles | None (remote HTTP MCP server, no API key) |
endoflife.date REST API (/api/v1/products/postgresql/releases/13) | 522 ms | Single cycle JSON (isEol: true, eolFrom: "2025-11-13", name: "13.23"). Listing active cycles takes a second call | None (public REST endpoint, our upstream data source) |
endoflife.ai MCP server | 1,623 ms | Full product JSON across all historical PostgreSQL cycles | None (remote HTTP MCP server) |
norwegianblue CLI (npx norwegianblue postgresql) | 2,165 ms | Markdown table of all 18 cycles. It does not isolate a single cycle in structured JSON | Requires local Python or Node CLI execution |
To check any product and release cycle on Dev Facts Check (see also the ChatGPT integration guide and the Claude integration guide), send this JSON-RPC call:
{"method":"tools/call","params":{"name":"get_eol_status",
"arguments":{"product":"postgresql","version":"13"}}}
Frequently asked questions
When did PostgreSQL 13 reach end-of-life, and what is the last 13.x version?
PostgreSQL 13 reached end-of-life on 2025-11-13. Its final minor release was 13.23, shipped on 2025-11-10. As of October 2026 the supported PostgreSQL major cycles are 14 (EOL 2026-11-12), 15 (EOL 2027-11-11), 16 (EOL 2028-11-09), 17 (EOL 2029-11-08) and 18 (EOL 2030-11-14).
Is Node.js 20 LTS still supported in October 2026?
No. Node.js 20 entered Long Term Support on 2023-10-24, ended active support on 2024-10-22, and reached end-of-life on 2026-04-30 at version 20.20.2. The supported Node.js release lines are 22 LTS (EOL 2027-04-30), 24 LTS (EOL 2028-04-30) and 26 (EOL 2029-04-30).
What else does Dev Facts Check look up besides single-product EOL dates?
The MCP server at https://devfacts.openkrill.app/mcp provides 6 tools with no API key (up to 60 calls a minute per network): get_eol_status, check_runtime_eol (batch EOL check across repo config files or a runtimes list), check_license (SPDX license permissions, conditions and limitations), check_browser_support (Baseline web feature support across browsers), lookup_rfc (IETF RFC metadata) and get_release_notes.
Where does get_eol_status get its release and support dates?
It reads live cycle data from endoflife.date (https://endoflife.date), which tracks release dates, latest patch versions, LTS windows and end-of-life dates across more than 400 software products.
Sources
- PostgreSQL 13, Node.js 20 and Python 3.9 EOL lookups: Dev Facts Check MCP server (
https://devfacts.openkrill.app/mcp), read on 2026-10-19 at 06:06 UTC and 2026-10-20 at 07:20 UTC. - Upstream cycle data: endoflife.date/postgresql, endoflife.date/nodejs and endoflife.date/python.
- Vendor release policies: PostgreSQL Versioning Policy, Node.js Release Working Group Schedule and Status of Python Versions (PEP 602).
- Rival benchmarks: endoflife.date API v1, endoflife.ai MCP and norwegianblue CLI, tested on 2026-10-19.