Native macOS · SwiftUI · VLCKit 4
Every signal your subscription carries, in one Mac window.
iptvS brings Live TV, Movies, Series and the program guide into one native app. Connect over Xtream Codes, M3U or a Stalker / Ministra portal. Playback runs on LibVLC.
The signal chain
Four kinds of content, one catalog.
iptvS sorts everything your provider serves into the right section and caches it locally. It opens instantly on the next launch.
Live TV
Category browser with favourites, a live hero banner, and an EPG that maps automatically to your channels — List or classic Timeline grid.
xtream · m3u · stalkerMovies
TMDB posters, plots and cast. Provider metadata fills in where TMDB has no match. Resume to the exact second.
lazy per-categorySeries
Series, seasons and episodes from any source, with TMDB stills. Playback continues from one season's finale into the next.
tmdb stills + titlesGuide
XMLTV or the portal's own get_epg_info. Set a native macOS reminder for any upcoming programme, five minutes ahead.
list · timeline · remindersNew in 0.5
Your MAG portal, native on the Mac.
Enter a portal URL and a MAC address. iptvS handles the rest of the portal protocol the way a set-top box does.
- MAC-address handshake to a bearer token, then the itv / vod / series catalog and the guide.
- Endpoint auto-detection across portal.php, server/load.php and stalker_portal/…, probed in parallel.
- Stream links minted at play time with create_link — portal URLs are short-lived, so the player re-mints on error.
- Test button reports subscription status and expiry. Built-in MAC generator for providers that bind on first contact.
Inside the app
Native SwiftUI, every screen.






Under the hood
Tuned for real-world providers.
LibVLC playback
VLCKit 4 with VideoToolbox hardware decode — HLS, MPEG-TS, MP4, MKV, RTMP. Or send any stream straight to VLC.app.
Buffering indicator
The overlay tracks real frame progress, so it appears only when playback has actually stalled.
Instant server switching
The last three playlists stay warm in memory. A timestamped disk cache means a switch only touches the network for data that's gone stale.
Setup progress
First load shows staged progress with live counts — 1,861 channels · 18 categories → 12,450 programmes — behind a determinate bar.
Lazy catalogs
Movies and Series load a category at a time with infinite scroll. A 75,000-title provider opens in about a second.
In-place recording
Records straight from the active player connection with zero-copy MPEG-TS. One connection is enough.
- Language
- Swift 5.9+ · SwiftUI (macOS 13 Ventura+)
- Playback
- VLCKit 4 (LibVLC) · VideoToolbox decode
- Sources
- Xtream Codes API · Stalker / Ministra portal · M3U / M3U8
- Guide
- XMLTV · Stalker get_epg_info
- Metadata
- TMDB API
- Caching
- Per-playlist JSON + timestamps · warm in-memory snapshots (LRU 3)
Download
Drag it to Applications. Add a playlist. Watch.
One universal build for Apple Silicon and Intel. No installer, no account, no telemetry.
96287fb7c7901f1565fc1742f2eb2ce5b9804b542950977fd19bc73360111caa
shasum -a 256 "iptvS 0.5.dmg"
Requirements
macOS 13.0 Ventura or later. Apple Silicon (M1–M4) or Intel. An active IPTV subscription — Xtream, Stalker portal, or M3U.First launch
This build is ad-hoc signed, not notarised. On first launch, right-click iptvS.app and choose Open.Homebrew
brew install --cask sstoicsnapshots-lang/tap/iptvs
Bugs, feature requests, or just want to talk about IPTV on the Mac? Join the Telegram group.
iptvS is free and always will be. If it earns a place on your Dock, you can leave a tip.