Python Version Support and EOL Timeline - Release Schedule, Support Policy, and End-of-Life Dates

First Published:
Last Updated:

This is a language-runtime installment in my history-and-timeline series, where I have previously tracked the evolution of individual AWS services and foundation model families. This time I have built a single timeline for a question every Python developer, SRE, and platform owner asks: how long is a given Python version supported, and when does it reach end of life (EOL)?

Python's support lifecycle is remarkably regular - a new feature release every October, five years of support per version, split into a bug-fixing phase and a security-only phase. But the exact dates are precisely the kind of fact that is easy to get wrong, and answers copied from secondary sources drift out of date quickly. This article is a primary-sourced reference: every release and EOL date below is drawn from python.org itself - the developer guide's "Status of Python versions" page and the individual release-schedule PEPs - not from aggregator sites.

Facts in this article were verified against python.org (the devguide Versions page and the release-schedule PEPs) as of 2026-07-24.

This article focuses on release dates, end-of-life dates, and the two policy shifts that shaped the schedule (the move to an annual release cycle and the extension of full support to two years). It is not a language feature history, a library or framework EOL list, a performance comparison, or a migration guide.

Companion articles in this language-runtime sub-series:

Background and Method of Creating the Python Version Support and EOL Timeline

The reason for creating this timeline is that Python's version support is easy to state in the abstract ("about five years per version") but easy to get wrong in the specifics. The precise dates live in two official places - the developer guide's version-status table and each version's release-schedule PEP - and secondary sources frequently disagree with them. I wanted one page that organizes the facts chronologically, with a python.org primary source for each one.

Three terms are used throughout this article, and it is worth defining them precisely as Python's developer guide uses them:
  • Bugfix (full support) is the phase, immediately after a version's release, during which it receives regular bug fixes and binary installers, published roughly every two months.
  • Security-only support is the later phase, during which the version receives source-only fixes for security issues, released on an as-needed basis.
  • End of life (EOL) is the date after which a version receives no further fixes of any kind, including security fixes.
Every Python 3.x version is supported for about five years in total. Under the current policy, that five years is split into a full-support phase followed by a security-only phase; the length of the split changed with Python 3.13 (see the Current Overview). Python 2.x followed a different, longer-lived path that ended when Python 2.7 was retired.

The annual cadence itself is a deliberate policy choice, and PEP 602 states its reasoning explicitly: smaller consecutive releases, a more gradual upgrade path for users, a predictable calendar in which the final release always lands in October, and a schedule that can be synchronized with external distributors such as Fedora, who have historically helped find regressions early. Knowing this rationale makes the timeline below easier to read - every feature release from Python 3.9 onward ships in October by design, not by coincidence.

To organize this history, I have taken the following approaches.
  • Tracking the release and end-of-life dates of each Python version and organizing them in chronological order.
  • Summarizing the current support status of every maintained version in a single reference table.
The inclusion criteria are deliberately explicit. This timeline records feature-version releases, end-of-life dates, and the policy changes that altered the schedule. It does not record individual maintenance releases (3.x.y), language features, or platform-specific builds. Python versions 3.1 through 3.5 followed the same support model and have all long since reached end of life; to keep the timeline focused on the versions readers actually make decisions about, they are summarized here rather than listed row by row. The scope for a decision-ready reference is the Python 2.7 endgame and the Python 3.6-and-later line.

This timeline primarily references the following primary sources.
Where a primary source states only a month for a future EOL (for example, "approximately October 2026"), the timeline reflects that precision and marks the date as scheduled, rather than inventing a specific day. Scheduled dates are subject to change by the Python release managers and Steering Council.
The content posted here is limited to releases, end-of-life dates, and policy changes essential for understanding Python's support lifecycle.
In other words, please note that the items on this timeline are not every Python release, but the representative milestones that a version-selection or upgrade decision depends on.

Python Version Support and EOL Historical Timeline (Updates from December 3, 2008)

Here is the chronological timeline, from the release of Python 3.0 through the currently scheduled end-of-life dates. Each row links to a python.org primary source. Release rows and end-of-life rows are recorded separately, so a version's launch and its retirement are never conflated.

* You can sort the table by clicking on the column name.
DateEvent
2008-12-03Python 3.0 is released. Python 3.0 is a backwards-incompatible release that begins the multi-year Python 2-to-3 transition. Source: Python 3.0 Release.
2010-07-03Python 2.7 is released - the final feature release of the Python 2 series. No Python 2.8 was ever planned; 2.7 became the long-lived end of the 2.x line. Source: PEP 373 - Python 2.7 Release Schedule.
2016-12-23Python 3.6 is released. Source: PEP 494 - Python 3.6 Release Schedule.
2018-06-27Python 3.7 is released. Source: PEP 537 - Python 3.7 Release Schedule.
2019-10-14Python 3.8 is released - the last feature release before the annual release cycle. Source: PEP 569 - Python 3.8 Release Schedule.
2019-10-30PEP 602 is accepted, adopting an annual (12-month) release cycle. Starting with Python 3.9, a new feature version is released every October, replacing the previous roughly-18-month cadence. Source: PEP 602 - Annual Release Cycle for Python.
2020-01-01Python 2.7 reaches end of life (the Python 2 sunset). After a final extension to 2020, Python 2 stopped receiving fixes of any kind. Source: PEP 373 - Python 2.7 Release Schedule.
2020-04-20Python 2.7.18 is released - the final Python 2 release. The code freeze occurred on the sunset date, and the final source release followed. Source: Python 2.7.18 Release.
2020-10-05Python 3.9 is released - the first feature version developed under PEP 602's annual cadence. Source: PEP 596 - Python 3.9 Release Schedule.
2021-10-04Python 3.10 is released. Source: PEP 619 - Python 3.10 Release Schedule.
2021-12-23Python 3.6 reaches end of life - five years after its release. Source: PEP 494 - Python 3.6 Release Schedule.
2022-10-24Python 3.11 is released. Source: PEP 664 - Python 3.11 Release Schedule.
2023-06-27Python 3.7 reaches end of life. Source: PEP 537 - Python 3.7 Release Schedule.
2023-10-02Python 3.12 is released. Source: PEP 693 - Python 3.12 Release Schedule.
2024-10-07Python 3.8 reaches end of life - on the same day Python 3.13 is released. Source: PEP 569 - Python 3.8 Release Schedule.
2024-10-07Python 3.13 is released - the first version with two years of full (bugfix) support. From 3.13 onward the split becomes two years of bugfix support plus three years of security support (still five years total). Source: PEP 719 - Python 3.13 Release Schedule.
2025-02-06PEP 2026 (calendar versioning) is rejected by the Steering Council. The proposal to renumber releases by year (for example, "3.26" for a 2026 release) was declined, so Python keeps the 3.x numbering. Source: PEP 2026 - Calendar versioning for Python.
2025-10-07Python 3.14 is released. Source: PEP 745 - Python 3.14 Release Schedule.
2025-10-31Python 3.9 reaches end of life. Source: Status of Python versions (Python Developer's Guide).
2026-10Python 3.10 is scheduled to reach end of life (approximately October 2026, scheduled). Source: PEP 619 - Python 3.10 Release Schedule.
2026-10-01Python 3.15 is scheduled for release (scheduled). Python 3.15 has been in the prerelease phase since its first beta on 2026-05-07 and, following the October cadence, is scheduled for final release on 2026-10-01, with security-only support expected to run until approximately October 2031. Source: PEP 790 - Python 3.15 Release Schedule.

There may be slight variations between a release-schedule PEP's "approximately October" wording and a specific day; scheduled dates reflect the precision stated by the primary source.

Current Overview of Python Version Support and EOL

Having followed the chronology, this section summarizes the current picture as of 2026-07-24: which versions are still maintained, which phase each is in, and when each is scheduled to reach end of life. This table is the main reference; the timeline above is the history behind it.

Python 3.14 is the latest stable release. Python 3.10, 3.11, 3.12, 3.13, and 3.14 are still maintained; Python 3.9 and everything before it have reached end of life.

Per-Version Support Schedule

* You can sort the table by clicking on the column name.
VersionFirst releaseFull (bugfix) support untilEnd of life (security end)Status (2026-07-24)
3.152026-10-01 (scheduled)2028-10 (scheduled)2031-10 (scheduled)Prerelease (beta)
3.142025-10-072027-10-05 (scheduled)2030-10 (scheduled)Bugfix - latest stable
3.132024-10-072026-10-06 (scheduled)2029-10 (scheduled)Bugfix
3.122023-10-022025-04-082028-10 (scheduled)Security
3.112022-10-242024-04-022027-10 (scheduled)Security
3.102021-10-042023-04-052026-10 (scheduled)Security
3.92020-10-05(ended)2025-10-31End of life
3.82019-10-14(ended)2024-10-07End of life
3.72018-06-27(ended)2023-06-27End of life
3.62016-12-23(ended)2021-12-23End of life
2.72010-07-032020-01-01End of life

Scheduled dates (marked "scheduled") come from each version's release-schedule PEP and the developer guide, and are subject to change. For the still-maintained versions, the "full (bugfix) support until" date is the final regular bugfix release with binary installers; after that the version enters security-only mode until its end-of-life date. Source: Status of Python versions.

Support Policy at a Glance

The five-year support lifetime is fixed, but the split between full support and security-only support changed with Python 3.13. PEP 602 (as amended) describes it as follows:
Support phasePython 3.9-3.12Python 3.13 and later
Full (bugfix) supportabout 1.5 yearsabout 2 years
Security-only supportabout 3.5 yearsabout 3 years
Total supported lifetimeabout 5 yearsabout 5 years

Source: PEP 602 - Annual Release Cycle for Python.

Versions in Development

Beyond the maintained releases, two versions are in the pipeline as of 2026-07-24:
  • Python 3.15 is in prerelease, scheduled for release on 2026-10-01.
  • Python 3.16 is under active development on the main branch and is the only branch that accepts new features. Its release schedule is defined in PEP 826, with the final release scheduled for 2027-10-05 (scheduled) and security-only support expected to run until approximately October 2032.
Source: Status of Python versions (Python Developer's Guide).

Note on numbering: because PEP 2026 (calendar versioning) was rejected, Python continues with the 3.x scheme - the next releases are 3.15 and 3.16, not a year-based number.
Python version support lifecycle - each version moves from its October feature release through a full (bugfix) support phase and a security-only support phase to end of life, about five years in total
Python version support lifecycle - each version moves from its October feature release through a full (bugfix) support phase and a security-only support phase to end of life, about five years in total
The lifecycle above shows how every Python 3.x version moves from its October feature release through a full (bugfix) support phase and then a security-only phase, reaching end of life about five years after its release.

Frequently Asked Questions about Python Version Support and EOL

How long is a Python version supported?

About five years from its initial release. Under PEP 602, Python versions 3.9 through 3.12 receive roughly 1.5 years of full (bugfix) support followed by roughly 3.5 years of security-only fixes; starting with Python 3.13, the split is roughly 2 years of full support followed by roughly 3 years of security-only fixes. The total supported lifetime is about five years in both cases.

When does Python 3.x reach end of life?

On the end-of-life date listed for each version in the Current Overview table above. A new feature version is released every October and reaches end of life about five years later; after that date, no further fixes - including security fixes - are released for that version.

When did Python move to annual releases?

PEP 602 was accepted on 2019-10-30 and took effect with Python 3.9 in October 2020. It changed the cadence from a new feature release roughly every 18 months to a new feature release every October.

What is the difference between bugfix and security support?

During the bugfix (full support) phase, a version receives regular bug fixes and binary installers roughly every two months. Once it enters the security-only phase, it no longer receives general bug fixes or binary installers - only source-only fixes for security issues, until it reaches end of life.

Did Python adopt calendar versioning?

No. PEP 2026 proposed a calendar-based numbering scheme (for example, calling a 2026 release "3.26"), but the Steering Council rejected it on 2025-02-06. Python continues with the existing 3.x numbering, so the releases following 3.14 are 3.15 and 3.16.

Is a Python version's end-of-life date the same everywhere?

Yes, at the level this article tracks: the upstream end-of-life date is set once by the CPython release schedule, and python.org publishes a single date per version. Linux distributions and commercial vendors may keep patching their own Python builds after that date, but that is vendor support for their build, not an extension of the upstream lifecycle. This is a notable contrast with Java, where each distribution publishes its own support end dates - see the Java Version and LTS Timeline for that model.

Summary

In this article, I built a primary-sourced timeline of Python version support and summarized the current end-of-life picture.

The story has three parts: the long Python 2 endgame, which closed when Python 2.7 was retired on 2020-01-01; the move to a predictable annual release cycle (PEP 602), which gave Python a new feature version every October starting with 3.9; and the steady five-year support model that now governs every 3.x version, with full-support and security-only phases whose split widened to two years of full support from Python 3.13. Along the way, a proposal to switch to calendar versioning (PEP 2026) was considered and rejected, so the familiar 3.x numbering continues.

The single most useful takeaway is that Python has the simplest lifecycle model in this language sub-series: one steward (the CPython release managers and Steering Council), one release-schedule PEP per version, and one upstream end-of-life date per version, roughly five years after an October release. Unlike Java, there is no per-distributor support matrix to reconcile, and unlike Node.js there is no odd/even or LTS distinction to remember - the questions that matter are only which October a version shipped in and whether it is still inside its five-year window.

By organizing these facts in one place with a python.org primary source for each, I hope this article serves as a reference that developers, SREs, and AI search agents can consult in a single fetch. It connects directly to runtime-support questions on platforms such as AWS Lambda, where the supported Python runtimes track these same upstream EOL dates - see How AWS Lambda Execution Environments Work and the AWS Lambda Master Index. For the same lifecycle idea applied to AI models, see my AI Model Deprecation and Lifecycle Calendar.

This timeline will be updated as Python continues to evolve.

In addition, there are related history-and-timeline articles on this site, so please have a look if you are interested.
AWS History and Timeline - Almost All AWS Services List, Announcements, General Availability(GA)
AI Model Deprecation and Lifecycle Calendar
How AWS Lambda Execution Environments Work

References:
Status of Python versions (Python Developer's Guide)
PEP 602 - Annual Release Cycle for Python
PEP 2026 - Calendar versioning for Python (rejected)
PEP 373 - Python 2.7 Release Schedule
PEP 719 - Python 3.13 Release Schedule
PEP 745 - Python 3.14 Release Schedule
PEP 790 - Python 3.15 Release Schedule
PEP 826 - Python 3.16 Release Schedule
AWS Lambda Master Index

References:
Tech Blog with curated related content

Written by Hidekazu Konishi