A feature-rich, responsive web-based IPTV player with support for modern streaming protocols, TV/Smart TV remote control navigation, and cross-device compatibility.
- Multi-Protocol Support: HLS (m3u8) and DASH (mpd) streaming with automatic format detection
- Dual Player Engines: HLS. js and DASH.js with auto-fallback capability
- Flexible Input: Load M3U/M3U8 playlists from URLs or local files
- Automatic TV Detection: Detects Samsung TV, Android TV, Google TV, LG WebOS, Tizen, and more
- Remote Control Navigation: Full remote control support with arrow keys, OK/Enter, and volume controls
- TV Mode UI: Optimized interface for large screens with TV-focused navigation
- Home Screen Grid Navigation: Card-based navigation system for remote control
- Multiple Playlists: Add, manage, and switch between multiple playlists
- Live Playlist Updates: Refresh playlists from URLs on-demand
- Persistent Storage: Auto-save playlists and playback preferences using browser localStorage
- Favorites System: Mark channels as favorites for quick access
- Smart Search: Filter channels by name across all playlists
- Channel Info Display: View current channel name and position in playlist
- Logo Support: Display channel logos from M3U metadata (with fallback SVG placeholder)
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Auto-Fullscreen: Automatic fullscreen mode for desktop and landscape mobile
- Auto-Hiding Controls: Mini dock control panel auto-hides with activity detection
- Dark/Light Theme Toggle: User-customizable theme preference
- Orientation Detection: Handles device orientation changes seamlessly
- Auto-Resume: Remembers last played channel and resumes on app reload
- Quick Navigation: Arrow keys to switch between channels
- Volume Control: Adjustable volume with visual indicator
- Mute Toggle: Quick mute/unmute functionality
- Full Keyboard Support: Spacebar to play/pause, F for fullscreen, M for mute
| Button | Action |
|---|---|
| Arrow Keys | Navigate menu / Change channels |
| OK/Enter | Select / Play channel |
| CH+/CH- | Next/Previous channel |
| VOL+/VOL- | Increase/Decrease volume |
| Mute | Toggle audio mute |
| Play/Pause | Control playback |
| Stop | Return to home |
| Back/Return | Go back / Exit fullscreen |
| Info | Show channel information |
- Clone the repository:
git clone https://github.com/bugsfreeweb/bugsfreetv.git
cd bugsfreetv- Open in a web server:
# Using Python 3
python -m http.server 8000
# Using Node.js http-server
npx http-server
# Using PHP
php -S localhost:8000- Open in your browser:
http://localhost:8000
- Click "Add Playlist" (Remote button)
- Enter playlist name
- Paste M3U/M3U8 URL
- Wait for parsing to complete
- Use file upload interface
- Select M3U/M3U8 file from device
- File is automatically parsed and imported
- Click the sync icon on any URL-based playlist to refresh channels
The player supports standard M3U8 format with the following metadata:
#EXTINF:-1,tvg-logo="http://example.com/logo.png",Channel Name
http://streaming-url.example.com/stream.m3u8
#EXTINF:-1,tvg-logo="http://example. com/logo2.png",Another Channel
http://dash-url.example.com/manifest.mpd
tvg-logo- Channel logo URL (displayed in UI)- Channel name (displayed in playlists and playback)
- Escape / Backspace - Go to home
- โ / โ - Previous/next channel (while playing)
- Space - Play/Pause
- F - Toggle fullscreen
- M - Toggle mute
- ? - Show keyboard help
- Arrow Keys - Navigate menus / Switch channels
- OK/Select - Confirm / Play channel
- Volume Up/Down - Adjust volume
- Mute - Toggle audio
- Play/Pause - Control playback
- Stop - Return to home
All user data is stored locally in the browser:
- Playlists: Complete playlist data and metadata
- Favorites: Saved channel favorites
- Last Played: Resume point on app restart
- Theme: User's theme preference
- Player Engine: Selected playback engine
Data is stored in localStorage and persists across browser sessions.
- โ Chrome/Chromium 60+
- โ Firefox 55+
- โ Safari 12+
- โ Edge 79+
- โ Smart TV Browsers (WebOS, Tizen, Android TV)
- HLS.js - HLS protocol streaming support
- DASH.js - DASH/MPEG-DASH protocol streaming support
- Font Awesome - Icon library for UI controls
- Fetch API - Playlist loading
- localStorage - Data persistence
- Fullscreen API - Fullscreen mode
- Media Element API - Video playback
- Keyboard Events - Control handling
The application automatically detects and uses the best available player:
- Auto (Default) - Automatic selection based on URL format
- HLS.js - Force HLS protocol handling
- DASH.js - Force DASH protocol handling
- Native - Use browser's native HTML5 video player
The app automatically detects:
- Desktop vs mobile devices
- Portrait vs landscape orientation
- TV and Smart TV devices
- Available screen size and capabilities
Modify CSS variables to customize appearance:
--primary: #color
--accent: #color
--danger: #color
--bg: #color
--text: #colorEdit playlists directly through the UI or import pre-configured M3U files.
- Verify the M3U/M3U8 URL is accessible and contains valid stream links
- Check browser console for CORS or network errors
- Ensure the file format is valid
- Verify the stream URL is active and accessible
- Check that your browser supports the streaming protocol (HLS or DASH)
- Try switching the player engine in settings
- Check for region blocking or DRM restrictions
- Ensure TV mode is properly detected (check browser console)
- Verify your device/TV remote is sending keyboard events
- Try pressing arrow keys and Enter to test remote input
- Some browsers restrict fullscreen on insecure contexts (non-HTTPS)
- Check browser permissions for fullscreen requests
- Try using HTTPS to enable all features
- Desktop (Windows, macOS, Linux)
- Tablets (iPad, Android tablets)
- Mobile (iOS Safari, Android Chrome)
- Smart TVs:
- Samsung Smart TV
- LG WebOS
- Android TV
- Google TV
- Tizen
- Netcast
[Your License Here]
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
For issues, feature requests, or questions:
- Open an GitHub issue
- Check existing issues for solutions
- Review the troubleshooting section
- HLS.js team for excellent streaming support
- DASH.js community for MPEG-DASH implementation
- Font Awesome for UI icons
Last Updated: 27-11-2025 Version: 1.0.0