After more than two years in the making, Debian 13 (Trixie) has finally arrived—packed with a bunch of new features and improvements. It’s no surprise that many Debian 12 users are already itching to make the jump to this latest stable release.
If that’s you, I have some good news for you – you’re in the right place. While the upgrade process is pretty straightforward, it’s always best to do it the safe way—following the right steps, in the right order, with the right guidance. And that’s exactly the purpose of this article.
I’ll walk you through the process of upgrading to Debian 13 (Trixie) from Debian 12 (Bookworm), covering all key points to navigate this major version transition successfully.
Naturally, the time it takes to finish the task will depend on how many packages you’ve got installed and how powerful your hardware is. But for most cases, the whole process usually wraps up in about 30 to 60 minutes.
Needless to say, everything you’ll see below has been tested and proven to work in our lab. And as always, the goal is simple—making your upgrade to Trixie as smooth and hassle-free as possible. So, let’s do it together.
Step 1: Take System Backup
First, let’s ensure all your important data is safe. Before doing anything else, I strongly recommend fully backing up your Bookworm installation using one of the system snapshot tools you’re familiar with. If you’re not sure which one to go with, check out my recommendations on the topic.
Thus, if something goes wrong, you can restore it to its previous state with all the vital data.
However, if you do not feel like taking the above approach, you can instead use a command like the one shown below, which will archive all of the more critical directories and their contents in a tar.gz archive.
sudo tar czf /bookworm.tar.gz \
--exclude=/bookworm.tar.gz \
--exclude=/dev \
--exclude=/run \
--exclude=/mnt \
--exclude=/proc \
--exclude=/sys \
--exclude=/tmp \
--exclude=/media \
--exclude=/lost+found \
/
Code language: Bash (bash)
Feel free to add more “–exclude=” parameters if needed. Finally, the command creates a backup of all files in the “bookworm.tar.gz” file located on the root partition (/), which you should ideally transfer to another computer or drive, for example, using the SCP command.
Step 2: Update All Software
Ensure you have a fully updated Debian 12 system. Run the three commands below to ensure no packages are waiting to be updated. If there are, apply them before moving on.
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
Code language: Bash (bash)
Next, I recommend cleaning off any leftover packages and rebooting the system.
sudo apt --purge autoremove
sudo reboot
Code language: Bash (bash)
By the end, you’ll need to end up with the fully updated latest minor release of Debian 12 series — which, at the time of writing, is version 12.11. You can quickly check this by running the command below.
cat /etc/debian_version
Code language: Bash (bash)

Below is our current fully-updated Debian 12 (Bookworm) system before we upgrade to Debian 13 (Trixie).

Step 3: Check for Installed Non-Debian Packages
Before proceeding with the upgrade to Trixie, following best practices, we will check if any additional packages currently installed on our system are from outside the official Debian 12 repositories.
We do this because, over time, we might have installed extra server or client software on our Debian 12 system that didn’t come from the official Debian repositories—things like Google Chrome, VirtualBox, and so on.
In that case, this may cause complications when upgrading to Debian 13, as these external repositories may not yet be set up to work with the Trixie release.
sudo apt list '?narrow(?installed, ?not(?origin(Debian)))'
Code language: PHP (php)

As you can see, the check showed that we have a Docker and Google Chrome installation that is from non-Debian repositories. So what do we do in such a situation?
My best and recommended advice is, if the installed software is not critical to your needs, to uninstall it and reinstall it after successfully upgrading to Debian 13 to avoid issues.
However, in this case, with Docker and Google Chrome, since the software is from proven companies that immediately made their software compatible with Debian 13, we will continue upgrading to Trixie without removing it.
In addition, check for packages that, for some reason, you have specified not to be updated. You can do this by running:
sudo apt-mark showhold
Code language: Bash (bash)
If the command returns an empty output, it is okay to move on. However, if you get a list of package names, you must allow them to be updated, as for each manually executed:
sudo apt-mark unhold package_name
Code language: Bash (bash)
Finally, if you use the Debian backports repositories, the packages from bookworm-backports have lower version numbers than those in Trixie, so they should upgrade just like regular Bookworm packages during the distribution upgrade.
Step 4: Modify Software Sources Files
The Debian software repositories are defined in the “/etc/apt/sources.list” file and the “/etc/apt/sources.list.d/” directory. Before upgrading, you must update them to point to the Debian 13 (Trixie) repositories.
Before you do so, however, it is a good practice to back up the current software repositories’ configuration files. We’re doing this just in case something goes wrong with the commands below, so we can easily restore the original files if needed.
mkdir ~/apt
cp /etc/apt/sources.list ~/apt
cp -r /etc/apt/sources.list.d/ ~/apt
Code language: Bash (bash)
Now, let’s update the current Debian 12 (Bookworm) repositories to those of Debian 13 (Trixie).
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*
Code language: Bash (bash)
The above commands will replace the “bookworm” keyword with “trixie” in software repository files. After the changes, the final version of your “/etc/apt/sources.list” file should look something like this:
deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
Code language: JavaScript (javascript)

Step 5: Perform an Initial Minimal Upgrade
At this point, your Debian 12 system is ready to be upgraded to Debian 13. The first step is to update the repository to let the system recognize the newly added repo URLs.
sudo apt update
Code language: Bash (bash)

Once the command finishes running, you’ll notice that quite a lot of packages—over 1,300 in this case—are ready for an update. That’s perfectly fine—we can move on.
According to the official Debian documentation, the recommended way to handle the upgrade is to break it into two separate steps.
- Minimal system upgrade
- Full system upgrade
So, let’s proceed with the first step, which tells APT to upgrade all currently installed packages to their latest available versions — but without installing any brand-new packages that aren’t already on your system. This option is handy for a safer, more minimal update.
sudo apt upgrade --without-new-pkgs
Code language: Bash (bash)

Just hit “Enter” and keep an eye on the screen – it will show you important information about some upgraded packages. Press “q” after reading to exit the pager and continue the upgrade.

In addition, the upgrade process will prompt for permission to restart services without asking. Choose “Yes” and hit “Enter.”

Be patient. During the process, you may also be asked what you want to do with a specific configuration file whose content you’ve changed so it no longer matches what’s expected in the updated package. If you’re unsure what to do, go with defaults by pressing the “Enter” key to continue with the upgrade.
Step 6: Upgrade to Debian 13 (Trixie) from Debian 12 (Bookworm)
Once the minimal system upgrade completes, run the following command to begin the full upgrade.
sudo apt full-upgrade
Code language: Bash (bash)
You’ll see a long list of packages that are about to be updated. Hit “Enter” and again, keep an eye on the screen, read the notifications, and perform the necessary actions required for the upgrading process to proceed.

The command will upgrade all packages, install new dependencies, and remove packages if necessary to complete the upgrade. So, hang tight — it’s going to take just a little longer. Once everything is complete, reboot the system.
sudo reboot
Code language: Bash (bash)

And that’s all. Your system has been successfully upgraded to version 13 (Trixie) from 12 (Bookworm). Log in, and enjoy your newly upgraded Debian system.

Post-Installation Steps
Finally, one last step – it’s time to clean up the leftover Debian 12 packages since we don’t need them anymore. You’ll be asked to confirm the removal—just type “y” to proceed.
sudo apt --purge autoremove
Code language: Bash (bash)

Conclusion
As you can see, upgrading from Debian 12 (Bookworm) to Debian 13 (Trixie) is straightforward when you follow the right steps. Once the upgrade is complete, verify that all services are running correctly and that your applications are functioning as expected.
I tried to make this guide as simple as possible. Thanks for taking the time to read it and for using it. As always, your comments are most welcome.
For additional help, I highly recommend you check the official Debian upgrade documentation.