Why M3U8 Doesn't Play Natively
An M3U8 file looks something like this: it contains lines like `#EXTINF:4.0,` followed by a URL to a 4-second video segment. Playing HLS requires a player that reads this manifest, fetches the listed segments in order, and feeds them into the browser's video decoder via MSE. Safari does this natively because Apple created HLS. Chrome and Firefox do not — they need a JavaScript library (hls.js or equivalent) to handle this automatically.
Playing M3U8 with FluxPlays
Paste any M3U8 URL into FluxPlays and press play. FluxPlays detects the `.m3u8` extension or `application/x-mpegurl` content type and automatically initializes hls.js to handle the stream. It handles both VOD (on-demand) playlists and LIVE streams. For live streams, it automatically follows the rolling manifest window so playback stays current. No configuration required — paste the URL, click play.
Troubleshooting M3U8 Playback
If an M3U8 stream doesn't play, there are three common causes: **CORS headers** — the video segments must be served with `Access-Control-Allow-Origin: *` or include your domain. If they don't, the browser blocks the segment requests (this is a server-side restriction). **Authentication** — some M3U8 streams require tokens in the segment URLs that expire. Expired token URLs will play briefly then fail. **Broken segments** — if the origin server is down or the CDN returns 404 for segments, the player will stall. Check the browser's Network tab to confirm which URLs are failing.