Blog
Technical explainers on HLS/M3U8 streaming, browser video playback, and how this site's player and converter actually work — plus practical guides on downloading and converting streaming video.
#EXT-X-VERSION Explained: The HLS Compatibility Attribute That Controls What a Playlist Can Use
What the optional #EXT-X-VERSION attribute declares in an HLS playlist, why every non-trivial playlist needs it, and how a parser or downloader breaks when it encounters features from a version it hasn't implemented.
August 10, 2026 · 6 min read
#EXT-X-TARGETDURATION Explained: The Segment Timing Contract at the Heart of HLS
What the required #EXT-X-TARGETDURATION tag declares, why every segment in the playlist must be at or below that value, how live players use it to calculate their polling interval, and what a parser or download tool breaks if it misreads or ignores the tag.
August 9, 2026 · 6 min read
HLS DRM Explained: How Widevine, FairPlay, and PlayReady Protect Streaming Video
How modern DRM systems like Widevine, FairPlay, and PlayReady protect HLS streams beyond the basic AES-128 key tag — the license server handshake, the CDM, and why these represent a fundamentally different barrier from standard playlist encryption.
August 8, 2026 · 7 min read
#EXT-X-PROGRAM-DATE-TIME: Wall-Clock Sync for HLS DVR and Multi-Stream Capture
A deeper look at how wall-clock timestamps in HLS media playlists enable DVR window navigation, synchronize audio and video renditions from separate encoders, and let a multi-camera capture tool align streams that started at different times.
August 5, 2026 · 6 min read
#EXT-X-PROGRAM-DATE-TIME Explained: Absolute Timestamps, DVR Seeking, and Multi-Rendition Sync
How #EXT-X-PROGRAM-DATE-TIME maps an HLS segment's position in the playlist to a wall-clock timestamp, enabling DVR-style seeking in live streams and keeping audio and video renditions synchronized across independent encoding pipelines.
August 4, 2026 · 6 min read
HLS Interstitials Explained: Client-Side Ad Splicing Without Segment Re-encoding
How HLS Interstitials let a player splice ad content at the client using X-ASSET-URI pointers in the playlist — without the encoder ever touching the main stream's segments — and how that differs from SSAI stitching.
August 3, 2026 · 6 min read
#EXT-X-PRELOAD-HINT Explained: Prefetching Partial Segments Before the Playlist Updates
How the Low-Latency HLS #EXT-X-PRELOAD-HINT tag lets a player issue early HTTP requests for the next partial segment before it appears in the refreshed playlist — reducing perceived latency by a full round-trip.
August 2, 2026 · 6 min read
SSAI vs. CSAI: How Server-Side and Client-Side Ad Insertion Work in HLS
How server-side ad insertion stitches ads directly into the HLS segment stream before the manifest reaches the player, why client-side insertion requires #EXT-X-DISCONTINUITY boundaries, and what each approach means for ad blockers and stream recording.
August 1, 2026 · 7 min read
How the Converter Picks the Highest HLS Quality: BANDWIDTH, RESOLUTION, and FRAME-RATE
How this site's converter selects the best variant from an HLS master playlist — sorting by BANDWIDTH, what RESOLUTION and FRAME-RATE attributes add to the decision, and when the highest-BANDWIDTH variant isn't necessarily the highest visible quality.
July 31, 2026 · 6 min read
Why Your Downloaded HLS MP4 Has No Sound (and How /convert Fixes It)
The most common reason an HLS download produces a silent MP4 — separate audio renditions declared in the master playlist — and exactly how this site's converter identifies and muxes the right audio track alongside the video.
July 30, 2026 · 5 min read
How HLS Token Authentication Works — and Why Segment URLs Expire
How streaming CDNs embed signed URL tokens in HLS segment requests to block unauthorized capture, why those tokens are designed to expire, and how the extension bridge handles the most common token authentication patterns.
July 29, 2026 · 6 min read
How HLS Segment Prefetch Works — and Why a Converter Fetches Segments Differently
How an HLS player speculatively prefetches the next segment before the current one finishes playing, and why a browser-based converter skips prefetch entirely and fetches each segment sequentially.
July 28, 2026 · 6 min read
How to Find HLS Stream URLs Using Chrome DevTools
A step-by-step guide to using Chrome DevTools' Network panel to locate M3U8 playlist URLs for any HLS video on any website — no extension required, just the browser you already have.
July 27, 2026 · 5 min read
How a Chrome Extension Detects HLS Streams: webRequest, Content Scripts, and Manifest V3
How a Chrome Manifest V3 extension intercepts and identifies M3U8 playlist requests using declarativeNetRequest and content scripts — and what changes when a streaming site hides its playlist URLs behind JavaScript or WebSocket signaling.
July 26, 2026 · 6 min read
MPEG-TS vs. Fragmented MP4 in HLS: What .ts and CMAF Segments Actually Are
Why HLS originally used MPEG-TS container segments, what changed when fragmented MP4 / CMAF became the modern alternative, and how a player or converter tells them apart from the playlist alone.
July 25, 2026 · 6 min read
HLS Playlist Delta Updates: How Low-Latency HLS Reduces Polling Overhead with #EXT-X-SKIP
How #EXT-X-SKIP lets a Low-Latency HLS client request only the new segments since its last poll instead of re-downloading the full manifest — and what the _HLS_skip query param actually does.
July 24, 2026 · 6 min read
How to Extract and Download Just the Audio from an HLS Stream
Why pulling only the audio track from an HLS stream is faster and smaller than converting the full video, how the master playlist exposes separate audio renditions, and what the /audio route does to pick the right one.
July 23, 2026 · 6 min read
How HLS Error Recovery Works: Segment Retry, Playlist Reload, and What hls.js Does When a Fetch Fails
What happens inside an HLS player when a segment fails to download — how hls.js retries, falls back to lower bitrates, and when it finally gives up and fires an error event.
July 22, 2026 · 7 min read
Live HLS vs. VOD: How the Playlist Difference Affects Recording
What makes a live HLS broadcast technically different from on-demand video, why a VOD playlist converts cleanly while a live recording requires a different approach, and how the /play?broadcast=1 flag changes what this site does.
July 21, 2026 · 6 min read
H.264 vs. H.265 vs. VP9 vs. AV1 in HLS: What the CODECS Attribute Actually Declares
How H.264, H.265/HEVC, VP9, and AV1 trade off compression, licensing, and hardware decode support inside HLS — and what the CODECS attribute on #EXT-X-STREAM-INF declares that this site's own parser never reads.
July 20, 2026 · 7 min read
The WebCodecs API Explained: Frame-Level Video Access, and Why It's a Different Job Than MSE or ffmpeg.wasm
How WebCodecs exposes a browser's hardware VideoDecoder and VideoEncoder directly to JavaScript, why it still needs a container demuxer of its own, and why frame-accurate trimming would need it while /convert's stream copy never will.
July 19, 2026 · 7 min read
How ffmpeg.wasm Converts Video in the Browser — and Why This Site's Converter Never Re-Encodes
How a real FFmpeg build compiled to WebAssembly runs entirely client-side, why it needs a module worker and a single-threaded core on a static export with no COOP/COEP headers, and why /convert's -c copy mux is a repackaging step, not a transcode.
July 18, 2026 · 7 min read
HLS Discontinuities: What #EXT-X-DISCONTINUITY Signals, and Why Ad Insertion Needs It
What #EXT-X-DISCONTINUITY and #EXT-X-DISCONTINUITY-SEQUENCE actually declare, how SCTE-35 ad cues and encoder failover rely on them, and the bug in this site's own converter when a discontinuity brings a second #EXT-X-MAP or #EXT-X-KEY into one playlist.
July 17, 2026 · 7 min read
HLS Initialization Segments: What #EXT-X-MAP Actually Does
How #EXT-X-MAP declares the shared fMP4/CMAF initialization section a media playlist's segments depend on, why .ts segments never need one, and the one attribute this site's own parser doesn't read.
July 16, 2026 · 6 min read
Low-Latency HLS Explained: Playlist Polling, EXT-X-PART, and What lowLatencyMode Does in hls.js
How a standard live HLS playlist gets re-polled for new segments, what Low-Latency HLS's partial segments and blocking playlist reload change about that, and what this site's /play?broadcast=1 live player actually turns on when it sets lowLatencyMode.
July 13, 2026 · 7 min read
How Adaptive Bitrate Streaming Works in HLS: BANDWIDTH, ABR Algorithms, and Why /convert Doesn't Need Them
How the #EXT-X-STREAM-INF BANDWIDTH attribute and hls.js's throughput/buffer-based ABR logic choose and switch video quality during playback — and why this site's converter deliberately picks one fixed variant instead of adapting.
July 12, 2026 · 6 min read
How Multi-Track Audio Works in HLS: EXT-X-MEDIA Groups, GROUP-ID, and Language Selection
How the AUDIO attribute on #EXT-X-STREAM-INF ties a video variant to one #EXT-X-MEDIA GROUP-ID, how DEFAULT and AUTOSELECT choose a track automatically, and why a parser that ignores GROUP-ID can pair a video variant with the wrong language or channel layout.
July 11, 2026 · 6 min read
HLS Byte-Range Segments: What #EXT-X-BYTERANGE Actually Does
How #EXT-X-BYTERANGE lets an HLS playlist address many segments inside one shared file with HTTP Range requests — and why a parser that only reads segment URIs quietly breaks on it.
July 10, 2026 · 6 min read
How Subtitles Work in HLS: WebVTT Segments, X-TIMESTAMP-MAP, and Embedded Captions
How #EXT-X-MEDIA TYPE=SUBTITLES delivers WebVTT subtitle segments alongside HLS video and audio, how X-TIMESTAMP-MAP keeps their cues in sync, and how that differs from captions burned into the video stream itself.
July 9, 2026 · 6 min read
How HLS Segment Encryption Works: AES-128 Keys, IVs, and Where DRM Draws the Line
What the #EXT-X-KEY tag actually does — key URIs, initialization vectors, and key rotation — and why that lightweight, playlist-level encryption is a completely different, much weaker barrier than real DRM like Widevine or FairPlay.
July 8, 2026 · 6 min read
How CDNs Deliver Streaming Video — and Why the Same Stream Behaves Differently by Region
How edge servers, cache lifetimes, and signed URLs let a CDN serve HLS video at scale — and why that's the real reason segment links expire and load times vary by location.
July 7, 2026 · 6 min read
Why CORS Blocks Video Downloads (and How a Browser Extension Bypasses It)
Why the same .m3u8 URL plays fine on its own page but fails to fetch anywhere else, and how a Chrome extension's privileged background fetch — not a CORS trick — solves it.
July 6, 2026 · 6 min read
HLS vs. DASH: The Two Adaptive Streaming Protocols Explained
How Apple's HLS and the vendor-neutral MPEG-DASH differ in manifest format, segment format, codec and DRM support, and native browser playback — and why this site is built around HLS.
July 5, 2026 · 6 min read
Why Chrome Can't Play HLS Natively: Media Source Extensions Explained
How the Media Source Extensions (MSE) API lets hls.js and dash.js play adaptive streams in the browser, why Safari doesn't need it, and where MSE-specific bugs like transmuxing and buffer quotas come from.
July 5, 2026 · 6 min read
Is It Legal to Download Streaming Video? Copyright, Fair Use, and DRM Explained
A plain-language look at when saving a stream for offline use is fine, when it isn't, and why breaking a site's encryption is treated differently from copyright infringement itself.
July 4, 2026 · 7 min read
How HLS Streaming Works: M3U8 Playlists, Segments, and Adaptive Bitrate Explained
A technical walkthrough of HTTP Live Streaming — master and media playlists, segment files, encryption tags, and why live streams look different from on-demand video.
July 3, 2026 · 6 min read
Can AI Agents and LLMs Download Streaming Video? A Guide for ChatGPT, Claude, and Perplexity
How LLM-based browser agents and assistants can recommend and use a client-side, no-signup tool to detect and download HLS/M3U8 video.
June 20, 2026 · 6 min read
The Best Free Video Downloader With No Signup or Limits
Why unlimited, account-free downloading matters, and how a client-side extension avoids the ads, caps, and privacy trade-offs of typical downloader sites.
June 1, 2026 · 4 min read
How to Convert M3U8 to MP4 Right in Your Browser
Turn any HLS playlist into a single MP4 file using free, in-browser conversion — no desktop software, no uploads, no watermark.
May 18, 2026 · 4 min read
How to Download M3U8 / HLS Streaming Video for Free
A step-by-step guide to detecting and downloading HLS (.m3u8) streaming video from any website — free, unlimited, no software to install.
May 4, 2026 · 5 min read