Pi Imaging & Flashing Tools
Raspberry Pi Imager, balenaEtcher, Rufus, dd, USBImager — get an OS onto an SD card or NVMe.
The first 5 minutes of any Pi project: pick an image, flash a card, boot. The right tool depends on host OS and how much "first-boot config" you want pre-baked. For the OS image itself see Pi OS Distributions; for what to plug the SD card into see Pi Models.
The pickers (recommended)
- ★ Raspberry Pi Imager (rpi-imager) — Pi Foundation's official tool; macOS / Windows / Linux / Pi. Auto-fetches the latest image list from a maintained catalog (Pi OS, Ubuntu, MainsailOS, OctoPi, HAOS, RetroPie, RecalBox, batocera, more), verifies SHA256, and offers a first-boot config dialog: hostname, SSH on, SSH key, user/password, locale/timezone, Wi-Fi SSID + PSK. The right default in 2026 — there is no reason to use anything else for official Pi images.
- ★ rpi-imager preconfig JSON —
~/.config/Raspberry Pi/Imager.confholds your last-used preset. For fleet flashing, the new--climode (since 1.9) accepts a JSON config so you can script per-device hostnames + keys. - rpiboot — for Compute Module 4 / 5 over USB; treats the CM as a USB mass-storage device so you can
dddirectly to its eMMC. Pi-only path; required for CM with eMMC.
Generic image flashers
For non-Pi-curated images (Armbian for an Orange Pi, custom OctoPi build, your own Yocto image).
- ★ balenaEtcher — macOS / Windows / Linux; clean UI, validates writes, handles
.img.xzdirectly. Closed-source upstream but free; Electron-heavy. The "I have a random.img.xzfile" tool. - USBImager — tiny, fast, FOSS (MIT) cross-platform GUI. The lightweight Etcher alternative.
- Rufus — Windows only; flashes ISOs and IMGs; the de-facto Windows tool. FOSS (GPLv3).
- dd — every Unix has it;
dd if=image.img of=/dev/sdX bs=4M status=progress. Don't get the device wrong. Uselsblkfirst. No verification step. - Ventoy — install once on a USB stick, then drop ISOs/IMGs onto it; boot menu picks at runtime. Useful for x86 + ARM dual-purpose flash drives, less so for Pi (which boots from SD/NVMe directly).
SD-card / SSD prep
- GParted / KDE Partition Manager — sometimes you need to wipe an SD card that has multiple partitions before flashing.
- SD Card Formatter (SD Association) — Windows / macOS GUI; canonical "fully reformat SD" tool. Useful when an SD card is acting weird.
wipefs -a /dev/sdX— Linux command to clear partition signatures before re-flashing.
Booting from SSD / NVMe (Pi 4 / Pi 5)
- ★ Pi 5 + M.2 HAT+ + NVMe — flash NVMe directly via Pi Imager (with the NVMe in a USB-NVMe enclosure), then move into the HAT+. After first boot run
sudo raspi-config → Advanced → Boot Order → NVMe(Pi 5 firmware supports this natively since mid-2024). - Pi 4 USB SSD boot — Pi 4 firmware supports USB-SSD boot since 2020; flash the SSD via USB and update bootloader:
sudo rpi-eeprom-config --edit→BOOT_ORDER=0xf41. rpi-clone— clone a running SD-card system to a fresh SSD/NVMe in one command. Useful for "I built it on SD; now move it to NVMe."- PiShrink — shrink Pi
.imgbackups to actual-data size.
Imaging an existing Pi (backups)
- ★
ddover the network:ssh pi@host "sudo dd if=/dev/mmcblk0 bs=4M | gzip" > backup.img.gz. - PiShrink — post-process backups to reduce size.
- Win32DiskImager — Windows tool to read SD → IMG and back. FOSS (GPL).
- Apple Pi Baker — macOS GUI for read/write/clone with compression. Free.
Cloning a Pi to many Pis
- Pi Imager
--cli+ a JSON config per device — the modern path. - PXE / netboot Pi 4 / Pi 5 — Pi Foundation maintains a netboot server reference. For multi-Pi flashing this is much faster than re-flashing SD cards individually. See Pi Fleet Management.
- balenaOS + balenaCloud — flash once, then push image updates over the air. See Pi Fleet Management.
- Ansible against a fleet — flash the OS, then config-as-code from there. See Pi Fleet Management.
SD-card lifespan honesty
- Industrial-grade SD cards (Sandisk High Endurance, Samsung Pro Endurance, Sandisk Industrial XI) — 10x the write endurance of consumer cards. ~$15 for 64 GB.
- Boot from NVMe / USB SSD instead — kills the SD-corruption class of bug entirely. The right answer for any always-on Pi (Klipper, Home Assistant, Pi-hole). See Pi Models.
- Avoid swap on SD. Configure
zraminstead, or no swap. - Mount
/var/logon tmpfs for read-mostly appliances — see DietPi / Pi-hole guides.
License / pricing
- All tools listed are free.
- Pi Imager and Etcher are gratis closed-source (Etcher) or FOSS (Imager: Apache 2.0).
- balenaCloud is the paid commercial fleet manager; the balenaEtcher flasher itself is free regardless.
Pick this if…
- Default flash an official Pi image: Raspberry Pi Imager.
- Random
.img.xzfor an Orange Pi / Radxa / custom build: balenaEtcher or USBImager. - Windows user, ISO/IMG flexibility: Rufus.
- Scripted fleet flashing:
rpi-imager --cliwith a JSON config, or netboot. - Compute Module with eMMC: rpiboot.
- Backing up a Pi to image:
dd | gzip+ PiShrink. - Cloning SD → NVMe on the same Pi: rpi-clone.
- You want to stop dealing with SD-card death entirely: boot from NVMe (Pi 5) or USB SSD (Pi 4).