About this tool
Paste an HTTPS link to an .m3u8 playlist, or drop a local .m3u8, .ts or .mp4 file, and this player starts it on whichever playback path your browser actually has. Safari and iOS report canPlayType('application/vnd.apple.mpegurl'), so the URL goes straight to a <video> element and the operating system demuxes it. Every other browser plays HLS through Media Source Extensions, so hls.js is fetched on demand and drives the same element. The page names the path it picked and why, and you can switch to the other one at any time to see whether a stream behaves differently under each.
The point of the tool is the panel next to the video. The variant ladder lists every rendition in the master playlist with its resolution, average and peak bandwidth, codec string and declared frame rate, and marks the one playing right now. Alternate renditions — audio and subtitle tracks — are listed with their language, name and default flag. A live buffer readout shows how many seconds are buffered ahead of the playhead, and the level-switch log records every quality change with a timestamp, the level it came from, the level it went to and the bandwidth estimate that was in force. The playlist card reports VOD / EVENT / live, target duration, segment count, total duration for VOD, and measured latency when the stream is live.
When playback fails, the tool says what actually happened instead of showing a broken video element. Most streams that refuse to play in a browser page are not broken: they are served without an Access-Control-Allow-Origin header, so the browser fetches the playlist, sees no permission to hand the bytes to this page's JavaScript, and blocks it. The diagnosis probes the URL, distinguishes that case from mixed content (an http:// stream on an https:// page), from a host that is simply unreachable, and from a playlist that loads fine but contains media the browser cannot decode — and it prints the exact header the stream's server would have to send.
One honest caveat, and it is the only one on this site: your browser fetches the stream directly from its origin, so the stream's server sees your IP address, your user agent and every segment you request. Nothing is uploaded to ByteScope — there is no server in the middle, which is exactly why the origin sees you. DRM-protected streams (Widevine, FairPlay, PlayReady) will not play here at all: they need a licence exchange with the content owner's key server, which this page has no part in. Clear streams and AES-128 streams whose key URI is reachable play normally.