Swing Music
Self-hosted music player with a modern interface
Swing Music is a beautiful, self-hosted music player and streaming server for your local audio collection. It automatically organizes albums, artists, and folders and includes a polished web player.
Key features
- Modern web player
- Automatic library organization
- Folder browsing
- Single binary option
Pros & cons
Strengths
- Attractive interface
- Easy to deploy
Trade-offs
- Younger project
- No multi-user roles yet
Swing Music replaces
Last reviewed Sep 13, 2026 · 784 words
Swing Music has the nicest web player of any self-hosted music server I have run and no Subsonic API, and the second fact decides who should install it. Without Subsonic, none of the dozen mature phone apps that work with Navidrome will talk to it; your clients are the web interface and the project's own Android app. If you listen at a desk, on a TV browser, or on Android, that is fine and the interface will make you happy. If you want an iPhone app, a car head unit, or a Symfonium library, look elsewhere first.
Install: one port, two mounts
services:
swingmusic:
image: ghcr.io/swingmx/swingmusic:latest
ports:
- "1970:1970"
volumes:
- /srv/music:/music:ro
- ./config:/config
restart: unless-stopped
Port 1970 is the default, the music mount can be read-only, and the config directory holds the SQLite database, the image cache and settings. First launch walks you through creating an account and picking root directories, then a scan runs in the background. There is also a single-binary build for people who would rather not run Docker on a laptop; it takes --host and --port flags and stores its data next to the binary. The 256 MB of RAM the catalogue lists is realistic for a library of a few thousand albums; the thumbnail cache is the only thing that grows.
Folders are a first-class view, which changes the tagging story
Most music servers show you artists and albums and hide the filesystem, so an untagged folder of live bootlegs becomes a mess called "Unknown Artist". Swing Music keeps the folder browser as a top-level view alongside albums, artists and playlists. A half-tagged collection is therefore usable on day one, which is unusual, and the ordinary advice to fix your tags before you install becomes advice to fix them at your leisure.
It still reads tags for everything else. Album grouping uses album and album-artist fields, so compilations need ALBUMARTIST=Various Artists or they scatter, and embedded art is preferred over folder images. Genre and year drive the discovery sections on the home page. Lyrics from embedded tags and .lrc sidecar files display in the player, synced where the file supports it.
The interface is the reason to run it
The home page mixes recently added, recently played, and "because you listened to" rows, with proper artist pages including similar artists and a discography split by album, single and compilation. The now-playing view is full-screen art with a queue you can reorder. Keyboard shortcuts work, search is fast, and the whole thing renders well on a phone browser, which is how many people use it before the Android app. Playlists, favourites and listening history are per user.
Nothing here is a novel feature; the difference is that it is polished in a way self-hosted music servers rarely are, because the project has spent its effort on the front end rather than on client compatibility.
What it does not do yet
Accounts exist, but roles are basic: there is an admin who can manage users and rescan, and everyone else. There is no per-library access, so a shared family server cannot hide one person's collection from another. Transcoding is limited compared with Navidrome, which matters on mobile data with a lossless library. Scrobbling to Last.fm and similar services is newer and less proven. And the project began in 2022, so expect the scan logic and the database schema to keep changing between releases; take a copy of the config directory before each upgrade.
Against Navidrome and Jellyfin
Navidrome is the default for a reason: the Subsonic ecosystem gives it clients on every platform, transcoding profiles per user, and years of stability. Jellyfin covers music adequately if you already run it for video, though its music interface is the weakest part of the product. Swing Music is the choice for someone whose main listening is a browser or Android and who cares how the player looks. The library layout is the same for all three, so switching later costs a rescan, not a re-tagging.
What I'd do
If your library is on a NAS and you listen mostly on a laptop or Android phone, run Swing Music and enjoy it; the install is 10 minutes and it will be the server you show people. If any iPhone, car or smart speaker is involved, run Navidrome, and if the interface bothers you, run both against the same read-only music mount. They do not conflict, the second one costs 128 MB, and you will find out within a week which one you open.
Compare Swing Music
21 head-to-head comparisons.
- Swing Music vs Navidrome
- Swing Music vs Koel
- Swing Music vs Feishin
- Swing Music vs Mopidy
- Swing Music vs Lidarr
- Swing Music vs Black Candy
- Swing Music vs Finamp
- Swing Music vs Ampache
- Swing Music vs Polaris
- Swing Music vs Funkwhale
- Swing Music vs OwnTone
- Swing Music vs Gonic
- Swing Music vs mStream
- Swing Music vs Tempo
- Swing Music vs Airsonic
- Swing Music vs Sonixd
- Swing Music vs Lyrion Music Server
- Swing Music vs Musicn
- Swing Music vs Amperfy
- Swing Music vs LMS
- Swing Music vs Airsonic-Advanced
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify