Paste an HLS or M3U8 stream URL to play it online in your browser and check playback, quality levels, bandwidth, buffering and stream errors.
Working with local files instead? Open ProRes footage in the player or convert ProRes to MP4.
Paste an HLS or M3U8 URL and the page loads the playlist, starts playback and reports what the player sees. You get the quality variants from the manifest, the bandwidth the player measured, how much buffer is ahead of the playhead, live latency where the stream exposes it, and a log of the events and errors behind a failure.
The point is to answer why a stream misbehaves without opening developer tools and reading raw network requests.
Quality level is the variant currently playing. In Auto mode the player picks it from measured bandwidth and buffer health, so it changes during playback.
Bandwidth estimate is what the player measured while downloading segments. It is not the bitrate advertised in the playlist, and the two often disagree.
Buffer is how many seconds of media sit ahead of the current playback position. A buffer that keeps collapsing toward zero is the usual cause of repeated stalling.
Live latency is how far behind the live edge playback is sitting, shown next to the target the player is aiming for.
Dropped frames come from the browser itself and point at decoding or rendering pressure rather than a network problem.
Playback errors are recorded in the diagnostics log with the time they happened, whether they were fatal, and the HTTP status when the browser makes one available.
HLS is the streaming protocol. M3U8 is the playlist file format that HLS uses to describe a stream. When someone shares an M3U8 link they are sharing the entry point to an HLS stream.
A master playlist lists the available quality variants. Each variant points at a media playlist, which lists the actual segments the player downloads.
A browser applies restrictions a desktop player does not, and any one of them can block a stream that is otherwise fine.
Adaptive bitrate streaming publishes the same content at several resolutions and bitrates. The player starts somewhere reasonable and moves up or down as conditions change, which is what Auto mode does.
Selecting a level manually is useful when you want to confirm a specific variant plays, or to check whether a problem follows one rendition. Bitrates listed next to each level come from the playlist and describe the variant, not your connection.
Live HLS deliberately plays behind the live edge so there is buffer to absorb network variation. How far behind depends on segment length, how many segments the player holds before starting, the playlist configuration and whether the stream uses Low-Latency HLS.
The latency shown here is the player's own measure of its distance from the live edge. It is not glass to glass latency and it does not include capture or encoding time.
Paste the .m3u8 URL into the field above and press Test Stream. The player loads the playlist, starts playback and shows quality levels, bandwidth, buffer, live latency and any errors the player reports.
An M3U8 file is the playlist used by HLS. It is a plain text file that lists either the available quality variants or the media segments that make up the stream.
Yes, as long as your browser can reach the stream and the media formats are supported. Live streams also show live latency and the player's target latency where that information is available.
Browsers only allow a page to read a stream from another origin when that server permits it. If the server does not, the browser blocks the request. A CORS failure does not mean the HLS stream itself is broken, only that this browser was not allowed to read it from this page.
VLC does not enforce browser cross-origin rules and ships its own decoders. A browser has to satisfy CORS, may refuse plain HTTP streams on an HTTPS page and can only play codecs it supports. Any of those can stop a stream that plays fine in VLC.
It can play and inspect LL-HLS streams that hls.js supports, and the playlist section flags partial segments when the playlist advertises them. Support is not universal and depends on the stream and the browser.
No. Your browser requests the playlist and the segments directly from the stream host. Nothing is routed through HammadLab servers.
Browsers that fall back to native HLS playback do not expose quality levels, bandwidth estimates or latency to the page. Those fields are shown as unavailable rather than filled with guesses.
I build custom video processing, streaming, WebRTC and media infrastructure for production systems.