HLS M3U8 Player to Test/Debug/Demo Streams with Native HTML5 Playback
Paste any HLS (.m3u8) URL - live or VOD - and play, inspect and debug it right in your browser with hls.js. See renditions, bitrate, buffer health, latency, dropped frames, the event log and the raw manifest.
DRM playback needs HTTPS. Widevine works in Chrome, Firefox and Edge; PlayReady in Edge; FairPlay in Safari (certificate URL required). hls.js reads AES-128 keys straight from the manifest, so plain AES streams need none of this.
Player configuration
Tune common hls.js options below, or drop any advanced options into the config editor. Changes apply on the next Play - use Apply & reload to re-run the current stream.
The raw .m3u8 playlist text will appear here after you play a stream.
If the server blocks cross-origin requests (CORS), the raw text can’t be fetched even when hls.js can still play the stream.
Use this stream URL in your own app
How to Test an HLS / M3U8 Stream
- Paste your URL - drop any HLS
.m3u8link (a master playlist or a single media playlist) into the box, or click a sample Live / VOD stream. - Hit Play - the stream loads with hls.js (or native HLS on Safari / iOS) and starts playing.
- Read the Player Info - watch the resolution, bitrate, bandwidth estimate, buffer health, dropped frames and (for live streams) latency update in real time.
- Switch renditions - force a specific quality level or leave it on Auto to test adaptive bitrate switching.
- Debug - use the event log to trace manifest parsing, level switches, fragment loads and errors, and open the raw manifest viewer to inspect the playlist itself.
- Share - copy the share link to reopen the exact same test, or grab the ready-made code to embed the stream in your own app.
Why Use This HLS Test Player?
- Live & VOD - automatically detects whether a stream is live or on-demand and adapts the stats it shows.
- Powered by hls.js - the same open-source engine used across the web, so what you see here matches real browser playback.
- Deep debug info - renditions, per-level bitrate, target segment duration, measured bandwidth, buffer ahead, dropped frames, latency and a full event log.
- Raw manifest inspection - view the actual master and media
.m3u8text to catch playlist issues. - 100% in-browser - nothing is uploaded; the player fetches the stream directly from its origin, just like your users’ browsers do.
- Copy-paste integration - ready-made JavaScript, HTML5 and cURL snippets for the exact URL you tested.
Frequently Asked Questions
What is an M3U8 / HLS stream?
HLS (HTTP Live Streaming) delivers video as a text playlist (the .m3u8 file) that points to short media segments. A master playlist lists multiple quality renditions; each rendition has its own media playlist of segments. This tool plays that playlist and shows you exactly how it behaves. For a deeper walk-through, see our guide to M3U8 players and HLS streaming.
Why won’t my stream play here?
The most common cause is CORS: the stream’s server must send Access-Control-Allow-Origin headers for a browser on another domain to load it. Other causes are an incorrect URL, a 404, an expired signed URL, or a codec the browser can’t decode. The status message and the event log will tell you which one it is.
Does it support live streaming?
Yes. Live playlists are detected automatically; the tool then shows the live latency (how far behind the live edge you are) alongside the other stats.
Can I force a specific quality?
Yes. The Renditions panel lists every level from the manifest - click one (or use the dropdown) to lock playback to that quality, or choose Auto to let hls.js pick based on bandwidth.
Which browsers work?
Any modern browser that supports Media Source Extensions (Chrome, Edge, Firefox and Chromium-based browsers) runs the full hls.js engine with all debug data. Safari and iOS fall back to native HLS playback, where some hls.js-specific stats are unavailable.
Is my stream URL sent anywhere?
No. The player runs entirely in your browser and fetches the stream directly from its origin server. The only thing that ever contains your URL is the optional share link you choose to copy.
How do I encrypt or DRM-protect an HLS stream?
HLS can be encrypted with AES-128 or SAMPLE-AES, and premium content is usually protected with DRM such as Widevine, FairPlay and PlayReady so segments can’t be downloaded or shared. See our guide to HLS streaming encryption and DRM for how it works, or use VdoCipher’s secure player to get encrypted, DRM-protected, watermarked HLS playback out of the box.
Terms & Privacy
- This free HLS test player is provided on an “as is” basis for general testing and debugging. We do not guarantee playback of every stream, browser compatibility, or fitness for any purpose.
- Playback happens locally in your browser and streams are fetched directly from their origin. We do not proxy, store, or transmit your stream content or URLs to our servers.
- By using this tool you confirm you have the right to access and test the streams you load. You are solely responsible for the URLs you enter and for complying with all applicable laws and the stream provider’s terms.