A lightweight, secure, and privacy-focused IPTV player that runs entirely in your browser. Stream live TV, movies, and series from your IPTV provider with zero server-side processingβyour credentials never leave your device.
π Demo: http://iptv.xsukax.net:8182
Note: The demo uses HTTP (not HTTPS) to ensure compatibility with HTTP-based IPTV servers, as HTTPS pages cannot connect to insecure HTTP endpoints due to mixed content restrictions.
xsukax IPTV Player is a lightweight, single-file HTML application that enables users to stream IPTV content directly in their web browser without requiring server-side infrastructure or installation. The application interfaces with Xtream Codes API compatible IPTV services, providing an intuitive user experience for managing and consuming live television, video-on-demand content, and episodic series.
Built with vanilla JavaScript and leveraging HLS.js for adaptive streaming, this player emphasizes performance, security, and user privacy while maintaining broad compatibility with modern web browsers.
- AES-256-GCM Encryption: When supported by the browser (via Web Crypto API), all shared configurations are encrypted using industry-standard AES-256-GCM with PBKDF2 key derivation (100,000 iterations), ensuring credentials remain secure during transit and storage
- Base64 Encoding Fallback: For browsers lacking Web Crypto API support, configurations are Base64-encoded with password protection, providing a basic security layer while maintaining functionality across all platforms
- Password-Protected Shares: All shareable configuration URLs require a separate password for decryption, preventing unauthorized access even if the URL is intercepted
- No Server Storage: All authentication and streaming operations occur directly between the user's browser and their IPTV provider, eliminating intermediary data collection
- Zero Data Retention: The application does not log, store, or transmit user credentials or viewing habits to any third-party servers
- Local-Only Persistence: Favorites are stored exclusively in the browser's localStorage, remaining under complete user control
- Memory-Only Sessions: Credentials are held in memory during active sessions and cleared upon logout
- No Automatic Persistence: Login credentials are never saved to disk or localStorage without explicit user action (via encrypted sharing)
- URL Parameter Cleanup: After loading encrypted configurations, sensitive URL parameters are automatically removed from browser history
- Direct Streaming: Video content streams directly from IPTV providers to the user's browser without proxy servers
- Minimal Footprint: Single-file architecture with no external dependencies beyond HLS.js and standard browser APIs
- Transparent Operation: Open-source codebase allows full security auditing by the community
- Multi-Content Support: Seamlessly switch between Live TV, Movies, and Series with dedicated interfaces for each content type
- Advanced Search: Real-time search across all channels with instant results and match highlighting
- Category Filtering: Organize content by categories provided by your IPTV service for efficient browsing
- Favorites Management: Star your preferred channels for quick access across sessions
- Episode Browser: Navigate series content with organized season and episode listings
- HLS Adaptive Streaming: Automatic quality adjustment based on network conditions using HLS.js
- Multiple Format Support: Handles M3U8 streams for live content and direct MP4/MKV playback for VOD
- Low Latency Mode: Optimized HLS configuration for reduced buffering and improved responsiveness
- Progressive Loading: Pagination system loads content incrementally, ensuring fast initial page loads even with extensive channel lists
- Clean Modern UI: GitHub-inspired design with intuitive navigation and responsive layout
- Real-Time Notifications: Contextual feedback for all operations (success, error, warning, info)
- Subscription Status Display: Visual indicators showing account expiry dates with color-coded urgency (lifetime, active, expiring soon, expired)
- Skeleton Loading: Smooth placeholder animations during content fetching
- Mobile Responsive: Adaptive layout optimized for desktop and mobile viewing
- Zero Installation: Runs entirely in the browser with no plugins or extensions required
- Offline Capable: Can be saved locally and used as a file:// URL without web hosting
- Caching System: Intelligent category and channel caching reduces redundant API calls
- Cross-Browser Compatibility: Works on Chrome, Edge, and other Chromium-based browsers
- Lightweight: Single 50KB HTML file with minimal resource consumption
- Download the
index.htmlfile from this repository - Upload to any web server or hosting provider
- Access via your domain (e.g.,
http://yourdomain.com/index.html) - Important: Use HTTP protocol if your IPTV server uses HTTP to avoid mixed content issues
- Fork this repository
- Navigate to Settings β Pages
- Select Deploy from a branch β Choose
mainbranch β/ (root)folder - Click Save
- Access your player at
https://yourusername.github.io/xsukax-IPTV-Player/ - Note: GitHub Pages uses HTTPS, which may prevent connections to HTTP IPTV servers
- Download
index.htmlto your computer - Open directly in Chrome or Edge browser (File β Open or double-click)
- No web server required; functions perfectly as a local file
- Shareable URLs generated in file mode will reference the local file path
Simply visit http://iptv.xsukax.net:8182 to use the application immediately without any installation.
graph TD
A[Open Application] --> B{Encrypted URL?}
B -->|Yes| C[Enter Decryption Password]
B -->|No| D[Enter IPTV Credentials]
C --> E[Configuration Loaded]
D --> F[Validate Credentials]
F --> G{Valid?}
G -->|Yes| E
G -->|No| D
E --> H[Access Player Interface]
-
Manual Login:
- Enter your IPTV server URL (e.g.,
http://example.com:8080) - Provide your username and password
- Click Connect to authenticate
- Enter your IPTV server URL (e.g.,
-
Via Shared Configuration:
- Open a shared URL (format:
http://iptv.xsukax.net:8182?config=ENCRYPTED_DATA) - Enter the password provided by the person who shared the configuration
- Click Decrypt to load credentials and favorites
- Open a shared URL (format:
graph LR
A[Select Content Type] --> B[Live TV]
A --> C[Movies]
A --> D[Series]
B --> E[Choose Category]
C --> E
D --> E
E --> F[Search/Browse Channels]
F --> G[Select Channel]
G --> H{Content Type?}
H -->|Live/Movie| I[Stream Begins]
H -->|Series| J[Choose Episode]
J --> I
- Switch Content Types: Use the top navigation tabs (πΊ Live TV | π¬ Movies | πΊ Series)
- Filter by Category: Select from the category dropdown to narrow results
- Search: Type in the search box to find channels across all categories
- Load More: Scroll down or click "Load More" to view additional channels (50 per page)
- Live TV & Movies: Click any channel to begin streaming immediately
- Series: Click a series β Select season and episode from the modal β Stream begins
- Video Controls: Use standard HTML5 player controls (play, pause, volume, fullscreen)
sequenceDiagram
participant U as User
participant P as Player
participant L as LocalStorage
U->>P: Click Star Icon on Channel
P->>L: Save Favorite ID
L-->>P: Confirmation
P->>U: Show "Added to Favorites" Notification
U->>P: Click Favorites Button
P->>L: Retrieve Favorite IDs
L-->>P: Return IDs
P->>U: Display Filtered Favorites List
- Add Favorite: Click the β star icon on any channel card (turns gold β )
- Remove Favorite: Click the β gold star icon to unfavorite
- View All Favorites: Click the Favorites button in the header to see your starred channels
- Persistence: Favorites are stored locally and persist across sessions
The application uses different encryption methods based on browser capabilities:
graph TD
A[Generate Share URL] --> B{Web Crypto API Available?}
B -->|Yes| C[AES-256-GCM Encryption]
B -->|No| D[Base64 Encoding]
C --> E[PBKDF2 Key Derivation<br/>100,000 iterations]
E --> F[Random Salt + IV]
F --> G[Encrypted Config]
D --> H[Password-Protected Base64]
G --> I[Generate Shareable URL]
H --> I
- Modern Browsers (Chrome 37+, Edge 79+): Use AES-256-GCM with PBKDF2 for military-grade encryption
- Legacy Browsers: Fall back to Base64 encoding with password verification (less secure but functional)
- Click the Share button in the header
- Enter a password (minimum 4 characters) for encrypting your configuration
- Click Generate URL
- The encrypted URL and password are displayed
- Copy URL: Click to copy the full URL to clipboard
- Test URL: Opens the URL in a new tab to verify functionality
- Share both the URL and password separately with trusted recipients
- IPTV server URL, username, and password (encrypted)
- Your current favorites list
- Not shared: Viewing history, search queries, or any personal browsing data
- Username Badge: Shows your logged-in username in the header
- Expiry Status:
- π’ Valid until [date]: Active subscription (blue badge)
- π‘ Expires in X days: Expiring within 7 days (yellow badge)
- π΄ Expired: Subscription ended (red badge)
- βͺ Lifetime: No expiration date
Click the Logout button in the header to:
- Clear credentials from memory
- Stop all active streams
- Return to the login screen
- Retain favorites in localStorage for next session
This project is licensed under the GNU General Public License v3.0.
- Frontend: Vanilla JavaScript (ES6+)
- Streaming: HLS.js for adaptive bitrate streaming
- Encryption: Web Crypto API (AES-256-GCM with PBKDF2)
- Storage: Browser localStorage (favorites only)
- API Compatibility: Xtream Codes API
- Supported Formats: M3U8 (HLS), MP4, MKV
- Browser Requirements: Chrome 37+, Edge 79+, or equivalent Chromium-based browsers
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests to improve the application.
This application is a client-side player for legitimate IPTV services. Users are responsible for ensuring they have proper authorization to access content through their IPTV provider. The developers do not provide, host, or distribute any IPTV content or services.
For questions, issues, or suggestions, please open an issue on the GitHub repository.
Made with β€οΈ for the IPTV community