StreamProbe

Hls Validator

An HLS / M3U8 validator fetches your .m3u8 playlist over HTTP(S) and checks that it parses, that the referenced media or variant playlists are reachable, and that the underlying segments carry valid video. A passing result means the playlist resolved, our server pulled a segment, and we read codec, resolution, frame rate, and bitrate from it — the same path a browser or a player like hls.js would take. HLS is delivery-side (CDN-fronted), so this catches the failures viewers actually hit: a stale playlist, a 404 on a variant, or a CORS/redirect that breaks playback.

Run the test

Paste your stream URL (or run the pre-filled example). StreamProbe probes it from our servers — reachability, codec, resolution, frame rate, and a live bitrate sample.

How to read your HLS results

Playlist reachability

HLS rides on plain HTTP(S), so the first check is whether the master/media playlist returns 200. A 403 or 404 here is the classic "it plays for me but not for them" — usually a signed-URL expiry, a region restriction, or a CDN that has not warmed the path yet. Redirect chains and missing CORS headers also surface as reachability problems.

Bitrate & variants

A multi-variant (ABR) master playlist advertises several bitrate renditions. StreamTest measures the segment it pulls; compare it against the BANDWIDTH attribute in the playlist. A large gap means the encoder is not hitting the rung it claims, which makes adaptive players over- or under-switch.

Segment freshness & latency

For a live HLS stream the media playlist should keep advancing (new #EXTINF segments appearing). A playlist that never updates means the origin packager has stalled even though the URL is "reachable". HLS is inherently higher-latency than RTMP/SRT (segment duration × buffer); if low latency matters, that is an LL-HLS or SRT conversation.

Codec compatibility

Browsers want h264 + AAC in an fMP4/TS container for the widest reach; h265/HEVC plays only on a subset of devices. A "passing" probe that reports an exotic codec will still fail for many of your viewers — codec, not just reachability, is part of a real HLS validation.

Frequently asked questions

My m3u8 plays in VLC but not in the browser — why?

VLC is permissive about CORS, redirects, and codecs that browsers reject. Common browser-only failures are missing Access-Control-Allow-Origin headers, an h265 codec the browser cannot decode, or mixed-content (HTTP segments under an HTTPS page). StreamTest probes from a server, so pair it with a browser test for CORS-specific issues.

What does a valid HLS playlist look like?

A valid live media playlist starts with #EXTM3U, declares #EXT-X-VERSION and #EXT-X-TARGETDURATION, and lists #EXTINF segment entries that keep advancing as the stream runs. A master playlist instead lists #EXT-X-STREAM-INF variant entries pointing at media playlists.

Why is my HLS stream so far behind real time?

Standard HLS latency is roughly the segment duration times the number of buffered segments — often 15–30 seconds. To cut it, shorten segments and adopt Low-Latency HLS (LL-HLS), or use SRT/RTMP for the contribution leg and repackage closer to the edge.