{
  "id": 17929865,
  "title": "HLS vs progressive MP4: what a video downloader actually hands you",
  "url": "https://urgent.news/2026/11/03/hls-vs-progressive-mp4-what-a-video-downloader-actually-hands-you",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-03T07:49:48.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/mobeenahmedgondal/hls-vs-progressive-mp4-what-a-video-downloader-actually-hands-you-1570"
  },
  "original_language": "en",
  "account": "Video downloaders can provide two types of content: progressive MP4 files or HLS streams. A progressive MP4 is a single file, while HLS is a playlist of small segments. HLS stands for HTTP Live Streaming and is used by popular platforms like TikTok, Instagram, Facebook, and YouTube. When a downloader receives a URL pointing to an HLS manifest (.m3u8 file), it faces a different challenge than when it receives a URL to a progressive MP4. Progressive MP4s are straightforward to download and verify, with clear file sizes and headers. HLS manifests, however, are text files containing URLs to segments and do not have a single file size. They often expire, requiring the downloader to fetch fresh manifests each time. To handle HLS, there are two approaches: stitching or delegation. Stitching involves downloading all segments, concatenating them into a single MP4, and providing a downloadable file. However, this method is resource-intensive and complicated, especially when dealing with encrypted segments. Delegation, on the other hand, is simpler and relies on the visitor's browser or app to handle the HLS stream directly. The downloader simply provides the manifest URL, allowing the visitor's device to play the content. The key difference lies in the URL suffix. If the URL ends with .m3u8, it indicates an HLS playlist, not a file. When a downloader encounters an HLS playlist, it should not label it as an MP4, as this would mislead the visitor. It is essential to verify the content and accurately label it as an HLS playlist. The truth should always be reflected in the button labels and the download experience.",
  "summary": "When I started building the downloader on ramrom.io, I assumed every video on the internet was an MP4. A URL points at a file, you fetch the bytes, you hand them to the visitor. Simple. Then I started handling real provider responses and discovered that a large chunk of video on the web is not a file at all — it is a playlist. That playlist is HLS: HTTP Live Streaming. Instead of one video file,…",
  "key_points": [
    "Progressive MP4s are single files with clear sizes and headers",
    "HLS streams are playlists of segments with no single file size",
    "HLS requires either stitching (resource-intensive) or delegation (browser/app handling)"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}