The My Pod app icon: a white click-wheel iPod on a navy tile, with gold stars and blue music notes above it.

My Pod

Sync music to a classic iPod, on modern macOS. Point it at a folder of music, tick what you want, and it handles the rest — including converting FLAC and anything else the iPod can’t play, so you never have to keep a second, iPod-friendly copy of your library.

macOS 15.7+ Apple silicon MIT licensed Built on libgpod

Download for macOS View source on GitHub How to build it

Version 1.0 · 4.2 MB · Apple silicon · needs one command after unzipping.

The Music tab: a scrollable list of artists with checkboxes, a dot marking artists not yet on the iPod, and a side panel showing sync selection, new music, and conversion status.
Your modern music library
A black iPod with a red click wheel on a wooden desk beside coiled white earphones, its screen showing Now Playing: Espresso by Sabrina Carpenter, from Short n' Sweet, with the album cover displayed.
Your retro music player

What it does

Everything iTunes used to, minus iTunes

Apple dropped iPod support from macOS years ago. My Pod puts a native SwiftUI interface on top of libgpod, so a click-wheel iPod can still be kept in step with a music library on disk.

A sync, start to finish

Nothing is written until you say so

Every sync opens with a plan of exactly what will change. Each phase after that reports its own progress and can be cancelled — cancelling finishes the track in flight and saves what’s already done, so the iPod is never left half-written.

  1. 01

    Review

    What gets added, removed, left alone, and transcoded.

    The sync plan sheet listing 43 tracks to add, 1 to remove, 2,839 unchanged and 43 needing conversion, with the track to be removed named underneath.
  2. 02

    Convert

    Only what isn’t already cached, with a running estimate.

    The converting phase, showing 3 of 43 tracks done and roughly eighteen seconds remaining.
  3. 03

    Copy

    Track by track onto the device, naming each as it goes.

    The copying phase, showing 8 of 43 tracks copied and the track currently being written.
  4. 04

    Save

    Writing the iTunesDB and rendering artwork thumbnails.

    The saving phase, writing the iTunes database and rendering artwork thumbnails.
Sync complete: 43 tracks added, 1 removed, 2,839 skipped, and 2,883 now on the iPod.
Done, with a count of what actually changed.

Playlists

Ordinary files, not a database

Playlists are plain .m3u files in a folder you control, so anything can read them and they outlive the app. Drag tracks across from the library to build one, reorder by dragging, and they sync to the iPod as real playlists.

The Playlists tab: a list of playlists on the left, and the selected playlist's 13 tracks on the right with title, artist and album for each.

The device

What’s actually plugged in

Model, generation, capacity, and where it’s mounted. On an iPod whose original drive has been swapped for a CF card or SSD, the installed capacity and the model’s stock size are both shown, because they disagree.

The General tab, listing device name, model, generation, installed capacity of 255.84 GB alongside a 20 GB stock capacity, track and playlist counts and mount point, with a storage bar along the bottom.

Getting it running

Download it, or build it yourself

The download is self-contained — everything it needs is inside the bundle, so Homebrew isn’t required to run it. Building from source needs Homebrew for glib, but still fetches nothing else: libgpod is vendored in the repository and compiled locally.

Download

Unzip it, drag My Pod.app to Applications, then clear the quarantine flag once. The build is signed ad-hoc rather than with an Apple Developer ID, so without this macOS refuses to open it and claims it’s damaged — it isn’t.

xattr -dr com.apple.quarantine \ "/Applications/My Pod.app"

Or open it the first time through System Settings → Privacy & Security → Open Anyway. Building from source avoids the whole business. Every version lives on the releases page.

Build from source

  • macOS15.7 or later
  • Xcode26 or later
  • Homebrewfor glib and pkg-config
# dependencies brew install glib pkg-config # first build only — generates libgpod's # configure script brew install autoconf automake libtool \ gtk-doc intltool # build and launch git clone https://github.com/studio-rischio/My-Pod.git cd My-Pod ./build.sh

If the iPod doesn’t show up, put it in disk mode

My Pod finds the iPod the moment macOS mounts it as a disk, so a click-wheel iPod has to be in disk mode to be seen at all. That used to be the Enable disk use checkbox in iTunes — and since modern macOS dropped iPod support, forcing disk mode by hand is what replaces it.

  1. If the iPod has a Hold switch, slide it on, then back off.
  2. Hold Menu and the centre button together until the Apple logo appears — roughly 6 to 10 seconds.
  3. The moment the logo shows, hold the centre button and Play/Pause until the screen reads Disk Mode or OK to disconnect.

It stays in disk mode until it’s reset again, so you can sync as normal from there. Eject it in My Pod before unplugging, then hold Menu and the centre button once more to boot it back to the music menu. Plenty of iPods mount on their own, having had disk use switched on by whatever last synced them — if yours already appears, skip all of this.