Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


A personal music streaming server that works.

Subscribe to updates I use koel

Statistics on koel

Number of watchers on Github 8817
Number of open issues 46
Average time to close an issue 4 days
Main language PHP
Average time to merge a PR 1 day
Open pull requests 16+
Closed pull requests 59+
Last commit almost 2 years ago
Repo Created about 4 years ago
Repo Last Updated over 1 year ago
Size 4.98 MB
Homepage https://koel.phan...
Organization / Authorphanan
Latest Releasev3.7.2
Page Updated
Do you use koel? Leave a review!
View open issues (46)
View koel activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating koel for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

koel Build Status Code Quality OpenCollective OpenCollective



Koel (also stylized as koel, with a lowercase k) is a simple web-based personal audio streaming service written in Vue on the client side and Laravel on the server side. Targeting web developers, Koel embraces some of the more modern web technologies flexbox, audio, and drag-and-drop API to name a few to do its job.

Install and Upgrade Guide

For system requirements, installation/upgrade guides, troubleshooting etc., head over to the Official Documentation.


Support us with a monthly donation and help us continue our activities. [Become a backer]


Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]

koel open issues Ask a question     (View All Issues)
  • about 3 years file_get_contents
  • about 3 years Sorting by time more than 1hour
  • about 3 years Show loading when songs are added/removed from playlists
  • about 3 years Create docker image
  • about 3 years Omitting files when scanning if they contains "$" in tags
  • about 3 years Slow track transitions - implement crossfade maybe?
  • about 3 years Scrollable issue with Firefox
  • about 3 years Error on initial scan. Duplicate entry
  • over 3 years Presence of albumArtist in tags does not always mean compilation
  • over 3 years Song selection does not match the current sorting mode
  • over 3 years 1000 song limit in playlists
  • over 3 years Koel tests
  • over 3 years Discussion: Compilation Albums
  • over 3 years Bug: Editing Artist name in compilation Album
  • over 3 years Enhancement Request: Artist items play order.
  • over 3 years "failed to open stream" when trying to play .flac or .mp3 files
  • over 3 years Folder as a playlist would be a really nice feature
  • over 3 years More available metadata
  • over 3 years Feature Request: Convert, Store and then Play
  • over 3 years Default sorting of song list
  • over 3 years Please implement playlist sharing and collaboration
  • over 3 years virtual list for song views
  • almost 4 years Base URL / Reverse proxy issue, callback
  • almost 4 years Feature request: save custom equalizer preset
  • almost 4 years support
  • almost 4 years implement ampache XML api
  • almost 4 years Add a progress bar during the import of songs
koel open pull requests (View All Pulls)
  • Support INotifyWait CREATE event
  • feature/additional-metadata
  • Some mobile optimizations
  • Added backers and sponsors from OpenCollective
  • feature/force-by-path
  • Allow failure reason to be reported in verbose mode
  • Clean UserTableSeeder
  • Add saving other metadata from songs.
  • Feature/additional metadata
  • Request to add genres
  • Quick fix for webpack compile issue
  • Conditionally loading ServiceProvider
  • Do not transcode flac on newer chrome and firefox
  • Add sqlite support
  • Gcp
  • Fix FLAC streaming issues
koel list of languages used
koel latest release notes
v3.7.2 v3.7.2

This is to bump the version, which I forgot to do in the previous release :(. To update:

git fetch
git checkout v3.7.2
v3.7.1 v3.7.1

This release upgrades Koel's equalizer to work with some new implementations and deprecations of WebAudio in Google Chrome. To upgrade:

git fetch
git checkout v3.7.1
php artisan koel:init
v3.7.0 v3.7.0

Alright folks, time for a new version! v3.7.0 comes with quite a few fixes and new features. Here they come in no particular order:


  • Album compilation status handling got a total rewrite and should work more properly now
  • A remote controller is added, so you can lie on your bed and control the Koel instance on your desktop. Note: this feature is still experimental and has several limitations.
  • Multi disc support is added (@fieteboerner). Note that you'll need to resync with php artisan koel:sync --force --tags=disc for Koel to record the disc number.
  • Support for non-root installations is added (@fieteboerner)
  • Database port can now be configured (@leowmjw)
  • The command koel:init got a massive revamp it can now ask for database credentials, create the admin account, and set the media path. You don't have to touch .env file during installation anymore!
  • Following the change to koel:init the admin account is NOT set in .env file and created during initial database seeding anymore.
  • The command koel:sync can now set the media path, too, so you can run it right after installation without having to set a media path via the web interface (I don't know why I didn't think about this earlier)
  • Playlist content is now populated on demand i.e. data is only downloaded when the playlist is accessed. This should speed up Koel's boot time.
  • Mockery is updated to v1 (@carusogabriel)
  • A LOT of refactoring (I'm counting 20 commits with the keyword refactor) and tests added


  1. As usual, back up everything!
  2. From the command line, run bash git fetch git checkout v3.7.0 composer install php artisan koel:init

If things go south

  1. Restore the backup
  2. Let me know what went wrong

Remote controller

Again, this feature is still basic and experimental, with several limitations.

Koel v3.7.0 comes with a remote controller which allows you to control a desktop instance remotely via a mobile interface.

This can come in handy in several circumstances, e.g. when you leave your Koel playing at night and want to pause or turn the volume down from your comfy bed. Granted, this is not super super useful, but it works for me at least, so why not?

In order to use this feature, first sign up for a Pusher account (the free layer should be more than enough) and create a new app. Then, populate these values into your .env file:


Save the file, refresh Koel, and that's about it. Now go to http://<your-koel-host>/remote on a mobile device and start controlling Koel remotely. You may also want to add the page to home screen for faster access later.

That's it for now. See you in another update in the hopefully near future, with more exciting features!

Other projects in PHP