Modern, cross-platform IPTV player built with Rust and Tauri
Features • Installation • Quick Start • FAQ • Contributing
Better IPTV is a powerful desktop IPTV player that combines the performance of Rust with the flexibility of a modern web UI. Built on MPV for reliable video playback, it handles everything from live TV to movies and series with ease.
Why Better IPTV?
- 🚀 Fast & Efficient - Rust backend handles 100,000+ channels without breaking a sweat
- 🎯 Smart Features - EPG, parental controls, multi-profile support, and more
- 🎨 Modern UI - Clean, responsive interface with dark/light themes
- 🔒 Privacy First - All data stored locally, credentials never leave your device
- 🌍 Cross-Platform - One app for Linux, Windows, and macOS
- Live TV - Stream live channels with real-time Electronic Program Guide (EPG)
- Movies (VOD) - Browse and watch thousands of on-demand movies
- TV Series - Automatic episode playlists with season/episode organization
- Smart Search - Instant filtering across all content types
- Virtual Scrolling - Smooth performance with massive playlists (tested with 100K+ channels)
New in v2.3.0
Protect your family with comprehensive content restrictions:
- Secure PIN Protection - 4-6 digit PIN with industry-standard Argon2 encryption
- Manual Channel Blocking - Select specific channels to restrict (with virtualized selection for smooth performance)
- Auto-Detection - Automatically identifies and blocks adult content (+18, XXX, Adult markers)
- Category Blocking - Block entire channel groups at once
- Three Viewing Modes:
- Hide - Completely remove blocked channels from view
- Lock Icon - Show with lock indicator, unlock with PIN
- Blur - Show blurred thumbnail, unlock to watch
- Session-Based - Temporary unlock during session, auto-locks on restart
- M3U/M3U8 Support - Import from local files or URLs
- Xtream Codes Integration - Direct connection to your IPTV provider
- Multi-Profile System - Switch between multiple providers/playlists
- Favorites - Star channels for quick access
- Category Quick-Access - Horizontal bar for instant category filtering
- 19 Language Support - Audio and subtitle preferences for:
- Scandinavian: Swedish, Norwegian, Danish, Finnish
- European: English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Russian
- International: Arabic, Turkish, Japanese, Chinese, Korean
- Per-Profile Settings - Different language preferences for each profile
- MPV Integration - Industry-standard player with all codecs supported
- Hardware Acceleration - Automatic GPU usage for smooth playback
- SQLite Database - Lightning-fast local storage
- Batch Processing - Efficiently handles large playlist imports
- Error Boundaries - Graceful degradation, no full-app crashes
Better IPTV uses MPV for video playback. Installation varies by platform:
Linux:
# Ubuntu/Debian
sudo apt install mpv
# Arch Linux
sudo pacman -S mpv
# Fedora
sudo dnf install mpvmacOS:
brew install mpvWindows:
🎉 New in v2.3.0: Windows users no longer need to install MPV separately! It's now bundled with the installer.
If you prefer a manual installation or already have MPV:
- Download from mpv.io
- Or use Chocolatey:
choco install mpv
Pre-built Packages:
- Visit Releases
- Download for your platform:
- Linux:
.AppImage(universal),.deb(Ubuntu/Debian),.rpm(Fedora/RHEL) - Windows:
.msiinstaller or.exeportable - macOS:
.dmgdisk image
- Linux:
Linux AppImage:
chmod +x Better-IPTV.AppImage
./Better-IPTV.AppImageBuild from Source:
git clone https://github.com/mewset/better-iptv.git
cd better-iptv
npm install
npm run tauri build
# Output: src-tauri/target/release/bundle/On first launch, you'll see the setup screen. Choose your import method:
Option A: M3U/M3U8 File
- Click "Import M3U Playlist"
- Enter a profile name (e.g., "My IPTV")
- Choose source:
- Local File: Browse to your
.m3u/.m3u8file - URL: Paste your playlist URL
- Local File: Browse to your
- Click "Import" and wait for channels to load
Option B: Xtream Codes
- Click "Import Xtream Playlist"
- Enter a profile name
- Fill in credentials:
- Server URL:
http://server.com:port - Username: Your username
- Password: Your password
- Server URL:
- Click "Import" (loads Live TV, Movies, and Series)
- Open Settings (gear icon)
- Navigate to EPG Settings
- Enter your XMLTV EPG URL
- Click "Fetch EPG"
- EPG updates automatically going forward
- Browse: Use tabs (All/Live TV/Movies/Series) and category bar
- Search: Type in search box for instant filtering
- Play: Click play button on any channel
- Enjoy: MPV opens in separate window with full playback controls
- Tabs: Filter by All, Live TV, Movies, or Series
- Category Bar: Horizontal scroll for quick category access
- Search: Real-time filtering by channel/group name
- Favorites: Click star icon to mark favorites
- Go to Series tab
- Select a series to open details
- Choose season from dropdown
- Click Play on any episode → remaining episodes auto-queue
- Import multiple playlists as separate profiles
- Switch profiles from setup screen
- Each profile maintains independent channels, favorites, and settings
- Open Settings → Parental Controls
- Set a PIN (4-6 digits)
- Choose blocking method:
- Manual selection
- Auto-detect adult content
- Category blocking
- Select viewing mode (Hide/Lock/Blur)
- Save settings
Within MPV player window:
| Key | Action |
|---|---|
Space |
Play/Pause |
F |
Toggle Fullscreen |
↑ / ↓ |
Volume Up/Down |
← / → |
Seek Backward/Forward (10s) |
M |
Mute/Unmute |
Q |
Quit Player |
Esc |
Exit Fullscreen |
Why won't MPV open?
MPV must be installed on your system (except Windows v2.3.0+ which includes it bundled).
Verify installation:
mpv --versionSee Installation for platform-specific instructions.
Can I watch channels directly in the app?
No, Better IPTV uses MPV as an external player. This provides superior codec support and performance, but video displays in a separate window.
EPG data not showing?
Check:
- Playlist contains EPG identifiers (
tvg-idortvg-name) - EPG URL configured in Settings → EPG Settings
- EPG data fetched (click "Fetch EPG" button)
- Wait a minute for EPG refresh cycle
How many channels can it handle?
Better IPTV uses virtual scrolling and batch processing to handle 50,000+ channels without performance degradation. Better-IPTV has been using a 150.000+ channel playlist during development without any problems.
Does it work with VPN?
Yes! Ensure your VPN is active before launching streams.
Are my Xtream credentials secure?
Absolutely. All credentials are stored locally in an SQLite database on your device. Nothing is sent to external servers. Logs automatically mask sensitive data.
Can I play local video files?
No, Better IPTV is designed exclusively for IPTV streams. Use MPV directly for local media.
- Check internet connection - Run speed test
- Try another channel - May be provider/server issue
- Adjust MPV cache - Advanced users: edit MPV config
- Verify credentials - Double-check username/password
- Check provider support - Not all Xtream providers offer series
- Retry import - Network issues may cause partial imports
- Linux: Ensure
.AppImagehas execute permissions (chmod +x) - Windows: Run as administrator or check Windows Defender
- macOS: Allow app in System Preferences → Security & Privacy
- Auto-detect not working? - Re-save settings to trigger channel scan
- Lock mode not showing channels? - Update to v2.3.0+ (bug fixed)
- PIN modal stuck? - Restart app, issue resolved in v2.3.0
If you need to share logs for debugging:
Linux: ~/.local/share/better-ip-tv/logs/better-ip-tv.log
Windows: %APPDATA%\com.m0s.better-ip-tv\logs\better-ip-tv.log
macOS: ~/Library/Application Support/com.m0s.better-ip-tv/logs/better-ip-tv.log
(Credentials are automatically masked in logs)
We welcome contributions! Better IPTV is open source and community-driven.
Create an issue with:
- Detailed description
- Steps to reproduce
- OS and app version
- Screenshots if applicable
- Log file (see Troubleshooting)
Open a feature request describing:
- What you want
- Why it's useful
- How it should work
Development Setup:
# Fork & clone
git clone https://github.com/YOUR-USERNAME/better-iptv.git
cd better-iptv
# Install dependencies
npm install
# Run dev server
npm run tauri dev
# Run tests
npm run test # Frontend tests
cd src-tauri && cargo test # Rust testsCode Standards:
- TypeScript: Follow ESLint config (
npm run lint) - Rust: Use
rustfmtandclippycargo fmt cargo clippy
- Commits: Use Conventional Commits
feat: add category quick-access bar fix: resolve EPG timezone bug docs: update README installation steps
Pull Request Process:
- Create feature branch:
git checkout -b feature/my-feature - Make changes with tests
- Run linters:
npm run lint && cargo clippy - Commit:
git commit -m "feat: description" - Push:
git push origin feature/my-feature - Open PR on GitHub with detailed description
- Be respectful and inclusive
- Provide constructive feedback
- Help other users in issues/discussions
- Document your changes clearly
🔒 Parental Controls
- PIN-protected content restrictions with Argon2 encryption
- Manual channel blocking with virtualized selection
- Auto-detection of adult content markers
- Category-level blocking
- Three viewing modes: Hide, Lock, Blur
- Session-based temporary unlock
🎉 Windows MPV Bundled
- Windows users no longer need separate MPV installation
- Everything included in installer
- Still compatible with existing MPV installations
🐛 Bug Fixes
- Auto-detect parental controls now properly adds channels to blocked list
- Lock and Blur modes now correctly show channels (previously would hide them)
- PIN modal no longer gets stuck on "Processing..." after multiple unlocks
GNU General Public License v2.0
Better IPTV is free software. You can use, modify, and distribute it under GPL v2.0 terms.
Why GPL v2.0? MPV is licensed under GPL v2+, requiring derivative works to also be GPL-licensed. We embrace this to promote open source values.
See LICENSE for full text.
- MPV Project - Exceptional media player with comprehensive codec support
- Tauri - Cross-platform framework enabling this project
- Open TV - Architectural inspiration and reference
- IPTV Community - Standards, protocols, and ongoing support
- Issues: Report bugs or request features
- Discussions: Community discussions
Made with ❤️ for IPTV enthusiasts
Better IPTV is not affiliated with any IPTV provider. Users are responsible for compliance with local laws and provider terms.