Python 3.15 landed in October 2026 and was patched twice within 16 days. Here is the current version, every supported branch with its end date, and a quick way to tell whether the Python on your machine is behind.
7 min read
What is the latest Python version? As of 3 November 2026 it is Python 3.15.2, released on 25 October 2026 as an expedited security release. Python 3.15.0 itself shipped on 9 October 2026. If you can't move to 3.15 yet, 3.14.10, 3.13.18, 3.12.16 and 3.11.18 all got updates the same day.
Here is the catch we hit: the machine we wrote this on runs Debian 13, and its system Python reported 3.13.5. python.org's newest 3.13 release is 3.13.18, so going by version numbers alone our box looked 13 patch releases behind. It isn't quite that simple, though. Below are the supported versions, what changed in 3.15, and how to check what you actually have.
This is python.org's release status table as of 3 November 2026:
| Version | Status | First released | End of support | Latest release |
|---|---|---|---|---|
| 3.16 | pre-release | planned 6 Oct 2027 | Oct 2032 | not out yet (PEP 826) |
| 3.15 | bugfix | 9 Oct 2026 | Oct 2031 | 3.15.2 (25 Oct 2026) |
| 3.14 | bugfix | 7 Oct 2025 | Oct 2030 | 3.14.10 (25 Oct 2026) |
| 3.13 | security | 7 Oct 2024 | Oct 2029 | 3.13.18 (25 Oct 2026) |
| 3.12 | security | Oct 2023 | Oct 2028 | 3.12.16 (25 Oct 2026) |
| 3.11 | security | Oct 2022 | Oct 2027 | 3.11.18 (25 Oct 2026) |
| 3.10 | end of life | Oct 2021 | 1 Oct 2026 | 3.10.22 was the last (1 Oct 2026) |
"Bugfix" means the branch still gets regular bug fixes. "Security" means it only gets security fixes. "End of life" means nothing more is coming. Each branch gets about five years of support in total. For the 3.10 and 3.13 dates in more detail, see when Python 3.10 reaches end of life and when Python 3.13 reaches end of life.
python.org calls 3.15.2 an "expedited security release", and its release page gives the reason. Intermediate CA keys belonging to eMudhra had been compromised, so the ssl module now blocks those keys as a last resort. The page also says normal uses of pip, including upgrading pip itself, are now safe from attacks based on those keys, even if pip hasn't been updated yet. The security fixes it lists are:
tarfile.tar_filter.http.cookiejar.The release also contains around 130 bug fixes, build improvements and documentation changes from 70 contributors since 3.15.1, which came out on 21 October. So if you installed 3.15.0 on launch day, you are already two releases behind.
These are the headline items in the official What's New in Python 3.15 page:
lazy import json form delays loading a module until it is first used. That can cut startup time for CLIs that import a lot but use little.PYTHONUTF8=0 brings back the old locale-based behaviour.[*L for L in lists] to flatten a list of lists.re.prefixmatch(), a clearer name for what re.match() actually does.There are packaging changes too. Windows 64-bit binaries now use the tail-calling interpreter, and the macOS installer includes free-threading support by default. If you're following the no-GIL story, our page on whether Python 3.14 is free-threaded by default explains the background. One more detail for people who track the garbage collector: the incremental GC that appeared in the 3.14 line was reverted in 3.14.5 and later, and in 3.15.
Run one of these in a terminal:
On our Debian 13 box, the output was:
Inside a script, sys.version_info is the reliable value to compare against, for example sys.version_info >= (3, 12). On Windows, python.org now offers the Python install manager as the main download, and py --version reports the default interpreter.
Not necessarily. This is the part most "latest version" answers skip. Debian listed our package as 3.13.5-2+deb13u5, and the +deb13u5 suffix means Debian has shipped five stable updates to that package. Stable distributions usually backport security fixes into the version they froze, rather than moving to each new upstream patch release. So the version string can say 3.13.5 while some later fixes are already included. What you don't get are the upstream bug fixes Debian chose not to backport, or any 3.14 and 3.15 features.
The practical rule:
It depends on what you're doing:
Before you jump, check that your key dependencies publish wheels for the new version. A compiled package without a 3.15 wheel is the usual blocker, not the language itself.
Python 3.16 is planned for 6 October 2027, with support through October 2032, according to its release schedule in PEP 826. Feature releases now come every October, so you can plan upgrades for the same month each year. If you want to try a newer interpreter with small, safe experiments first, our labs on re vs str methods and itertools vs plain loops are easy to rerun on any version.
What is the latest stable Python version? Python 3.15.2, released 25 October 2026.
Is Python 3.14 still supported? Yes. It gets bugfix releases, with support until October 2030. Its latest release is 3.14.10.
Is Python 3.10 end of life? Yes, as of 1 October 2026. 3.10.22 was its final release.
What is the latest Python 3.13 release? 3.13.18, from 25 October 2026. 3.13 now gets security fixes only.
When does Python 3.16 come out? It is planned for 6 October 2027.
Is Python 3.15 safe for production? It is a stable release with two patch releases already out. Upgrade once your dependencies support it, and go straight to the newest patch.
Lab evidence
Checked on 3 Nov 2026 against python.org/downloads, the Python 3.15.2 release page and the What's New in Python 3.15 docs, all listed in Sources. On our own Debian 13 (trixie) box, python3 --version printed Python 3.13.5 and dpkg listed the package as 3.13.5-2+deb13u5. We did not benchmark 3.15 ourselves; the JIT speed figures are the ones the Python docs publish.
Explore the product
Freelancers and devs who want to turn coding skills into paid site builds
We ran three typescript-eslint presets on a real open-source TypeScript library and counted every finding and second. The jump to strict was smaller than the jump to type-aware linting, and the findings themselves tell you whether your team is ready.
Summary4 Nov 20267 min read
Both cut a string at a separator, but they fail in different ways. We ran them on Python 3.13.5 to show where partition() is safer and where split() is the right tool.
Summary2 Nov 20263 min read
What changes when you swap sort() for toSorted(), with a real 1-million-item Node.js benchmark and the support table.
Summary1 Nov 20263 min read