Tooling

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.

  • 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.conf holds your last-used preset. For fleet flashing, the new --cli mode (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 dd directly 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.xz directly. Closed-source upstream but free; Electron-heavy. The "I have a random .img.xz file" 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. Use lsblk first. 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 --editBOOT_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 .img backups to actual-data size.

Imaging an existing Pi (backups)

  • dd over 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 zram instead, or no swap.
  • Mount /var/log on 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.xz for an Orange Pi / Radxa / custom build: balenaEtcher or USBImager.
  • Windows user, ISO/IMG flexibility: Rufus.
  • Scripted fleet flashing: rpi-imager --cli with 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).

On this page