Google Chrome is not in the Debian package archives, and it never will be. The browser is proprietary, so Google distributes it from its own servers: either as a standalone .deb package or through an APT repository that Google maintains. Both routes end at the same place, because the .deb quietly configures that repository for you during installation.
This guide shows both ways to install Google Chrome on Debian, what the package actually changes under /etc/apt (it is no longer the google-chrome.list file older tutorials mention), the repository signing errors that catch people on minimal installs, and clean removal. It replaces our earlier Debian 11 and 10 instructions, since Debian 11 exits LTS support at the end of August 2026. If the system itself is brand new, the Debian 13 post-install checklist covers the rest of the desktop. Every command below was run on Debian 13 (trixie) and Debian 12 (bookworm) in August 2026, with Chrome 151 as the current stable channel.
Install Google Chrome From the .deb Package
The quickest route for a single desktop. Google publishes a permanent URL for the current stable build, the same file the Download button on google.com/chrome serves, so this command always fetches the latest release:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
The download is about 140 MB. If wget is missing (Debian netinst and cloud images often skip it), pull it in first with sudo apt install -y wget. Then install the package through apt so dependencies resolve automatically:
sudo apt install -y ./google-chrome-stable_current_amd64.deb
The leading ./ matters. It tells apt to treat the argument as a local file instead of a repository package name. On a minimal Debian 13 install this drags in roughly 100 dependency packages (fonts, GTK libraries, X utilities); a full desktop already has most of them. The tail of the run confirms the browser registering itself with update-alternatives:
Setting up google-chrome-stable (151.0.7922.137-1) ...
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode
Confirm the installed build:
google-chrome --version
The version string matches the current stable channel:
Google Chrome 151.0.7922.137
The downloaded .deb has done its job and can go:
rm google-chrome-stable_current_amd64.deb
What the Package Adds to Your APT Sources
Installing the .deb does more than unpack a browser. Its post-install script drops a repository definition into /etc/apt/sources.list.d/ so future Chrome updates flow through apt. Check what it wrote:
cat /etc/apt/sources.list.d/google-chrome.sources
Current packages write the modern deb822 format. Older guides, including earlier versions of this one, show a one-line google-chrome.list file; that format is gone:
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# Changes to this file will not be preserved.
# This file will not be recreated if removed.
X-Repolib-Name: Google Chrome
Types: deb
URIs: https://dl.google.com/linux/chrome-stable/deb/
Suites: stable
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/google-chrome.gpg
Two details matter here. The signing key lands at /usr/share/keyrings/google-chrome.gpg and is scoped to this one repository through the Signed-By field, so nothing touches the system-wide trusted keys. And the file is machine managed: your edits get overwritten, but if you delete it, the package will not recreate it on its own.
The package also installs a daily cron job at /etc/cron.daily/google-chrome, controlled by two switches:
cat /etc/default/google-chrome
Both default to keeping the repository alive across upgrades:
repo_add_once="false"
repo_reenable_on_distupgrade="true"
The repository carries more than the stable build. Search it and the pre-release channels show up too:
apt-cache search google-chrome
Five packages come back:
google-chrome-beta - The web browser from Google
google-chrome-canary - The web browser from Google
google-chrome-repo - The web browser from Google (repository configuration)
google-chrome-stable - The web browser from Google
google-chrome-unstable - The web browser from Google
The beta, unstable and canary channels install side by side with stable, each with its own binary and profile directory. Useful when you want to check a rendering or extension change one release early without giving up your daily browser.
Add the Google Repository Manually
The .deb route fits a single machine. For golden images, preseeded installs or a fleet managed with Ansible, adding the repository first is the cleaner pattern: the browser then installs like any other package, with no file download step to script around.
Download Google’s signing key to a keyring path apt can reference. No gpg conversion is needed, because apt on Debian 13 and 12 reads armored keys directly:
sudo wget -qO /usr/share/keyrings/google-chrome.asc https://dl.google.com/linux/linux_signing_key.pub
Create the repository definition:
sudo vim /etc/apt/sources.list.d/google-chrome.sources
Paste the deb822 stanza, matching what the official package would write, with Signed-By pointing at the key you just saved:
Types: deb
URIs: https://dl.google.com/linux/chrome-stable/deb/
Suites: stable
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/google-chrome.asc
Refresh the package index. The new source answers with a small InRelease file:
sudo apt update
Look for the dl.google.com line in the output:
Get:7 https://dl.google.com/linux/chrome-stable/deb stable InRelease [2548 B]
Get:8 https://dl.google.com/linux/chrome-stable/deb stable/main amd64 Packages [1413 B]
Install the browser from the repository:
sudo apt install -y google-chrome-stable
One behavior to expect: the package’s post-install script replaces your hand-written .sources file with its own managed copy and points Signed-By back at its bundled google-chrome.gpg keyring. The manual definition only needs to survive long enough for the first install. Google’s tooling takes over from there, which is fine, because the managed file targets the same repository.
Errors You Can Hit Along the Way
Both of these came up while testing on a minimal Debian 13 system, and both trace back to instructions written for older releases.
gpg: command not found
Older guides pipe the signing key through gpg --dearmor before saving it. Debian 13 netinst and cloud images do not ship gnupg, so that pipeline dies immediately:
bash: line 1: gpg: command not found
Two fixes. The better one is skipping the conversion entirely and saving the armored key as an .asc file, exactly as shown in the manual method above; apt handles armored keyrings natively on every Debian release this guide covers. If you specifically want binary keyrings, install the tool first:
sudo apt install -y gnupg
The repository is not signed / Missing key to verify signature
Debian 13 verifies repository signatures with sqv from the Sequoia project, and its wording looks nothing like the apt-key era errors. This capture came from following a legacy tutorial, hence the older linux/chrome/deb repository URI:
Err:7 https://dl.google.com/linux/chrome/deb stable InRelease
Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key 0E225917414670F4442C250DFD533C07C264648F, which is needed to verify signature.
Error: The repository 'https://dl.google.com/linux/chrome/deb stable InRelease' is not signed.
The message means the keyring file named in Signed-By is missing, empty, or does not contain Google’s key. A failed gpg --dearmor pipe is the usual cause, since sudo tee still creates a zero-byte file when the command feeding it errors out. Re-download the key to the exact path your .sources file references, confirm it is non-empty with ls -l, and run sudo apt update again.
Launch and Verify Chrome
Start the browser from the applications grid (the launcher registers during install) or from a terminal:
google-chrome
First launch offers to make Chrome the default browser, then lands on the New Tab page:

To see exactly what is running, type chrome://version in the address bar. The page reports the build, the x86_64 architecture and the profile path under ~/.config/google-chrome:

That profile path is where bookmarks, cookies, extensions and saved sessions live, which matters again at removal time.
Keep Chrome Updated
There is no separate updater on Linux. Chrome updates ride the normal apt flow alongside everything else on the system:
sudo apt update && sudo apt upgrade -y
To check where the installed build came from and whether a newer candidate is waiting, query apt policy:
apt policy google-chrome-stable
Installed and candidate versions match when you are current:
google-chrome-stable:
Installed: 151.0.7922.137-1
Candidate: 151.0.7922.137-1
Version table:
*** 151.0.7922.137-1 500
500 https://dl.google.com/linux/chrome-stable/deb stable/main amd64 Packages
100 /var/lib/dpkg/status
The flow is nearly identical on Debian’s derivatives; we keep separate walkthroughs for Chrome on Ubuntu and Chrome on Linux Mint covering their quirks. RPM systems get a yum repository instead, covered in the Chrome on Fedora and CentOS guide.
Remove Google Chrome Cleanly
Purge the package together with its configuration:
sudo apt purge -y google-chrome-stable
The purge is thorough. It removes the browser, the google-chrome.sources repository file, the keyring and the daily cron job in one pass, so no orphaned Google repo keeps answering apt update afterwards. What survives is your profile data under ~/.config/google-chrome. Delete it too if the account is being handed over or you want a genuinely fresh start on reinstall:
rm -rf ~/.config/google-chrome
If Chrome is leaving because you are rethinking the browser choice entirely, Debian ships Firefox ESR in its own archives, and our Microsoft Edge vs Chrome comparison breaks down the closest Chromium-based alternative.