fliks-app/fliks

Your self-hosted movie & TV library, streamable anywhere.

TypeScript

21

1,452 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built Fliks, an open-source Plex/Jellyfin alternative focused on a modern UI and built-in downloads (r/selfhosted)

Hey r/selfhosted! Like many of you, I've been self-hosting my media for years. Jellyfin is an incredible project that I’ve used for a long time, but over time I wanted an interface with a different look and feel, something a bit more modern and tailored to my personal taste. I also wanted a way to…

0

Oct 9, 2026

README

Fliks

Your personal video collection, on every screen in the house.

Point Fliks at the folders where your videos live and it does the rest: covers, descriptions, cast, seasons and episodes, laid out like the streaming apps you already use — except the library is yours.

It turns a folder of video files into a proper streaming service for the household. Everyone gets their own profile and their own place in every episode; start something on your phone, sit down, and the TV picks it up where you left off. It plays on whatever screen is in front of you, and converts the video on the fly when that screen can't handle the original file.

Self-hosted: the server runs on your machine, there is no account to create, no subscription, and nothing leaves the house.

  • Server — Docker, a Windows tray app or a macOS menu-bar app
  • Clients — web, iOS, Android, Android TV, Apple TV, Samsung, LG, desktop, Chromecast
  • License — AGPL-3.0-or-later

The home page, a library, discovery and a film page


What you get

Watching

  • Adaptive streaming — quality follows the bandwidth without a hiccup, or lock a bitrate by hand when you'd rather decide.
  • Resume anywhere — start on the phone, finish on the TV; the position syncs live.
  • Every track, switchable mid-playback — all embedded audio renditions, all embedded and external subtitles (.srt, .ass), with your choice remembered per show.
  • Subtitles found for you — a video that came without any? Fliks goes looking on the usual subtitle sites and picks the one that actually matches your copy, in the languages you asked for.
  • Out of sync, fixed in one click — Fliks listens to the dialogue and slides the subtitles back onto it. No hunting for the right offset, no re-downloading three files hoping one lands.
  • Translated on demand — nothing available in your language? Take a track you do have and have it translated into one you can read. You bring the translation service; the result is saved next to the video so it's only done once.
  • Subtitle appearance per user: size, colour, shadow, background opacity, margins.
  • Skip intro, next episode, chapter markers and thumbnail previews when you scrub.
  • Live TV, from your own IPTV subscription — add an M3U playlist or an Xtream account and channels line up next to your library, with a program guide and a rewind buffer to pause live and jump back a few minutes. Setting one up: docs/livetv.md.

Browsing

  • Several libraries side by side — movies, shows, home videos, kids — each pointed at its own folder.
  • Search across all of them, filter and sort by status, date added, rating, runtime.
  • Metadata from TMDB / TVDB: posters, fanart, genres, cast and crew. Every person is a page listing everything they worked on in your libraries; every genre is a filter.
  • Home rows — Continue Watching, Recently Added, and recommendations weighted by what you've actually watched.
  • Calendar of upcoming episodes for the series you follow.
  • Spoiler protection — an account-wide switch that blurs the synopsis of a film, a season or an episode you haven't watched, along with an unwatched episode's thumbnail and backdrop, and shows Episode 3 in place of a title that gives the plot away. Click a masked item to reveal it, or mark it as watched and it unmasks for good. Each of the three is its own toggle, and the setting follows your account onto every device.

Sharing with the household

  • Recommend something to someone — pick a film or a season and send it to another user. It shows up on their home page under Recommended for you, with your name on it.
  • Playlists — your own running order, drag to reorder, autoplay from one item to the next, and watched items drop off on their own if you want them to.
  • Shared playlists — invite other users as viewer, editor or admin and build one together, or save someone else's public playlist to your own list.
  • Downloads that keep themselves current — turn a playlist to automatic on your phone, tablet or the desktop app: what you haven't watched is downloaded to the device, and what you have watched is removed to give the space back. Nothing to think about before a flight.
  • Everyone stays in control — each user decides whether their profile is public and what appears on it: tastes, recent activity, favourites, statistics — or nothing at all.

Running it

  • Multi-user, each with their own history, progress and preferences.
  • Quick Connect for TVs: pick your account on the screen, then approve the request from the Login requests page on your phone.
  • Live transcode dashboard for admins: who's watching what, at which quality, on which hardware path, and why a transcode was needed.
  • Images cached locally — no hotlinking to external services while you browse.

Plugins

Fliks ships with no way to acquire media. You install what you want from Settings > Plugins: the official catalog is configured out of the box, and you can add other sources or import a .fkplugin archive by hand.

  • The Download plugin brings torrent indexer search, download-client management and the grab pipeline. Install it and the search, the clients and their settings pages appear in the interface.
  • Archives are signed, and the signature is checked before anything is written to disk.
  • A plugin that runs code runs apart. There are two tiers: a data plugin ships JSON and executes nothing at all, while a process plugin gets its own child process under its own uid, plus its own PostgreSQL role and schema. It cannot reach another plugin's tables, or yours.
  • Plugins extend the interface, not just the backend. Their pages, menu entries and settings appear where they belong and follow your permissions like everything else.
  • Updates are checked daily, and you can turn that off.

Writing one: docs/plugins.md.


Client compatibility

Fliks runs on plenty of devices. Start a film on your phone and finish it on the TV: your place follows you from one to the other. Here is the full list of what it runs on.

ClientWhere to get itMinimumNotes
Web / PWAyour browser, at the server URLany current browserinstallable to the home screen
iOS · iPadOSApp StoreiOS 16.6
AndroidPlay StoreAndroid 6 (API 23)phone + tablet
Android TVPlay StoreAndroid 6
Samsung TV (Tizen)sideload for nowTizen 5.5works fully, not yet on Samsung Apps
LG TV (webOS)LG Content StorewebOS 7.0approved, on the store
Desktoprelease assetsmacOS: Apple SiliconWindows .exe, macOS .dmg, Linux .deb / AppImage
Chromecastbuilt in, cast from any clientanycustom receiver, same player engine
Apple TVApp StoretvOS 17native SwiftUI app
Nintendo Switchbuild the .nro from switchflikshomebrew-enabled consolebeta, native client with hardware decode

Server compatibility

How you run itPlatformsHardware transcodingShips with
Docker (recommended)linux/amd64, linux/arm64Intel QSV · VAAPI · NVIDIA NVENC · AMDbackend, web client, FFmpeg
Windows — tray app, NSIS installerWindows x64Intel QSV · AMD AMF · NVIDIA NVENC, auto-detectedeverything, no dependencies
macOS — menu-bar app, .dmgmacOS 13 Ventura+, Apple SiliconVideoToolboxeverything, no dependencies
From sourceanywhere Node runswhatever your FFmpeg exposes—

The image is a single container: NestJS backend, the built Angular client served as static assets, and a self-contained jellyfin-ffmpeg build. A PostgreSQL container sits beside it (the example Compose pins 18.3).

Encoders

Which hardware path is available depends on the machine, not on Fliks — it probes at startup and falls back to CPU when nothing else answers.

CodecCPUIntel QSVVAAPINVIDIA NVENCAMD AMFVideoToolbox
H.264✅✅✅✅✅✅
HEVC✅✅✅✅✅✅
AV1✅✅✅✅✅—

HDR10, HLG and Dolby Vision are tone-mapped to SDR when the receiving device can't render them.


Get started

The server runs on one machine in the house — the one holding your video files. Everything else connects to it. Three ways to install it; they give you the same Fliks, so pick whichever suits the machine. All you need is a folder with your videos and about two minutes.

Windows

Download the installer from the latest release and run it. Fliks sits in the system tray and starts with the machine. Nothing else to install. Details in windows/.

macOS

Download the .dmg from the latest release and drag it to Applications. Fliks sits in the menu bar. Apple Silicon, macOS 13 Ventura or newer. Details in macos/.

Docker — Linux, NAS, or a home server

curl -LO https://raw.githubusercontent.com/fliks-app/fliks/main/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml

Open the file and set three things:

  1. POSTGRES_PASSWORD and DB_PASSWORD — the same real password
  2. the /path/to/your/media:/medias:ro mount — where your files are
  3. PORT — only if 4848 is taken on the host
docker compose up -d

First run

Whichever you picked, open http://<host>:4848 in a browser — on the machine itself that's http://localhost:4848. Sign in with the account Fliks creates on its first boot:

UsernamePassword
adminpassword

Change that password right away — user menu → Account. Then add a library pointing at your video folder (/medias under Docker), and Fliks scans it and goes looking for the covers.

Then install the app on your phone or TV, point it at the same address, and you're done.


License

AGPL-3.0-or-later — run a modified version on a network and you owe its users the modified source.

media
nodejs
video

fliks-app/fliks

Your self-hosted movie & TV library, streamable anywhere.

TypeScript

21

1,452 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built Fliks, an open-source Plex/Jellyfin alternative focused on a modern UI and built-in downloads (r/selfhosted)

Hey r/selfhosted! Like many of you, I've been self-hosting my media for years. Jellyfin is an incredible project that I’ve used for a long time, but over time I wanted an interface with a different look and feel, something a bit more modern and tailored to my personal taste. I also wanted a way to…

0

Oct 9, 2026

README

Fliks

Your personal video collection, on every screen in the house.

Point Fliks at the folders where your videos live and it does the rest: covers, descriptions, cast, seasons and episodes, laid out like the streaming apps you already use — except the library is yours.

It turns a folder of video files into a proper streaming service for the household. Everyone gets their own profile and their own place in every episode; start something on your phone, sit down, and the TV picks it up where you left off. It plays on whatever screen is in front of you, and converts the video on the fly when that screen can't handle the original file.

Self-hosted: the server runs on your machine, there is no account to create, no subscription, and nothing leaves the house.

  • Server — Docker, a Windows tray app or a macOS menu-bar app
  • Clients — web, iOS, Android, Android TV, Apple TV, Samsung, LG, desktop, Chromecast
  • License — AGPL-3.0-or-later

The home page, a library, discovery and a film page


What you get

Watching

  • Adaptive streaming — quality follows the bandwidth without a hiccup, or lock a bitrate by hand when you'd rather decide.
  • Resume anywhere — start on the phone, finish on the TV; the position syncs live.
  • Every track, switchable mid-playback — all embedded audio renditions, all embedded and external subtitles (.srt, .ass), with your choice remembered per show.
  • Subtitles found for you — a video that came without any? Fliks goes looking on the usual subtitle sites and picks the one that actually matches your copy, in the languages you asked for.
  • Out of sync, fixed in one click — Fliks listens to the dialogue and slides the subtitles back onto it. No hunting for the right offset, no re-downloading three files hoping one lands.
  • Translated on demand — nothing available in your language? Take a track you do have and have it translated into one you can read. You bring the translation service; the result is saved next to the video so it's only done once.
  • Subtitle appearance per user: size, colour, shadow, background opacity, margins.
  • Skip intro, next episode, chapter markers and thumbnail previews when you scrub.
  • Live TV, from your own IPTV subscription — add an M3U playlist or an Xtream account and channels line up next to your library, with a program guide and a rewind buffer to pause live and jump back a few minutes. Setting one up: docs/livetv.md.

Browsing

  • Several libraries side by side — movies, shows, home videos, kids — each pointed at its own folder.
  • Search across all of them, filter and sort by status, date added, rating, runtime.
  • Metadata from TMDB / TVDB: posters, fanart, genres, cast and crew. Every person is a page listing everything they worked on in your libraries; every genre is a filter.
  • Home rows — Continue Watching, Recently Added, and recommendations weighted by what you've actually watched.
  • Calendar of upcoming episodes for the series you follow.
  • Spoiler protection — an account-wide switch that blurs the synopsis of a film, a season or an episode you haven't watched, along with an unwatched episode's thumbnail and backdrop, and shows Episode 3 in place of a title that gives the plot away. Click a masked item to reveal it, or mark it as watched and it unmasks for good. Each of the three is its own toggle, and the setting follows your account onto every device.

Sharing with the household

  • Recommend something to someone — pick a film or a season and send it to another user. It shows up on their home page under Recommended for you, with your name on it.
  • Playlists — your own running order, drag to reorder, autoplay from one item to the next, and watched items drop off on their own if you want them to.
  • Shared playlists — invite other users as viewer, editor or admin and build one together, or save someone else's public playlist to your own list.
  • Downloads that keep themselves current — turn a playlist to automatic on your phone, tablet or the desktop app: what you haven't watched is downloaded to the device, and what you have watched is removed to give the space back. Nothing to think about before a flight.
  • Everyone stays in control — each user decides whether their profile is public and what appears on it: tastes, recent activity, favourites, statistics — or nothing at all.

Running it

  • Multi-user, each with their own history, progress and preferences.
  • Quick Connect for TVs: pick your account on the screen, then approve the request from the Login requests page on your phone.
  • Live transcode dashboard for admins: who's watching what, at which quality, on which hardware path, and why a transcode was needed.
  • Images cached locally — no hotlinking to external services while you browse.

Plugins

Fliks ships with no way to acquire media. You install what you want from Settings > Plugins: the official catalog is configured out of the box, and you can add other sources or import a .fkplugin archive by hand.

  • The Download plugin brings torrent indexer search, download-client management and the grab pipeline. Install it and the search, the clients and their settings pages appear in the interface.
  • Archives are signed, and the signature is checked before anything is written to disk.
  • A plugin that runs code runs apart. There are two tiers: a data plugin ships JSON and executes nothing at all, while a process plugin gets its own child process under its own uid, plus its own PostgreSQL role and schema. It cannot reach another plugin's tables, or yours.
  • Plugins extend the interface, not just the backend. Their pages, menu entries and settings appear where they belong and follow your permissions like everything else.
  • Updates are checked daily, and you can turn that off.

Writing one: docs/plugins.md.


Client compatibility

Fliks runs on plenty of devices. Start a film on your phone and finish it on the TV: your place follows you from one to the other. Here is the full list of what it runs on.

ClientWhere to get itMinimumNotes
Web / PWAyour browser, at the server URLany current browserinstallable to the home screen
iOS · iPadOSApp StoreiOS 16.6
AndroidPlay StoreAndroid 6 (API 23)phone + tablet
Android TVPlay StoreAndroid 6
Samsung TV (Tizen)sideload for nowTizen 5.5works fully, not yet on Samsung Apps
LG TV (webOS)LG Content StorewebOS 7.0approved, on the store
Desktoprelease assetsmacOS: Apple SiliconWindows .exe, macOS .dmg, Linux .deb / AppImage
Chromecastbuilt in, cast from any clientanycustom receiver, same player engine
Apple TVApp StoretvOS 17native SwiftUI app
Nintendo Switchbuild the .nro from switchflikshomebrew-enabled consolebeta, native client with hardware decode

Server compatibility

How you run itPlatformsHardware transcodingShips with
Docker (recommended)linux/amd64, linux/arm64Intel QSV · VAAPI · NVIDIA NVENC · AMDbackend, web client, FFmpeg
Windows — tray app, NSIS installerWindows x64Intel QSV · AMD AMF · NVIDIA NVENC, auto-detectedeverything, no dependencies
macOS — menu-bar app, .dmgmacOS 13 Ventura+, Apple SiliconVideoToolboxeverything, no dependencies
From sourceanywhere Node runswhatever your FFmpeg exposes—

The image is a single container: NestJS backend, the built Angular client served as static assets, and a self-contained jellyfin-ffmpeg build. A PostgreSQL container sits beside it (the example Compose pins 18.3).

Encoders

Which hardware path is available depends on the machine, not on Fliks — it probes at startup and falls back to CPU when nothing else answers.

CodecCPUIntel QSVVAAPINVIDIA NVENCAMD AMFVideoToolbox
H.264✅✅✅✅✅✅
HEVC✅✅✅✅✅✅
AV1✅✅✅✅✅—

HDR10, HLG and Dolby Vision are tone-mapped to SDR when the receiving device can't render them.


Get started

The server runs on one machine in the house — the one holding your video files. Everything else connects to it. Three ways to install it; they give you the same Fliks, so pick whichever suits the machine. All you need is a folder with your videos and about two minutes.

Windows

Download the installer from the latest release and run it. Fliks sits in the system tray and starts with the machine. Nothing else to install. Details in windows/.

macOS

Download the .dmg from the latest release and drag it to Applications. Fliks sits in the menu bar. Apple Silicon, macOS 13 Ventura or newer. Details in macos/.

Docker — Linux, NAS, or a home server

curl -LO https://raw.githubusercontent.com/fliks-app/fliks/main/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml

Open the file and set three things:

  1. POSTGRES_PASSWORD and DB_PASSWORD — the same real password
  2. the /path/to/your/media:/medias:ro mount — where your files are
  3. PORT — only if 4848 is taken on the host
docker compose up -d

First run

Whichever you picked, open http://<host>:4848 in a browser — on the machine itself that's http://localhost:4848. Sign in with the account Fliks creates on its first boot:

UsernamePassword
adminpassword

Change that password right away — user menu → Account. Then add a library pointing at your video folder (/medias under Docker), and Fliks scans it and goes looking for the covers.

Then install the app on your phone or TV, point it at the same address, and you're done.


License

AGPL-3.0-or-later — run a modified version on a network and you owe its users the modified source.

media
nodejs
video