When Does Python 3.10 Reach End of Life? (It Just Did)
Five years after 3.10.0 shipped, CPython 3.10 stopped getting security fixes. If 3.10 is still running in production, here is what changes and where to move next.
Aditya Challa3 min read
Explore the product
Ready Client Sites for prebuilt websites
Untested by us. Check what's included, the license and refund terms before you buy.
Python 3.10 reached end of life on 1 October 2026, the same day its last security release, 3.10.22, came out. CPython's core team no longer fixes bugs or security issues in 3.10, so plan to move to 3.12 or newer.
The key dates for Python 3.10
- 3.10.0 final: 4 October 2021.
- Bugfix phase: regular bugfix releases with binary installers for about 18 months, ending soon after 3.11.0 shipped.
- Security-only phase: source-only security releases "as needed" until October 2026 (3.10.12 to 3.10.22).
- End of life: 1 October 2026, five years after 3.10.0, with 3.10.22 as the final release.
What "end of life" means in practice
Your Python 3.10 installs keep working. EOL means there will be no new 3.10 releases from python.org, including fixes for newly found vulnerabilities. Third-party libraries also tend to drop old versions once they reach EOL, so new releases of your dependencies may stop installing on 3.10 over time. A Linux distribution or vendor may still backport fixes to its own 3.10 package under its own support policy. Check with that vendor rather than assuming.
Which Python versions are still supported
- 3.15: bugfix, first released 9 October 2026, end of life October 2031.
- 3.14: bugfix, end of life October 2030.
- 3.13: security fixes only, end of life October 2029.
- 3.12: security fixes only, end of life October 2028.
- 3.11: security fixes only, end of life October 2027.
Which version to upgrade to
Moving only to 3.11 buys about a year before the next forced upgrade. For most projects, 3.13 or 3.14 is a better target: both have years of support left and wide library support. Jumping straight to 3.15 makes sense only after you've confirmed that your key dependencies publish wheels for it.
A short upgrade checklist
- Inventory where 3.10 runs: Docker base images, CI matrices, serverless runtimes, python_requires in packaging metadata, and pinned pyenv or .python-version files.
- Run your test suite on the target version in CI before switching production.
- Upgrade dependencies first, since old pinned versions often lack wheels for newer Pythons.
- Read the "What's New" pages for each version you skip, especially the removed and deprecated modules.
- Change the default interpreter last, then remove 3.10 from your CI matrix.
If your scripts lean on standard-library file and path helpers, our pathlib vs os.path comparison (Open shoppercove.com) is a good regression check, and the process vs thread pool lab (Open shoppercove.com) shows how concurrency behaves before you move to a newer runtime.
FAQ
Is Python 3.10 still safe to use?
It still runs, but since 1 October 2026 python.org issues no security fixes for it. Unless a vendor backports fixes for you, new vulnerabilities in 3.10 will stay unpatched.
What was the last Python 3.10 release?
Python 3.10.22, released on 1 October 2026.
When does Python 3.11 reach end of life?
October 2027, according to the Python Developer's Guide.
Sources
Lab evidence
What I found running this
Read the Python Developer's Guide status page (devguide.python.org/versions) and PEP 619, the Python 3.10 release schedule, on 10 Oct 2026. All end-of-life dates and the final release number come from those two pages. We did not test upgrade paths for this post; check your own dependencies before moving to a newer Python.
Keep reading
functools.reduce vs for-loop: Localhost Lab
Summary1 Oct 20264 min read
math.fsum vs sum Float Totals: Localhost Lab
Hands-on math.fsum vs builtin sum for float totals: real items/s plus cancellation accuracy, measured on Linux localhost in this hands-on lab for SREs.
Summary1 Oct 20264 min read
dataclass vs slots vs dict: Python Object Lab
Hands-on Python dataclass vs slots vs dict lab: instantiation and attribute ops/s plus RSS for classic, slots, dataclass, namedtuple, dict on localhost.
Lab1 Oct 20266 min read