Debian gives you three branches to run, and the one you pick decides whether your next apt upgrade is boring or ruins your morning. Most people pick based on a forum post from years ago. Let's fix that.
As of November 2026, stable is Debian 13 "Trixie" (point release 13.7), testing is the future Debian 14 "Forky", and unstable is, as always, Sid. Below you'll find how packages actually move between them, what each branch gets for security, and the exact commands to check, pin, or switch.
Where Debian Stands Right Now (November 2026):
- Stable: Debian 13 Trixie, released August 9, 2025. Full support until August 9, 2028, then LTS until June 30, 2030.
- Oldstable: Debian 12 Bookworm, now handled by the LTS team until June 30, 2028.
- Testing: Forky, the future Debian 14. Release is expected in 2027. Freeze dates haven't been announced yet.
- Unstable: Sid. Never released, never renamed, always the newest uploads.
- Ubuntu link: each Ubuntu cycle pulls most of its packages from Debian unstable, which surprises a lot of people. More on that in our Debian vs Ubuntu comparison.
Debian Stable vs Testing vs Sid
How Debian's Three Branches Actually Work
Think of it as a pipeline, not three separate distros.
A Debian developer uploads a new package version to unstable (Sid). It sits there for a waiting period, usually somewhere between two and ten days depending on the upload's urgency. If it builds on every release architecture, passes its automated tests, and doesn't pick up any new release-critical bugs, it migrates to testing on its own. Nobody hand-picks it.
Roughly every two years, testing gets frozen. Migration rules tighten in stages until only targeted fixes go through, and once the release team is happy, that frozen testing becomes the new stable. Trixie was testing in early 2025. Forky is testing now.
Stable then barely changes. It gets security fixes and a point release every couple of months (13.1, 13.2 and so on up to today's 13.7), and that's it. No new GNOME, no new Python. That's the whole point.
Note:
Sid is not a version that will ever be released. The name is permanent and it always points to unstable. There's also an experimental area above Sid, but it isn't a full distribution, just a staging spot for risky packages you install one at a time.
Stable vs Testing vs Sid Side by Side
Short answer: stable is the tested, security-supported release for servers and work machines, testing is the next release being prepared and rolls until it freezes, and Sid (unstable) is where every new upload lands first and never gets released. The details that actually bite people are below.
| Point | Stable (Trixie) | Testing (Forky) | Unstable (Sid) |
|---|---|---|---|
| Package age | Frozen at release, months to years old | Days to weeks behind upstream | Newest Debian uploads |
| Security team support | Yes, fast and dedicated | No timely guarantee, fixes usually flow in from Sid | Fixes land when the maintainer uploads them |
| Breakage risk | Very low | Low to medium, worst right after a release | Medium, occasionally sharp |
| Release model | Point releases | Rolling until freeze | Always rolling |
| Good for | Servers, VPS, work laptops | Enthusiast desktops, dev boxes | Debian developers, people who read changelogs |
One thing the table hides: testing is not automatically "safer" than Sid. When a package in Sid has a broken dependency or a security fix, Sid often gets the fix first, and testing waits for migration. Some long-time users run Sid on purpose for exactly this reason. It sounds backwards. It isn't.
Why It Matters: Security, Freezes and Surprise Upgrades
Security is the big one, and it's the part people skip. The Debian security team publishes advisories for stable (and oldstable while it's in its support window). Testing doesn't get that treatment. A fix has to be uploaded to Sid and then migrate, and if migration is blocked by an unrelated bug, your testing machine just sits there with the vulnerable version for a while.
That's fine on a personal desktop behind a router. On a public-facing server, it's a gamble you don't need to take.
Freezes matter too. Once Forky enters freeze in 2027, testing becomes very calm, almost stable-like. Right after Forky releases, though, the floodgates open and testing gets months of pent-up uploads at once. If you ever wanted to try testing, the freeze is the friendliest time. The weeks right after a release are the worst.
For the official schedule and support dates of every branch, keep the Debian releases page bookmarked. It's the only source worth trusting for dates.
Hands-On Examples: Check, Pin and Switch Branches
Everything below was run on a Trixie install, with a Forky VM for the testing outputs. If the idea of suites and components is still fuzzy, read what a Linux repository is first, it'll make the sources files much easier to follow.
Beginner 1: Find out which branch you're actually on
Start here. Plenty of people think they run stable and are actually on testing because someone edited their sources years ago.
LinuxTeck
cat /etc/os-release
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
On testing or Sid the pretty name reads Debian GNU/Linux forky/sid instead of a release number. That missing number is the giveaway.
Beginner 2: Get the exact point release
LinuxTeck
cat /etc/debian_version
That number moves with every point release, so don't panic if yours says 13.8 or higher by the time you read this. It's still Trixie. On testing and Sid this file shows forky/sid for both. So it can't tell you testing from unstable, only stable from "not stable". For that, check your sources.
Beginner 3: Look at your APT sources
Fresh Trixie installs use the deb822 format, so the file lives in sources.list.d rather than the old one-line sources.list. Upgraded from Bookworm? You may still have /etc/apt/sources.list, and sudo apt modernize-sources converts it for you. Some images also list trixie-backports on the Suites: line, which is fine.
LinuxTeck
cat /etc/apt/sources.list.d/debian.sources
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Beginner 4: See what's waiting to be upgraded
LinuxTeck
sudo apt update
apt list --upgradable
libssl3t64/stable-security 3.5.4-1~deb13u2 amd64 [upgradable from: 3.5.4-1~deb13u1]
openssl/stable-security 3.5.4-1~deb13u2 amd64 [upgradable from: 3.5.4-1~deb13u1]
On stable this list is usually short and mostly security. On testing it can be hundreds of lines on a busy week. That difference alone tells you a lot about which branch fits your patience.
Intermediate 1: Check which sources APT trusts, and how much
LinuxTeck
apt policy
100 /var/lib/dpkg/status
release a=now
500 https://security.debian.org/debian-security trixie-security/main amd64 Packages
release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=amd64
500 https://deb.debian.org/debian trixie-updates/main amd64 Packages
release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=amd64
500 https://deb.debian.org/debian trixie/main amd64 Packages
release v=13.7,o=Debian,a=stable,n=trixie,l=Debian,c=main,b=amd64
Pinned packages:
Look at the a= (archive) and n= (codename) fields. Every repo at priority 500 is treated equally, which is exactly why mixing branches without pinning goes wrong.
Intermediate 2: Get newer software on stable with backports
Before you jump to testing for one newer package, try backports. It's built for stable, so the rest of your system stays put. Add trixie-backports to the Suites: line, then ask for it by name:
LinuxTeck
sudo apt update
# Install the newer kernel from backports only
sudo apt install -t trixie-backports linux-image-amd64
linux-image-7.2.6+bpo-amd64
Upgrading:
linux-image-amd64
Summary:
Upgrading: 1, Installing: 1, Removing: 0, Not Upgrading: 0
Download size: 103 MB
Space needed: 545 MB / 38.2 GB available
Continue? [Y/n]
Backports never install unless you ask with -t, which is why they're safe to leave enabled. Once a backported package is installed, though, its later updates arrive with your normal upgrades, so keep an eye on them.
Intermediate 3: Compare a package across branches
LinuxTeck
apt policy nginx
Installed: 1.26.3-3+deb13u7
Candidate: 1.26.3-3+deb13u7
Version table:
1.28.0-2 100
100 https://deb.debian.org/debian forky/main amd64 Packages
*** 1.26.3-3+deb13u7 500
500 https://deb.debian.org/debian trixie/main amd64 Packages
100 /var/lib/dpkg/status
This one assumes the pin from the next example is in place, so testing shows up at priority 100 and stable stays the default.
Intermediate 4: Read bug reports before a testing upgrade
On testing or Sid, install apt-listbugs and apt-listchanges. The first warns you about release-critical bugs before APT installs a package, the second shows changelog news. Both cost nothing and save real pain.
LinuxTeck
sudo apt install apt-listbugs apt-listchanges
Upgrading: 0, Installing: 4, Removing: 0, Not Upgrading: 0
Download size: 412 kB
...
Setting up apt-listbugs (0.1.47) ...
Setting up apt-listchanges (4.8) ...
Real-World 1: Pull one package from testing on a stable server
Sometimes you need one newer tool and backports doesn't have it. Add the forky suite as a separate file, then pin it low so APT never upgrades anything from it unless you ask.
LinuxTeck
sudo tee /etc/apt/sources.list.d/forky.sources <<'EOF'
Types: deb
URIs: https://deb.debian.org/debian
Suites: forky
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
# Pin testing low so nothing upgrades from it by accident
sudo tee /etc/apt/preferences.d/99-testing <<'EOF'
Package: *
Pin: release n=forky
Pin-Priority: 100
EOF
# Install one package from testing on purpose
sudo apt update
sudo apt install -t forky some-package
Keep this rare. If one package from testing turns into fifteen because of library dependencies, stop and reconsider. That's how a stable box quietly turns into a mixed mess. A package management cheat sheet is handy to keep open while you untangle dependencies.
Real-World 2: Move a machine from stable to testing
Take a backup first. Seriously. A tested snapshot or image is your only real "undo" here, see our Linux backup solutions guide if you don't have one. Then edit debian.sources, drop trixie-updates and backports, and set the suite:
LinuxTeck
sudo tee /etc/apt/sources.list.d/debian.sources <<'EOF'
Types: deb
URIs: https://deb.debian.org/debian
Suites: forky
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
Then upgrade in two passes, the same way a normal release upgrade works:
LinuxTeck
sudo apt update
sudo apt upgrade --without-new-pkgs
# Pass 2: the full upgrade (read the Removing list first)
sudo apt full-upgrade
Upgrading: 1342, Installing: 87, Removing: 6, Not Upgrading: 0
Download size: 1,184 MB
Space needed: 2,031 MB / 36.9 GB available
Continue? [Y/n]
Read the "Removing" list before you type Y. If it wants to remove your desktop meta-package or something like network-manager, say no and check what's blocking.
Real-World 3: A throwaway Sid box for testing
Want to try Sid without risking anything? Spin it up in a VM or on a cheap cloud instance and break it freely. Install stable, then switch the suite to sid using the same two-pass upgrade.
Need a scratch VPS to break Sid on? This is the cheapest time of year to grab one. We've rounded up the best discounts on Linux-friendly hosting, and most of them lock in the low price for the whole first term.
See the Black Friday deals
LinuxTeck
grep Suites /etc/apt/sources.list.d/debian.sources
Mistake: Using "stable" instead of the codename
This one catches people every release cycle. Their sources say Suites: stable instead of trixie. Works great for two years. Then release day arrives and APT asks a question most people answer without reading.
LinuxTeck
sudo apt update
sudo apt full-upgrade
N: Repository 'https://deb.debian.org/debian stable InRelease' changed its 'Codename' value from 'trixie' to 'forky'
Do you want to accept these changes and continue updating from this repository? [y/N] y
...
Summary:
Upgrading: 1518, Installing: 203, Removing: 31, Not Upgrading: 0
Warning:
Using the suite name stable (or testing) means your machine follows the label, not the release. When Forky ships, "stable" becomes Forky. APT does stop and ask before accepting the codename change, but one careless y, or a script that runs apt-get update --allow-releaseinfo-change, and your server starts a full major-version jump with no release notes read and no backup taken. Fix: use the codename, trixie, on anything that matters, and never put --allow-releaseinfo-change in automation. Only use testing if you deliberately want to keep rolling past each release.
Which One Should You Run?
Servers and VPS: stable. No debate. You get the security team, predictable point releases, and five years of total support. If you're weighing Debian against the Red Hat side for production, our Debian vs RHEL for servers breakdown covers it, and the server hardening checklist is the next thing to do after install.
Not every provider ships a clean, current Debian image or gets kernel updates out quickly. Our guide compares the ones that do on price, performance and support, so you don't have to guess.
Compare the best Linux VPS hosting
Daily-driver laptop: stable plus backports covers most people. Newer kernel for new hardware, newer firmware, done. If you're new to Linux altogether, stable is the right choice and our beginner distro guide explains why.
Developer workstation: testing is reasonable if you want current toolchains and you're okay fixing the odd broken update. Plenty of developers stay on stable and use containers for newer toolchains instead, which is part of why developers trust Debian in the first place.
Sid: if you package software for Debian, report bugs, or just enjoy reading changelogs over coffee. Otherwise, probably not.
Note:
Ubuntu LTS is not "Debian stable with polish". Ubuntu syncs from Debian unstable at the start of each cycle (only very old LTS releases, 12.04 and earlier, pulled from testing), then freezes and maintains that snapshot itself. So Ubuntu and Debian stable on the same week can carry quite different package versions.
Summary
- Packages flow Sid, then testing, then stable after a freeze.
- Only stable (and oldstable in its window) gets proper security team support.
- Testing is calmest during a freeze and roughest right after a release.
- Use backports before you reach for testing.
- Always use codenames like
trixiein sources on machines you care about.
Conclusion
Stable for anything that has to stay up, testing for a desktop you don't mind fixing, Sid for when breaking things is half the fun. Check your sources today, swap any "stable" label for the codename, and then work through the hardening checklist if it's a server. Drop me your feedback/comments. Feel free to share this article with others if you like it.
Thank you!
To find all the Debian articles, click here
Questions I Get Asked About This All the Time
I added testing to my stable sources and APT wants to upgrade 900 packages. Should I just go ahead?
No, not yet. That number means testing is sitting at the same priority as stable, so APT treats it as an upgrade target for everything. Hit N, then either remove the testing line or add a pin with priority 100 like in the pinning example above. Run apt policy again and confirm stable is back at 500 and testing at 100 before you install anything.
My testing install broke after an update. How do I roll back?
There's no built-in rollback in APT. If you have a snapshot (Btrfs, LVM, or a VM snapshot), restore it. If not, check /var/log/apt/history.log to see what changed, then install the previous version from /var/cache/apt/archives with sudo apt install ./package_version.deb. If the cache was cleaned, snapshot.debian.org keeps old versions. Honestly, this is the moment most people decide to set up snapshots for good.
Should my sources say "testing" or "forky"?
Depends on what you want to happen in mid-2027. With forky, your machine becomes Debian 14 stable when Forky releases and stays there. With testing, it keeps rolling into Debian 15 "Duke" testing the moment Forky ships, and that post-release flood of updates hits you immediately. Most people who try testing actually want forky, they just don't know it yet.
Can I go back from testing to stable without reinstalling?
Downgrading isn't supported, and pinning stable at priority 1001 to force it usually leaves a half-broken system with mismatched libraries. The cleaner option, if you're on testing via the forky codename, is to just wait. When Forky becomes stable, you're on stable again without doing anything. If you can't wait, back up /home and your configs and reinstall Trixie.
I only need a newer kernel for my laptop's Wi-Fi. Do I really need testing?
Almost certainly not. Enable trixie-backports and install the kernel and firmware from there with -t trixie-backports. You get the hardware support and keep the rest of the system on stable with full security coverage. Try that first, and only look at testing if backports genuinely doesn't have what you need.
Is it safe to run Debian testing on a public web server?
I wouldn't. Security fixes on testing depend on migration from Sid, and migration can stall for days on unrelated bugs while a known vulnerability sits on your exposed box. Run stable, add backports or containers for the few things that need to be newer, and keep unattended security upgrades turned on. Save testing for machines behind your own firewall.
Explore LinuxTeck for practical guides covering Rocky Linux, RHEL, AlmaLinux, Ubuntu, Debian, Fedora, Linux administration, shell scripting, networking, and enterprise Linux technologies.