OpenSourcePicks

Open source alternatives to popular software, with live GitHub data

GitHub stats refreshed every day

Swing Music

Self-hosted music player and streaming server with a streaming-app style interface

Open source alternative to

Visit Swing MusicGitHubDocumentation

Main features

  • Browser-based player
  • Metadata normalization for a consistent library
  • Album versions such as Deluxe or Remaster grouped under one album
  • Related artists and albums
  • Folder view
  • Crossfade with silence detection
  • Collections of albums and artists
  • Listening statistics
  • Last.fm scrobbling
  • Multiple users
  • Android client

What Swing Music does

Swing Music is a self-hosted music player and streaming server that sets out to feel like a commercial streaming service while playing only files you supply. You point it at your music folder and open the browser interface, which is modeled on commercial streaming apps.

A good part of its work goes into tidying the library as it is shown. Metadata is normalized for consistent artist and album names, and album versions such as Deluxe or Remaster editions are recognized and labeled instead of appearing as separate, confusing albums. Pages suggest related artists and albums, and collections let you group albums and artists your own way. A folder view is available for people who think in directories. Playback combines crossfade with silence detection so tracks blend without gaps. Listening statistics, Last.fm scrobbling and support for several users round out the free features.

Free and premium editions

Swing Music is open core, and the line matters for anyone comparing it with other servers. The public repository is under AGPL-3.0 or any later version. Premium features are developed in a private repository; the public code contains only placeholders for them, and a comment in the source explains they are stripped before publishing. According to the pricing page, premium covers:

  • daily mixes and recommendations based on listening activity
  • up to three subdomains on swingmx.com for reaching your server from anywhere
  • secure sharing links for tracks, albums and playlists
  • transcoding for compatibility and low-bandwidth playback
  • a classical-music view of composers, works and movements
  • cloud sync across devices

Premium is unlocked with a license key, available as a subscription, as a one-time lifetime license or through GitHub sponsorship. There is no free trial. The README lists daily mixes among the features without marking them as premium, so check the pricing page before relying on one.

Self-hosting Swing Music

On Linux and macOS an install script sets everything up; on Windows a portable build is available. The official Docker image on GitHub Container Registry mounts a music folder and a config folder, and the README includes a Compose example. The server listens on port 1970 by default and reports a device name you set to connected clients. The backend is written in Python with Flask and needs Python 3.11 or later when run from source. The README lists macOS builds as coming soon.

An official Android client, also under AGPL-3.0, streams from the server. No Subsonic API is documented, so other music apps cannot connect.

Hosted version

The developers do not host music servers. The premium subdomains point to your own server rather than to hosted storage.

Limitations

Transcoding is a paid feature, so on the free edition files are played as they are, which can hurt on mobile data. Mixes and sharing are paid and closed source. The client choice is limited to the browser and Android.

Who it suits

Swing Music suits listeners who care about a clean, well-organized library view and a streaming-app interface, and who either do not need transcoding or are willing to pay for premium. It is one way to replace Spotify for music you own. If you want every feature under an open source license, Navidrome is the closest fully open alternative.

License details

AGPL-3.0. Open core. Premium features (daily mixes, transcoding, sharing links, classical music browsing, cloud sync, swingmx.com subdomains) come from a private repository and are absent from the public source; they need a subscription, lifetime license key or GitHub sponsorship.

Technical details

Built with

  • Python
  • Flask

GitHub topics

  • music
  • music-server
  • python
  • self-hosted

Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.