Python Version Support and EOL Timeline - Release Schedule, Support Policy, and End-of-Life Dates
First Published:
Last Updated:
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.
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.
This timeline primarily references the following primary sources.
- Status of Python versions (Python Developer's Guide)
- PEP 602 - Annual Release Cycle for Python
- PEP 2026 - Calendar versioning for Python (rejected)
- The per-version release-schedule PEPs (PEP 373, 494, 537, 569, 596, 619, 664, 693, 719, 745, and 790), each linked in the timeline below, plus PEP 826 for the in-development Python 3.16.
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.
| Date | Event |
|---|---|
| 2008-12-03 | Python 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-03 | Python 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-23 | Python 3.6 is released. Source: PEP 494 - Python 3.6 Release Schedule. |
| 2018-06-27 | Python 3.7 is released. Source: PEP 537 - Python 3.7 Release Schedule. |
| 2019-10-14 | Python 3.8 is released - the last feature release before the annual release cycle. Source: PEP 569 - Python 3.8 Release Schedule. |
| 2019-10-30 | PEP 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-01 | Python 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-20 | Python 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-05 | Python 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-04 | Python 3.10 is released. Source: PEP 619 - Python 3.10 Release Schedule. |
| 2021-12-23 | Python 3.6 reaches end of life - five years after its release. Source: PEP 494 - Python 3.6 Release Schedule. |
| 2022-10-24 | Python 3.11 is released. Source: PEP 664 - Python 3.11 Release Schedule. |
| 2023-06-27 | Python 3.7 reaches end of life. Source: PEP 537 - Python 3.7 Release Schedule. |
| 2023-10-02 | Python 3.12 is released. Source: PEP 693 - Python 3.12 Release Schedule. |
| 2024-10-07 | Python 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-07 | Python 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-06 | PEP 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-07 | Python 3.14 is released. Source: PEP 745 - Python 3.14 Release Schedule. |
| 2025-10-31 | Python 3.9 reaches end of life. Source: Status of Python versions (Python Developer's Guide). |
| 2026-10 | Python 3.10 is scheduled to reach end of life (approximately October 2026, scheduled). Source: PEP 619 - Python 3.10 Release Schedule. |
| 2026-10-01 | Python 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.| Version | First release | Full (bugfix) support until | End of life (security end) | Status (2026-07-24) |
|---|---|---|---|---|
| 3.15 | 2026-10-01 (scheduled) | 2028-10 (scheduled) | 2031-10 (scheduled) | Prerelease (beta) |
| 3.14 | 2025-10-07 | 2027-10-05 (scheduled) | 2030-10 (scheduled) | Bugfix - latest stable |
| 3.13 | 2024-10-07 | 2026-10-06 (scheduled) | 2029-10 (scheduled) | Bugfix |
| 3.12 | 2023-10-02 | 2025-04-08 | 2028-10 (scheduled) | Security |
| 3.11 | 2022-10-24 | 2024-04-02 | 2027-10 (scheduled) | Security |
| 3.10 | 2021-10-04 | 2023-04-05 | 2026-10 (scheduled) | Security |
| 3.9 | 2020-10-05 | (ended) | 2025-10-31 | End of life |
| 3.8 | 2019-10-14 | (ended) | 2024-10-07 | End of life |
| 3.7 | 2018-06-27 | (ended) | 2023-06-27 | End of life |
| 3.6 | 2016-12-23 | (ended) | 2021-12-23 | End of life |
| 2.7 | 2010-07-03 | — | 2020-01-01 | End 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 phase | Python 3.9-3.12 | Python 3.13 and later |
|---|---|---|
| Full (bugfix) support | about 1.5 years | about 2 years |
| Security-only support | about 3.5 years | about 3 years |
| Total supported lifetime | about 5 years | about 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
mainbranch 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.
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.

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