
Finamp is a free Jellyfin music player for Android, iOS and Desktop. It allows you to stream and download the music you own. It has a modern but thought-through design, a ton of features, is customizable, and respects your privacy!
[!IMPORTANT] You need access to a Jellyfin server or you won't be able to use Finamp at all.
(Navidrome and Lyra also work, but aren't actively supported)
Finamp comes with a bunch of features, but here are the ones we think are most interesting:


Have a simple question about Finamp, or struggling with setting up your Jellyfin correctly?
Just want someone to talk to and share your favorite music with?
Aside from using the Issues and Discussions functionality here on GitHub, you could also join our Finamp Beta Discord server!
We post release notes and announcements there too, and you'll likely get a reply more quickly there compared to GitHub.
.apk: see the latest GitHub releaseSince the app is not available via the Microsoft Store yet, you'll have to install a self-signed certificate before you can install the .msix file attached to each release.
You'll only have to do this once!
.msix file from the release page, then navigate to the folder you downloaded it to in File ExplorerFinamp under Signature list (or Embedded Signatures), then click DetailsLocal Machine, click Next, then Place ... in the following store and browse to Trusted People, then Next and FinishAlternatively, you could download the plain zip archive and manually drag it into the correct place. This is however not a portable installation, since it will still create the database in your user directory.
.app: see the GitHub releaseJust like any FOSS software Finamp also relies on your contributions! If you are interested you can consult the Contribution Guidelines to get started. Anything helps!
If you have any questions, just reach out to us on GitHub or Discord (#contributing)`!
You can also help out by translating Finamp using our weblate page. Here is the current state of translations:
Contributions and donations of any kind are welcome, but you can't donate to Finamp directly. So, if you see some new feature or fix in the release notes that you like, feel free to check if the person that contributed that accepts donations!
Most. Generally speaking if Jellyfin and your device support a format, Finamp will too! In case a format doesn't work you can always enable transcoding (Finamp can transcode lossless transcoding to FLAC!).
Yes! Both are supported, but if you want to use Android Auto, you'll have to install the app via the Play Store.
Yes. Finamp is a tool that lets you interface with a Jellyfin server. Finamp does not come with any music, and will not connect to streaming services other than Jellyfin.
You will need to bring your own media and add it to Jellyfin, by purchasing music online or ripping discs. This often also directly supports your favorite artists!
If you encounter any errors, issues, accessibility problems or the likes please check our issue tracker first, and open a new issue if there isn't one already.
Name source: https://www.reddit.com/r/jellyfin/comments/hjxshn/jellyamp_crossplatform_desktop_music_player/fwqs5i0/
On Linux, Finamp registers itself with the DBus system, which means you can send messages locally to Finamp! This system allows you keep Finamp's color theme up to date with your dynamic color theme without restarting the app. There are two color related "endpoints" you can call:
gdbus call \
--session \
--dest 'com.unicornsonlsd.FinampSettings' \
--object-path '/com/unicornsonlsd/Finamp' \
--method 'com.unicornsonlsd.Finamp.updateAccentColor'
gdbus call \
--session \
--dest 'com.unicornsonlsd.FinampSettings' \
--object-path '/com/unicornsonlsd/Finamp' \
--method 'com.unicornsonlsd.Finamp.setAccentColor' \
'#ff0000' # you can also send "default" to clear the accent color
1 activity
Also affected, and I can confirm the rebuilt 0.9.25 assets from flathub/com.unicornsonlsd.finamp#67 do not resolve it. A few data points that may help narrow it down.
Environment (differs from the reports above)
d7ea639 — i.e. the merge of flathub#67 (07a44ed) — Version 0.9.25-beta, build 126b8478e3), which ran for 15h uninterrupted immediately before the updateBoth existing reports are Ubuntu 24.04, so this isn't distro-specific.
Why flathub#67 was unlikely to fix this
That PR changes exactly two lines — the sha256 of the x64 and arm64 tarballs for the same 0.9.25-beta tag. The manifest, the runtime (org.freedesktop.Platform//25.08) and the module list are all untouched; it just re-points at re-uploaded release assets. So unless the re-upload was genuinely rebuilt with a different toolchain/plugin set, the same binary defect ships again — which is consistent with what @felix920506 observed on 07a44ed and what I see here.
For contrast, the equivalent June regression (#1655) was fixed by flathub#64, which was the same "re-roll the artifacts" move — that one worked because the artifacts actually changed. It may be worth verifying that the 0.9.25 re-upload produced a materially different binary rather than a repackage.
The abort point varies between runs
This is the part I haven't seen mentioned. It's SIGABRT (confirmed via coredumpctl), but finamp-logs.txt stops at a different place on each launch.
Run 1 reached:
[MusicPlayerBackgroundTask/INFO] Starting audio service
[MusicPlayerBackgroundTask/INFO] Initializing media-kit for Windows/Linux
[VolumeNormalization/INFO] non-Android base volume gain factor: 1.9952623149688795
[QueueService/FINE] Loop mode set to FinampLoopMode.none
[QueueService/INFO] Restored loop mode to FinampLoopMode.none from settings
Run 2, ~15s later, stopped earlier:
[PlayOnService/INFO] Attempting to start PlayOn listener
[Main()/INFO] Setup PlayOnService
Run 1 also emitted an unhandled SocketException on /var/run/dbus/system_bus_socket (battery_plus → UPowerClient → KeepScreenOnHelper, main.dart:167); run 2 aborted before reaching it. That D-Bus exception is a red herring — the sandbox has no --socket=system-bus, and it appears on working 0.9.24 too. But the process dying at a different point on each launch suggests the abort is triggered asynchronously during plugin initialisation rather than at one deterministic call site.
The assertion itself is the engine's bundled libc++ detecting that something in the process replaced operator new(size_t) without also providing operator new(size_t, nothrow_t). Since it consistently appears immediately after package:media_kit_libs_linux registered., the newly bundled media_kit/libmpv shared objects look like the first place to check.
Workaround for anyone landing here — pin to 0.9.24:
sudo flatpak update -y --commit=b8478e3beef29febc13f34f03139b55230ad50ec6f7d91f2984ba829c32b6a3d com.unicornsonlsd.finamp
flatpak mask --system com.unicornsonlsd.finamp
Remember to flatpak mask --system --remove com.unicornsonlsd.finamp once a fix lands.