StyleIPTV logoSTYLEIPTV

A modern IPTV player for your phone, your TV, your PC and your browser.

Bring your own playlists — watch them anywhere. 100% free, forever.

Android · Android TV · Windows · Web (Docker) — in development: iOS, macOS, Tizen

StyleIPTV is only a player. It does not include, sell or provide any channel, film, series or other content. It plays the playlists (M3U / Xtream Codes), TV guides and sources that you add, and you are responsible for using only sources you are entitled to watch. The terms of use are shown, and must be accepted, at the first start.

Run everywhere

AndroidPhones & tablets · ARM32 / ARM64 · x86 / x64Get it on Google Play →
Android TVSmart TVs & TV boxes · full remote-control navigationGet it on Google Play →
WindowsWindows 10 / 11 · system tray iconGet it from Microsoft Store →
Web (self-hosted)Docker · amd64 / arm64 · PC, NAS, mini PC, Raspberry Pi 4/5 · any browserInstall with Docker →

See it in action

Web version, shown with a demo playlist of public-domain and Creative Commons titles and free news channels. StyleIPTV doesn't include any content.

Everything you need for IPTV

01

Playlists & Sources

  • M3U / M3U8 from a URL
  • Xtream Codes accounts (live, movies and series)
  • Scheduled automatic updates (daily to monthly)
  • Fast bulk import of large playlists, with duplicate removal
02

Live TV & TV Guide

  • Channel grid with groups, logos and favorites
  • TV guide (EPG) with a "now" line and manual channel ↔ guide mapping
  • Current and next programme shown right in the player
  • Recently watched channels
03

Movies & Series with TMDB

  • Posters, backdrops, plot, cast and production countries
  • Actor pages with their full filmography
  • Series grouped by season, with per-episode progress
  • New episodes open straight on the right season
  • Search across live, movies and series
04

Recordings (PVR)

  • Record live channels now or on a schedule
  • Choose where to save: any folder on Windows, internal or USB storage on Android
  • Automatic retry if the stream drops while recording
  • Play back recordings inside the app
05

Downloads

  • Download movies and episodes to watch offline
  • HLS streams supported
  • Download library to play or manage saved files
06

Sync Across Devices

  • Link your devices with a short pairing code
  • Keep Watching, watched titles and playback position
  • Favorite channels synced too
  • Works between Android, Android TV, Windows and Web
07

Video Player

  • Fullscreen playback, HTTP & HTTPS streams
  • Auto-hiding controls
  • Android: double-tap to seek, swipe for brightness and volume
  • Resume from where you stopped
08

Made for the Big Screen

  • Dark, minimal design for phone, tablet, PC and TV
  • Complete D-pad / remote-control navigation
  • Focus is kept when you come back from the player
  • Long-press to remove items from Keep Watching
09

Web Version New

  • The same look and features as the app, in any browser
  • Works with the TV remote too (arrows, OK, Back)
  • Audio converted on the server for channels the browser can't play
  • Recordings and downloads saved on your server
  • Optional password protection

StyleIPTV Web with Docker

StyleIPTV is a media player that runs on a computer of your home network (PC, mini PC, NAS, Raspberry Pi 4/5) and is used from the browser of any device: PC, phone, tablet, Smart TV — with the TV remote too (arrows, OK, Back).

Requirements

  • Docker with the Compose plugin (Linux, Windows or macOS) — amd64 or arm64
  • Disk space for recordings and downloads (about 1–2 GB per hour of HD recording)

Install

You need two files in a folder of their own: docker-compose.yml and .env.

1 Create the folder

mkdir styleiptv && cd styleiptv

2 Create docker-compose.yml

Copy the whole block into a terminal (Linux / macOS), or save the part between the EOF lines as docker-compose.yml with any text editor (Windows: Notepad, "All files").

cat > docker-compose.yml <<'EOF' services: styleiptv: image: sustuso/styleiptv-web:latest container_name: styleiptv restart: unless-stopped ports: - "${STYLEIPTV_BIND:-0.0.0.0}:${STYLEIPTV_PORT:-8080}:8080" environment: - TZ=${TZ:-Europe/Rome} - STYLEIPTV_PASSWORD=${STYLEIPTV_PASSWORD:-} - STYLEIPTV_DASHBOARD_API_KEY=${STYLEIPTV_DASHBOARD_API_KEY:-} # Recordings / downloads on another disk: mount it below and set these, e.g. # - STYLEIPTV_RECORDINGS_DIR=/recordings # - STYLEIPTV_DOWNLOADS_DIR=/downloads volumes: - ./data:/data # database, settings, cache, recordings, downloads # - /mnt/disk2/recordings:/recordings # - /mnt/disk2/downloads:/downloads logging: driver: json-file options: max-size: "10m" max-file: "3" EOF

3 Create .env (your settings)

Same as above: paste it in a terminal, or save the part between the EOF lines as .env. Then change the values you need (port, password, time zone).

cat > .env <<'EOF' # Port to open in the browser: http://<computer-address>:<port> STYLEIPTV_PORT=8080 # Listen only on this computer's address (e.g. the LAN one, 192.168.1.10). 0.0.0.0 = all. STYLEIPTV_BIND=0.0.0.0 # Access password (asked once per device, remembered for 90 days). Empty = no password. # Recommended. STYLEIPTV_PASSWORD= # Read-only monitoring API (/api/dashboard, sent in the X-API-Key header), for an external # dashboard. Set a long random key to enable it. Empty = disabled. STYLEIPTV_DASHBOARD_API_KEY= # Time zone for the TV guide and recordings TZ=Europe/Rome EOF nano .env

4 Start

docker compose up -d

Open http://COMPUTER-ADDRESS:PORT (e.g. http://192.168.1.10:8080). At the first start, read and accept the terms of use; then in Settings add your playlist and press Save and download playlist.

Setting in .envWhat it does
STYLEIPTV_PORTPort to open in the browser (default 8080).
STYLEIPTV_BINDListen only on one address of the computer (default: all).
STYLEIPTV_PASSWORDAccess password, asked once per device. Recommended. Empty = none.
STYLEIPTV_DASHBOARD_API_KEYEnables the read-only monitoring API (/api/dashboard). Empty = off.
TZTime zone for the TV guide and recordings.

Your data (database, settings, recordings, downloads) is in the data folder next to docker-compose.yml.

Keep it private. Use StyleIPTV on your home network, or from outside through your own VPN. Don't forward its port on the router: it relays streams for the devices that use it. Set a password.

Monitoring API New

A read-only JSON API for an external dashboard. Set STYLEIPTV_DASHBOARD_API_KEY to a long random value to enable it, and send that key in the X-API-Key header (never in the URL). It only reads — it can't start, stop or delete anything — and never exposes stream URLs, playlist credentials or file paths. Keep it on your LAN / VPN like the rest of the server.

EndpointReturns
GET /api/dashboard/summaryChannel, favorite and EPG counts, EPG last update, and scheduled / active / completed / failed recording counts.
GET /api/dashboard/recordings/upcoming?limit=5The next recordings (next real occurrence for repeating ones), soonest first.
GET /api/dashboard/recordings/recent?limit=5The latest recordings, newest first.

Times are ISO 8601 UTC. Responses: 401 without a valid key, 429 if polled too hard, 503 if the key isn't set.

Update

docker compose pull && docker compose up -d && docker image prune -f

The same guide is on Docker Hub.

Built with modern .NET

.NET 10 & MAUINative apps for Android and Windows
Blazor ServerWeb version, same core logic as the app
DockerMulti-arch image, amd64 & arm64
SQLiteFast local channel database
TMDBMovie & series metadata
MediaElementNative playback on Android
LibVLCVLC playback engine on Windows
hls.js & mpegts.jsHLS and MPEG-TS playback in the browser
FFmpegServer-side audio conversion (Web)