finale

A simple Jellyfin music player.

macOS iOS Android Linuxbeta Webbeta

What it is

finale is a small client for your Jellyfin music library. No social layer, no recommendations, no clutter — just your library, search, and playback.

It exists because the Jellyfin clients I tried did more than I wanted. This one tries to do less.

Features

Browse & search

Searchable artist and album pages, with detail views for each.

Playback

Gapless audio backed by a system audio service, with repeat modes and a queue.

Playlists

Create, edit, and delete Jellyfin playlists from inside the app.

Now playing

A full-screen player with the current track, queue, and quick controls.

Recently played

Pick up where you left off without digging through the library.

Remote-friendly

Connects to your Jellyfin server over LAN or Tailscale.

Try it in the browser beta

There's a hosted web build at /app/. It runs in any modern browser and connects directly to your Jellyfin server — your library and listening history stay between your browser and your server.

Your Jellyfin server has to be reachable over HTTPS from your browser. The cleanest way to do that without putting Jellyfin on the public internet is Tailscale.

  1. Install Tailscale on the device running Jellyfin and on every device you want to play music from.

    If you don't have a tailnet yet, sign up at tailscale.com — the free plan is enough.

  2. Expose Jellyfin over HTTPS via Tailscale Serve. On the Jellyfin host:
    sudo tailscale serve --bg --https=443 http://localhost:8096

    This gives Jellyfin a real Let's Encrypt cert at https://<host>.<tailnet>.ts.net. The hostname only resolves on devices logged into your tailnet — it isn't public.

  3. Open the web player at /app/ from a tailnet-connected device. On the setup screen, enter your Jellyfin URL — the https://<host>.<tailnet>.ts.net one, no port — and sign in.

Caveats: clearing your browser's site data resets finale's cached library info — it'll reload it from your server next time. And any device not on your tailnet will load this page but won't reach Jellyfin.

Download

Latest builds from CI. Refreshed every time the release branch is updated.