What the stream tester does
This page is a Media Source Extensions (MSE) player wired to hls.js and dash.js - the same libraries used by Mux, Cloudflare Stream, Twitch web, and most modern OTT websites. It detects the manifest type from the URL extension, loads the right library, plays the stream in the HTML5 video element, and surfaces variant list, current rung, bandwidth, and buffer health as the player switches up and down the ladder.
Why a stream might not play here
The browser security model is strict about cross-origin media. Four common failure modes:
| Symptom | Cause | Fix |
|---|---|---|
| Manifest fetch blocked | CORS - the stream origin does not send Access-Control-Allow-Origin | Whitelist the origin on your CDN or proxy via a service that does |
| Network error / refused | Mixed content - HTTPS page cannot fetch HTTP stream | Serve the stream over HTTPS |
| Manifest loads but no video | Codec gap - browser cannot decode (HEVC outside Safari, AV1 on older Chrome) | Add an H.264 rendition or use Safari to test HEVC |
| 403 / signed URL error | The stream requires a token, cookie, or referer we cannot provide | Generate a fresh signed URL and paste that, or whitelist this tester domain |
Stream URL extension matters
- HLS manifests end in
.m3u8- master or media playlist. - DASH manifests end in
.mpd. - If the URL has neither extension (some live origins use
/manifest), set the type in the dropdown that appears after a failed auto-detect.
Frequently Asked Questions
How do I test an HLS stream URL?
Paste the .m3u8 URL into this tool and press Test stream. The tester uses hls.js (or native Safari HLS) to load the manifest, fetch segments, and play the stream while showing variants, codecs, bandwidth, and buffer health. Works directly with CORS-enabled HTTPS streams.
How do I play an m3u8 URL online?
Most browsers (Chrome, Firefox, Edge) cannot play m3u8 natively - only Safari can. Open this page, paste the m3u8 URL, and the tester uses hls.js via Media Source Extensions to decode segments into the HTML5 video element.
Why won't my stream play in the tester?
The most common reasons are CORS (the origin does not send Access-Control-Allow-Origin), mixed content (HTTPS page → HTTP stream), codec gaps (HEVC outside Safari, AV1 on older browsers), or authentication (signed URLs that expired or require a cookie). The diagnostic panel pinpoints which one.
Does this tester work with live streams?
Yes - live and VOD HLS / DASH are both supported. For live, the player joins at the live edge and the variant list updates as the playlist refreshes. Low-Latency HLS (with CMAF chunks) is supported by recent hls.js builds.