Use your terminal to burn images fast and easy with dd. I do a lot of professional and hobby development for projects using devices such as Raspberry Pi, Orange Pi, Libre Computer, Tinker Board, etc. I run across a lot of tutorials with people downloading and using big GUI apps with clunky drag and drop interfaces to burn images.
It’s one command in your terminal. Technically, it’s three, but I don’t count listing and unmounting as the final act of burning.
§2026 Update
This one has aged well. dd and diskutil work the same on Apple Silicon Macs as they did on the Intel Mac I wrote this on, and the three steps below are unchanged. A few things to add for 2026.
macOS will likely ask permission the first time Terminal writes to an SD card. Since the privacy changes that landed around Catalina, the first dd to a removable volume can trigger a “Terminal would like to access files on a removable volume” prompt. Allow it, or pre-approve Terminal under System Settings, Privacy and Security. Otherwise the write fails with a permission error that looks more confusing than it is.
There is still no progress bar. BSD dd on macOS does not support the status=progress flag you may have seen in GNU dd on Linux. Control-T remains the way to get a status line mid-write, as noted below.
On whether to just use a GUI now: the official Raspberry Pi Imager has gotten genuinely good, and for a Raspberry Pi specifically it is hard to argue against. It downloads the image, verifies the write, and can preconfigure Wi-Fi, SSH, and your hostname for a headless first boot. For anything that is not a Pi, or when I already have the raw image in hand, dd is still the fastest and most universal option, and it works the same on every Unix-like machine I touch.
Original article below. Everything from here down is the post as originally written. The 2026 Update above covers what’s changed since.
§1 - List Disks
Insert your SD card and use the diskutil command to list all your drives.
diskutil list
You are going to want to stay away from disk0 and disk1. You don’t want to kill your hard drive. Also, watch out for other attached storage. I can see my 32g mounted as /dev/disk3.
§2 - Unmount Disks
Unmount the SD card. In my case, it’s /dev/disk3. If you have additional attached storage, your SD card might be disk 4, 5, or higher.
diskutil unmountDisk /dev/disk3
§3 - Burn Image
The last step is the fantastic little utility dd. dd copies any file to almost anywhere. We can use it to stream the raw bytes from the image directed to our unmounted disk. On a Mac, the raw disk is accessed with an r in front of the device name. Raw access to my /dev/disk3 is /dev/rdisk3. Give three arguments.
| Arg | Description / Value |
|---|---|
| if= | In file: Specify the path to the file you want to send |
| of= | Out file: Specify the path to the file to be written. Yes, the device is a file. Remember, in Unix/Linux/Mac everything is a file. So /dev/rdisk99 is a file (it’s a device, but we operate on it as a file) |
| bs= | Block size: dd streams the data it reads from if= in chunks. Depending on the capabilities of the device writing larger chunks will speed up the write. |
Example dd command to burn images:
sudo dd if=Armbian.img of=/dev/rdisk3 bs=5m
I find that a block size of 5m is the sweet spot for my card reader and the SD cards I use (SanDisk Ultra 32G).
You need to use sudo as only a privileged user can write directly to a device in this manner, which is good since you can easily overwrite your hard drive on disk 0 or 1.
Wait for dd to finish or hit Control-T from time-to-time for some status.
An 8GB image takes about 10-15 minutes on my workstation depending on the quality of the SD card. Cheap or damaged cards will take a very long time to write.
I have tried a few of the full GUI apps for burning but don’t seem to get the speed and control of just typing a few commands.
§Resources
- dd on Wikipedia
- diskutil official Manpage
- Everything is a file / “Everything is a file descriptor”
- How do you monitor the progress of dd?
- Libre Computer Site
- Tinker Board Site
- Orange Pi Site