OpenSourcePicks

Open source alternatives to popular software, with live GitHub data

GitHub stats refreshed every day

Koel

Web-based personal music streaming server with a polished player, built on Laravel and Vue

Open source alternative to

Visit KoelGitHubDocumentation

Main features

  • Browser player with themes, equalizer, visualizers and crossfade
  • Playlists and smart playlists
  • Podcasts and internet radio
  • OpenSubsonic API with per-user API keys
  • Transcoding of lossless and less common formats to AAC
  • Users with Admin, Manager, User and Guest roles
  • Last.fm scrobbling and Spotify, MusicBrainz, Wikipedia and YouTube integrations
  • Two-factor authentication
  • Remote controller and playback sync across devices
  • Official Koel Player app for iOS and Android

What Koel does

Koel scans a music collection and serves it through a browser player designed to feel like a commercial streaming app. The interface includes themes, an equalizer, visualizers and crossfade, and playback can be synced and remote-controlled across devices. Smart playlists, podcasts and internet radio sit next to the music library, and Koel pulls artist and album information from Last.fm, Spotify, MusicBrainz, Wikipedia and YouTube.

Koel also implements the OpenSubsonic API, so third-party apps such as Feishin, Amperfy, Symfonium, Tempo, substreamer and play:Sub can stream from it. Each user signs in to those apps with their email and a dedicated API key rather than the account password. The documentation lists what the Subsonic layer does not cover: sharing, bookmarks, chat and play-queue sync. The developer also publishes Koel Player, an official mobile app for iOS and Android.

Community edition and Koel Plus

Koel is open core. The repository is MIT-licensed, and the Community edition supports several users with Admin, Manager, User and Guest roles, but all users share one library (playlists, favorites and statistics stay private). Koel Plus, bought once per installation with future updates included, unlocks:

  • private libraries per user, with sharing and collaboration
  • music stored in S3-compatible storage, Dropbox, SFTP or WebDAV
  • single sign-on and proxy authentication
  • a folder-based media browser
  • white labeling and custom themes
  • an AI assistant that takes natural-language commands, and a Ticketmaster integration

The Plus code is in the public repository and checks for an activated license key before enabling these features, so the source is open but the features are paid.

Self-hosting Koel

Koel needs PHP 8.2 or later with the required extensions, and a database supported by Laravel; MySQL, MariaDB, PostgreSQL and SQLite are tested. There are five ways to install it: a standalone binary based on FrankenPHP that needs no Composer or Node.js and includes Caddy with automatic HTTPS, a pre-compiled archive, a source build (with Composer, Node.js 20 or later and pnpm), the official Docker image, or a community Railway template. Outside the standalone binary, a web server such as Apache, nginx or Caddy must point at the public/ directory.

FFmpeg transcodes lossless files to AAC at a configurable bitrate. FLAC is passed through by default because modern browsers support it, while formats such as AIFF and APE are always transcoded. The documentation asks you to back up the database before every upgrade, and password reset emails need a configured mailer.

Hosted version

There is no hosted Koel service. A public demo is available on koel.dev.

Limitations

The shared library in the Community edition makes Koel less suited to households where each person keeps their own music, unless you pay for Plus. Folder browsing and cloud storage are also Plus features. The Subsonic API is incomplete for clients that rely on sharing, bookmarks or queue sync.

Who it suits

Koel suits individuals and families who listen mostly in the browser and want a player that looks and feels like Spotify, with a permissive license. Organizations that want separate libraries, SSO and branding can buy Plus. For a fully free multi-library server, compare Navidrome.

License details

MIT. Koel Plus features (private libraries, cloud storage, SSO, media browser, AI assistant and more) are in the same codebase but unlocked only with a paid license key, sold as a one-time purchase per installation.

Technical details

Self-hosting needs

  • MySQL
  • MariaDB
  • PostgreSQL or SQLite
  • FFmpeg

Built with

  • PHP
  • Laravel
  • Vue

GitHub topics

  • audio
  • hacktoberfest
  • laravel
  • music
  • music-player
  • streaming
  • vue

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