For self-hosters

The Jellyfin for your downloaded courses.

You already refused to rent your film library. The courses on the same disk never got the same treatment — they are still a folder called new_course_final holding 214 files you cannot navigate.

Ckourse is the piece Jellyfin was never built to be: a free, offline player that reads a course folder as a course. Sections, ordered lessons, progress per lesson, resume on the exact frame. Your files are never renamed, moved or re-encoded.

Free and open source · macOS & Windows · No account, no tracking.

Why your media server can't do this.

Jellyfin is very good at what it was designed for. A course folder just isn't it — and the reasons are structural, not a matter of configuration.

The scraper has nothing to find

Jellyfin builds a library by matching filenames against TMDB and TVDB. No course is in those databases, so the lookup that makes Jellyfin feel magical for films returns nothing here.

Course files ignore naming schemes

Detection depends on files being named the way it expects. Downloaded courses arrive with numbered prefixes, nested subfolders, bonus material and no consistency at all.

There is no lesson in the data model

A media server thinks in films, series, seasons and episodes. It has nowhere to record that lesson 41 of 214 is the one you are on and that you are 19 percent through the course.

Jellyfin and Ckourse, side by side.

Not a replacement — a different job. Most people reading this will keep running both.

Jellyfin compared with Ckourse for playing downloaded course videos
 JellyfinCkourse
Built forFilms and TV series, organised by a metadata database.Course folders: sections, ordered lessons, completion.
How it builds a libraryMatches filenames against TMDB and TVDB. No match, no library entry.Reads the folder tree itself. Nothing to look up, nothing to match.
File namingExpects a naming scheme. Inconsistent names break detection.Takes the names as they are. Nothing is renamed or moved.
A 200-lesson courseBest case, one long season of unnamed episodes.Sections and lessons in the order the author intended.
ProgressWatched flag and resume position, per file.Per lesson to the second, plus completion across the whole course.
Notes and bookmarksNot part of the model.Timestamped, saved against the lesson.
SetupRun a server, configure libraries, install clients.Install the app, point it at a folder.
Streaming to a TV or phoneYes — clients for most platforms. This is the point of Jellyfin.No. Desktop only, on the machine holding the files.
LicenceFree and open source.Free and open source, MIT.

What Ckourse is not.

This page borrows Jellyfin's name because the analogy is useful, so it is worth being exact about where it stops. Ckourse is a desktop application, not a server.

  • It does not stream to a TV, a phone or another room. It plays on the machine it is installed on.
  • There are no clients, no ports to forward and nothing to host or reverse-proxy.
  • It does not fetch artwork, descriptions or metadata from anywhere. The structure comes from your folder.
  • It is not a general media player. Point it at a film library and it will try to read it as a course.
  • macOS and Windows today. Linux is planned but not released.

Jellyfin users usually ask these.

Can Jellyfin organise my downloaded courses?

Not well. Jellyfin builds its library by matching filenames against movie and TV databases like TMDB and TVDB. A course folder has no entry in those databases, so a 200-lesson course either fails to match or gets forced into a season-and-episode shape that does not describe it. Jellyfin is excellent at what it was built for; a course is not that.

Is Ckourse a media server like Jellyfin?

No. Jellyfin is a server you run and connect clients to. Ckourse is a desktop application that reads folders on the same machine it runs on. There is nothing to host, no ports to open and no clients to install, but equally there is no streaming to a TV or a phone.

Do I have to rename my files or match a naming scheme?

No. That is the main difference. Ckourse infers sections and lesson order from the folder structure as it already exists, including nested subfolders, numbered prefixes, inconsistent naming and bonus material. Your files are never renamed, moved or re-encoded.

Can I run Ckourse alongside Jellyfin?

Yes, and that is the usual setup. Keep Jellyfin for films and TV, point Ckourse at the folder where your courses live. They read the same disk and neither one modifies the files, so there is no conflict.

Does Ckourse track progress per lesson like Jellyfin tracks episodes?

It goes further. Jellyfin stores a watched flag and a resume position per file. Ckourse stores progress per lesson to the second, rolls it up into a completion percentage for the whole course, and reopens on the exact frame you stopped on, even weeks later.

Is Ckourse open source?

Yes, under the MIT license, like Jellyfin. There is no paid tier and no telemetry in the desktop app. The source is on GitHub if you would rather read it than trust a description of it.

Stop losing your place. Start finishing courses.

The folder's not going anywhere. Might as well finish what you started.

Free and open source · macOS, Windows & Linux · No account, no tracking, no upsells.