Don't worry: the web installer does most of the work. Set aside roughly 30โ45 minutes. You don't need any prior knowledge โ just a suitable Pixel, a USB cable and a computer.
A supported Google Pixel (see below). Important: don't buy a carrier-branded/"carrier-locked" model โ that blocks unlocking.
A machine (Linux, Windows or macOS) with a current Chromium-based browser (e.g. Chrome, Edge, Brave โ needed for WebUSB; Firefox won't work), plus a working USB-C data cable.
Work through the steps unhurried. Charge the Pixel above 50%. Don't unplug anything during the installation.
GrapheneOS only supports Google Pixel devices โ because of their hardware security. The newer the device, the longer you'll receive security updates.
The official route is the web installer at grapheneos.org/install/web. It walks you through almost everything automatically. Prefer to do it by hand? Then jump to the manual command-line installation further down.
Set it up on first boot and connect to Wi-Fi (for updates). Then open Settings โ About phone and tap the build number 7 times until "You are now a developer" appears.
Under Settings โ System โ Developer options, enable the "OEM unlocking" option. If it can't be turned on (greyed out), the device is unfortunately carrier-branded and unsuitable.
Turn the device off. Then hold Volume Up + Volume Down + Power together until the fastboot menu appears. Now connect the Pixel to the computer via USB.
On the computer, open grapheneos.org/install/web in a Chromium-based browser (e.g. Chrome, Edge, Brave). Read along with the steps there โ the guide on this website complements them but does not replace them.
In the installer, click "Unlock bootloader" or run the command shown. Confirm on the Pixel using the buttons. This wipes the device. Afterwards the bootloader is open for the installation.
In the installer, click "Download & verify release" and then "Flash". The installer downloads the matching factory image, verifies it cryptographically and writes it. This takes a few minutes โ don't unplug anything.
After flashing, run the "Lock bootloader" step. This activates verified boot with your system and protects against tampering. Do not skip this step.
Choose "Reboot" and unplug the USB. GrapheneOS starts up. Follow the initial setup and set a strong PIN/passphrase. Done โ you now have a hardened, Google-free system.
grapheneos.org. Never via third-party mirrors, YouTube links or "ready-made" devices from unknown sources.
The web installer above is the best route for almost everyone. If you'd rather have full control, can't use WebUSB, or are flashing your own builds, go with the manual installation via the terminal. The result is identical โ you just type the steps yourself.
Use the same terminal window for the entire installation. On Windows, open a regular (non-administrative) PowerShell โ not the old Command Prompt. Remove the interfering curl alias once:
Windows only (PowerShell)Remove-Item Alias:Curl
You need a current fastboot (at least version 35.0.1). On Arch the package is enough; otherwise use Google's official standalone platform-tools.
sudo pacman -S android-tools android-udev
Debian / Ubuntu
sudo apt install libarchive-tools android-sdk-platform-tools-common
curl -O https://dl.google.com/android/repository/platform-tools_r35.0.2-linux.zip
bsdtar xvf platform-tools_r35.0.2-linux.zip
export PATH="$PWD/platform-tools:$PATH"
macOS
curl -O https://dl.google.com/android/repository/platform-tools_r35.0.2-darwin.zip
tar xvf platform-tools_r35.0.2-darwin.zip
export PATH="$PWD/platform-tools:$PATH"
Windows (PowerShell)
curl -O https://dl.google.com/android/repository/platform-tools_r35.0.2-win.zip
tar xvf platform-tools_r35.0.2-win.zip
$env:Path = "$pwd\platform-tools;$env:Path"
Tip: Check the current version & checksums on the official CLI guide โ the version number here is just an example.
It must be at least 35.0.1:
fastboot --version
Turn the device off, then hold the Volume Down button while powering on until "Fastboot Mode" with a red warning triangle appears. Do not press "Start". Now connect it via USB directly to a port (no hub).
Linux note: if the connection is blocked, fwupd can interfere โ stop it temporarily with sudo systemctl stop fwupd.service.
On the device, confirm with the volume buttons and select with Power. This erases all data.
fastboot flashing unlock
First download the signing key, then your device's image along with its signature. Replace DEVICE (e.g. tegu for the Pixel 9a) and VERSION with the values from the releases page.
curl -O https://releases.grapheneos.org/allowed_signers
curl -O https://releases.grapheneos.org/DEVICE-install-VERSION.zip
curl -O https://releases.grapheneos.org/DEVICE-install-VERSION.zip.sig
Verify the signature (very important!):
Linux / macOSssh-keygen -Y verify -f allowed_signers -I contact@grapheneos.org \
-n "factory images" -s DEVICE-install-VERSION.zip.sig < DEVICE-install-VERSION.zip
It worked if Good "factory images" signature for contact@grapheneos.org appears. If it doesn't: do not continue and download again.
Extract the archive, switch into it, and run the flash script. The script flashes firmware + OS and reboots the device several times automatically โ don't unplug anything.
Linuxbsdtar xvf DEVICE-install-VERSION.zip
cd DEVICE-install-VERSION
bash flash-all.sh
macOS
tar xvf DEVICE-install-VERSION.zip
cd DEVICE-install-VERSION
bash flash-all.sh
Windows (PowerShell)
tar xvf DEVICE-install-VERSION.zip
cd DEVICE-install-VERSION
./flash-all.bat
This activates verified boot with your system. Confirm on the device โ this erases all data again. Never skip this step.
fastboot flashing lock
Boot GrapheneOS with Power and "Start" selected. During the initial setup, leave the pre-selected "Disable OEM unlocking" switch enabled โ this locks the bootloader against being unlocked again. Optionally, you can verify the installation with the Auditor app (hardware attestation) or via the verified-boot key hash shown on screen.
fastboot erase avb_custom_key.
System updates run automatically in the background. It doesn't hurt to take a look under Settings โ System โ Updates.
A 6-digit PIN is the minimum; a passphrase is better. It also protects the device encryption on reboot.
The bundled browser Vanadium is hardened and the recommended default choice.
Now you decide where apps come from: F-Droid, Aurora or Obtainium. โ Go to the software page
The device is most likely carrier-branded. Such models can't be unlocked. Solution: use an open (SIM-/carrier-unlocked) Pixel.
Try a different USB cable and a direct USB port on the machine (no hub). On Windows, restart the browser if needed. Chrome/Edge requires WebUSB โ Firefox doesn't work reliably for the web installer.
As long as you've re-locked the bootloader (step 7), everything is fine. A brief GrapheneOS splash screen is normal.
No data loss needed: you can reopen the installer and run just the lock step. For security reasons, be sure to do this.