It’s been a hot minute. A really long one, the last release was over a year ago, and we’re sorry about that.
There is a famous and frequently-cited piece of advice about never rewriting your software from scratch. We read it. We took it seriously. And so we did not rewrite Plexamp from scratch. We merely upgraded every dependency it had, moved the mobile apps onto Expo, replaced Electron with Tauri, and rebuilt the native bridges underneath. Which is a completely different thing, and we’d like that noted.
Well. Almost completely different. The good news is that the app you know is still in there. Most of this is the same code that’s been carrying your music around for years. It’s the ground underneath it that’s new, on every platform at once, and replacing the ground took about as long as you’d expect and then, as these things invariably go, quite a bit longer. If you’ve seen The Raid, picture the stairwell scene, except everybody is a transitive dependency.
Is it ready? Software is never ready, it just gets released. But this time the decision got made for us.
Let’s Encrypt moved their certificate issuance onto two brand new roots, and they’re new enough that they aren’t yet in the trusted root lists that applications carry around, including ours. So when your server renews its certificate, as every server eventually does, Plexamp stops being able to verify it. Your server doesn’t get slow. It doesn’t degrade gracefully or show you a tasteful little warning triangle. It simply ceases to exist, as far as the app is concerned. And the version you’re running right now can’t fix itself, because those roots are baked into the binary (there is a lesson in here about hard-coding trust anchors, and we have absolutely learned it, thank you).
Every renewal quietly moves another one of you into that state. So here we are! Ready or not.
And the timing is, as ever, immaculate: the build goes out and I get on a plane for two weeks. I’m just gonna walk the earth. Like Caine in Kung Fu. (If it breaks, bear in mind that Vincent’s response to that plan was “so you decided to be a bum.”)
Get it
Desktop is a normal release. It’s a brand new app with a new update system, so there’s no beta channel to opt into. Grab it and you’re on it, and it keeps itself up to date from here.
-
macOS: Apple silicon · Intel
Mobile is going out as an open beta on both stores. A rebuild this size wants real soak time on real devices before it becomes the version that lands on everyone’s phone automatically, so anyone who wants it can join now and everyone else gets it when we’re confident.
-
Android: join the Play open beta
Then read the next two sections before you install. Yes, both. Nobody reads release notes, you came straight here for the links, and I’d have done the same. Somewhere between Winamp and now our attention spans were lost, like tears in rain, and I’m not above it: I lost the thread of this very sentence halfway through and went to check Slack. Anyway. They’re short, and they’re the ones that could affect you. One says whether this will even run on your device, the other is a privacy disclosure you should hear from me. Two hundred words, and then you can go back to the scroll, reclining in your chair like everyone in WALL-E, who at least had the excuse of being in space.
Before you update
The floor moved on every platform, so check this first:
-
iOS 16.4 or later (was 15.1).
-
Android 9 or later (was 7.0).
-
macOS 10.15 or later.
-
Windows 10 or later, on x86_64 or ARM64. The ARM64 build is native now.
-
Linux: the AppImage wants a 2024-or-later distro. On anything older, grab the Flatpak, which brings its own runtime and doesn’t care what your system ships. Both come in x86_64 and ARM64.
About download analytics
One thing to know before you install this, and we’d rather say it here than bury it in paragraph nine of something nobody reads.
We rebuilt the download system from scratch. The download system is the part that holds your music. You can probably see why we’re a little tense about it. So this release reports back on downloads in some detail, on desktop and in the mobile beta. It’s on, and there’s no way to turn it off.
Here’s the deal, plainly. It sends the titles of what you download, internal IDs, byte and track counts, failures, and database timings. It also sends your account name, so that when your downloads are misbehaving we can find you in the forums, have an actual conversation about it, and work out what’s different or unusual about your particular setup, rather than staring at an anonymous column of sadness and guessing. It does not send filenames, URLs, tokens, or anything at all about what you play; your 3am listening remains strictly between you and your conscience. Device identifiers are hashed, and the whole lot is deleted after 14 days.
All of it comes out once we’re satisfied the new download system is solid.
If that’s more than you’re comfortable with, genuinely no hard feelings: hold off on this one, or run it and don’t use it to download. We’d much rather you skip it than resent it.
The big stuff
Offline mode. There’s a new Offline switch at the top of the source picker and in the Downloads header, and it turns Plexamp into a downloads-only player. You get a real Library, with Artists, Albums, Complete Albums, Tracks and Playlists, a Home with Recently Downloaded and Recently Added, and search across everything you’ve got. Play queues are built locally, so starting an album or a shuffle-all is instant instead of a spinner, and Up Next works. Airplane mode, the Chunnel, that stretch of highway where your carrier quietly stops pretending: Plexamp behaves exactly the way it does at home. Which in my case means Boxer at 35,000 feet for roughly the thousandth time, followed immediately by Matt Berninger’s solo record, because it turns out I have a type and I have made peace with it.
Your existing downloads come with you. All of this runs on a new storage engine underneath, so the first time you launch this build Plexamp moves your downloads over to it. The Downloads tab shows the progress while it happens. You don’t have to do anything, and you don’t have to re-download a thing.
No more three-day limit. Downloads used to cap out at three days of audio, around 1500 tracks, and the slider’s “Maximum” stop landed on precisely that same ceiling, which made “Maximum” a bit of a lie. Long playlists hit it silently and you’d never know. That’s gone now: a playlist downloads in full however long it is, and so does an artist’s entire discography. Every Greg Laswell record ever pressed, B-sides and all, should you be that sort of person. I am that sort of person.
Keep Played Music. Plexamp can now hang onto the music you actually play, automatically, up to a storage limit you set (Settings > Downloads, all the way to unlimited). Oldest plays get evicted first, and tracks you play offline count too. Think of it as a download list that builds itself out of your own listening, without you ever tapping a download button. Pro tip: if you commute, give it a week and then get on a plane. Everything you actually listen to will already be sitting there. And yes, in my case that is still mostly Death Cab for Cutie, because Ben Gibbard is awesome, that’s why.
Downloads that keep going when you don’t. Downloads now continue after you leave the app, and refresh themselves overnight, so new music in a downloaded playlist or artist shows up without you opening anything. Get interrupted by the wrong kind of network and it picks back up when you’re on a good one. Library downloads also sync newest-first now, so the album you added last night lands before the back catalogue.
Plexamp analyzes tracks itself. Loudness levelling and Sweet Fades need a track’s loudness analysis, and until now that had to come from your server. No analysis, no fades, and a slightly sad little volume jump between tracks. Plexamp now analyzes tracks right on the device, running ahead of your queue, and caches what it finds. Fades and level matching work on anything you play. If your server already did the work, we happily take it and skip ours.
A brand new desktop app. macOS, Windows and Linux aren’t running Electron anymore. Plexamp is now a native window driving the system’s own web engine: much smaller download, a fraction of the memory, and native window handling throughout. Your laptop fan will notice.
Windows media integration. The old desktop app had precisely nothing here: no Now Playing overlay, no system transport, nothing in the volume flyout. Windows finally gets proper media integration with artwork and controls, through the same native layer that drives Now Playing on macOS. Linux MPRIS is native now too, and does seek, position, volume, raise and quit properly, which we know a few of you have been waiting on for an embarrassingly long time.
WASAPI output on Windows. Settings > Playback > Audio Output > Audio Interface can drive your DAC through WASAPI instead of the Windows mixer, take exclusive control of the device, and let you set the buffer size yourself. Nothing else in the path, nothing resampling behind your back. You know who you are, and we made this one for you.
Every speaker in your mesh, configurable from the app. Tap the gear beside a speaker in Multiroom and you get at its actual settings: audio output, streaming, cache, and a graphical parametric EQ you shape by dragging the curve. Tune the speaker in the kitchen without getting off the sofa. There’s also a master volume that moves the whole group while holding their relative balance, all the way down to silence and back, and it works from the Speakers screen, the player slider, keyboard shortcuts, and your phone’s volume buttons.
And one more thing. Settings > Multiroom will calibrate the acoustic latency of your speakers. It plays a chirp, listens for it coming back, and lines them up in the room rather than on the wire. That is the difference between speakers that are technically in sync and speakers that sound right when you’re standing between two of them.
Select a bunch of things at once. In Library, on Artists, Albums or Tracks, open the ••• menu and choose Select Items. Then tap as many as you like and play, shuffle, add them to a playlist, or download the lot. Starflyer 59, Nujabes and Norah Jones in one go, and nobody has to know. Playing a group shows up in Recent Plays with a real name and cover, rather than the deeply informative “Library”.
The car gets your downloads properly. CarPlay and Android Auto used to get a flat Downloads list and not much else. Now they get the whole offline library: Home, Library, Charts with Best Of, and Downloads, browsable with no connection at all, and shuffle-all in one tap. Dead zones stop being an event.
Added
-
Offline mode, with its own Library, Home and search.
-
Keep Played Music, with a storage limit (Settings > Downloads).
-
Background downloads and overnight refresh.
-
Downloads resume automatically when you’re back on an allowed network.
-
Downloading an artist offers their full discography or a shuffle of their top tracks.
-
Multi-select in Library (••• > Select Items): play, shuffle, add to playlist, download.
-
On-device loudness analysis for tracks your server hasn’t analyzed.
-
Albums and artists show download state, with a progress ring while downloading.
-
Album codec badges in large album grids.
-
Charts rows show a download indicator when they’re downloaded.
-
Search your settings: pull down at the top of Settings.
-
Home Screen: add hubs from another server.
-
Multiroom: acoustic latency calibration (Settings > Multiroom).
-
Multiroom: per-speaker settings for output, streaming, cache and a graphical parametric EQ.
-
Multiroom: master volume from the Speakers screen, player slider, keyboard and volume buttons.
-
Car: full offline browsing in CarPlay and Android Auto, with Charts and Best Of.
-
iOS: Shortcuts support. Play albums, artists, tracks, playlists, stations, genres and downloads, control playback, get and set ratings.
-
iOS 26: liquid glass buttons and navigation, and a tab bar that shrinks into a pill with the mini-player as you scroll.
-
Mobile: Bluetooth and lock screen next/previous skip forward and back within audiobooks and podcasts instead of changing tracks, using your Quick Skip Times. Turn it off with Long-form Remote Skip in Settings > Experience > Player.
-
Mobile: seek bar waveform now drawn with Skia, and it morphs between tracks.
-
UltraBlur is rendered on the GPU now, and blended in Oklab instead of sRGB.
-
Visualizers are driven straight from the audio engine, at lower latency.
-
Desktop: brand new app, no longer Electron.
-
Desktop: posters in grids and carousels play on hover.
-
Desktop: updates install in place.
-
Windows: media integration with artwork and transport controls.
-
Windows: WASAPI output with exclusive mode and buffer size (Settings > Playback > Audio Output > Audio Interface).
-
Windows: native ARM64 build.
-
Linux: native MPRIS with seek, position, volume, raise and quit.
-
Linux: Flatpak builds, and ARM64 alongside x86_64 for both AppImage and Flatpak.
-
macOS: Menu Bar Mode, so Plexamp lives in the menu bar instead of the Dock.
-
macOS: closing the window hides Plexamp and keeps it playing.
Fixed
-
Servers could become unreachable with a certificate error after renewing with Let’s Encrypt.
-
Leaving the house could leave Plexamp talking to your home network for up to 20 seconds.
-
Remote control could reach the wrong player when two Plexamps ran on the same computer.
-
Handing off to a remote player was slow, and the old track lingered on screen during the swap.
-
Cellular transcoding didn’t kick in until after the first track.
-
Music didn’t always resume after a phone call.
-
Cast: playback could hang after connecting on a VPN or a shared network.
-
Player: the drop shadow around the artwork was directional and clipped along the top.
-
Volume sliders were hard to grab, and could get nudged while scrolling past them.
-
Smart playlists flashed an empty, broken-looking list after going to an album or artist and back.
-
Reordering very long playlists could get sluggish.
-
Changing an album’s artwork elsewhere didn’t update the player’s poster and background.
-
When your music library is deleted or unshared, Plexamp moves to another one instead of sitting there empty.
-
Offline: downloaded playlists could empty out after a refresh that only removed tracks.
-
Offline: smart playlists that swap tracks left ghost entries behind.
-
Offline: Go to Album and Go to Artist from a downloaded track now open the full page from your server when you’re online.
-
Windows: album art, artist images and media caching didn’t work at all if your user folder name had accented characters in it.
-
Windows, Android, Linux: the media cache evicted by download date instead of keeping what you replay most.
-
Desktop: album art flickered while resizing the window.
Removed
Sonic Sage is gone, along with AI-generated playlist covers and the provider and API key settings behind them.
We gave it a fair run, most recently as a full assistant wired into your library and your player. And it was fine! Occasionally it was even good. But it was never reliable enough to trust with your music, and never interesting enough to earn the trust it was asking for. A box that sometimes returns a great playlist and sometimes returns nonsense isn’t a feature, it’s a slot machine, and we’d rather spend that space on things that do the same thing every single time you touch them.