Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.m3u8.dev/llms.txt

Use this file to discover all available pages before exploring further.

Video downloads are disabled by default on some sites. Follow the tutorial below to enable support for those sites.

Preview

Download

Windows

Download M3U8 Downloader Desktop for Windows

macOS

Coming soon…

Linux

Coming soon…

What It Does

M3U8 Downloader Desktop helps you download or record video streams on desktop.
  • Paste an M3U8, MP4, or page URL
  • Capture hidden stream URLs from the built-in browser
  • Download normal videos or record live streams
  • Inspect failed tasks and retry with the right headers

Quick Start

Most users only need one of these two methods.

Method 1: Paste a URL

Use this when you already have an M3U8, MP4, or page URL.
1

Step 1

Click Add download.
2

Step 2

Paste the URL. Add Cookie only if the site requires login.
3

Step 3

Click Add to queue and wait for the task to start.
Best for:
  • Known media URLs
  • Page URLs handled by yt-dlp
  • Fast one-off downloads

Method 2: Capture from the built-in browser

Use this when the real media URL is hidden.
1

Step 1

Open Capture view.
2

Step 2

Open the target page and play the video.
3

Step 3

Find the detected stream in the capture list and add it to the queue.
Best for:
  • Pages that load the stream only after playback
  • Sites with hidden M3U8 URLs
  • Cases where desktop and mobile User-Agent return different results

Which Method Should You Use?

SituationRecommended method
You already have an M3U8 or MP4 URLPaste a URL
You only have a page URLPaste a URL first
The page hides the real stream URLCapture view
The site needs login or session dataCapture view or add Cookie
You want to record a live streamPaste the live M3U8 URL

Real Examples

These examples show the most common ways people use the app.

Check yt-dlp Supported Sites

If you want to know which websites yt-dlp may support, check the official list: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md Important:
  • This list is maintained by yt-dlp, not by this app.
  • A site being listed does not guarantee it will work normally.
  • Site updates, login requirements, region limits, or anti-bot checks may still cause failures.

Example 1: You already have an M3U8 URL

If you already extracted the stream URL from another tool or from page source, use the direct method. Example URL:
https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8
How to use it:
  1. Click Add download.
  2. Paste the M3U8 URL.
  3. Click Add to queue.
What happens:
  • The task usually goes to Downloading quickly.
  • After it finishes, you can open the file from the queue.

Example 2: The page plays video, but you cannot find the real stream URL

If the site only requests the media after playback starts, use the built-in browser. Example page:
https://hlsjs.video-dev.org/demo/
How to use it:
  1. Open Capture view.
  2. Open the page and start playback.
  3. Wait for the stream to appear in the capture list.
  4. Add the detected stream to the queue.
What happens:
  • The app captures the real media request for you.
  • This is the easiest way to handle hidden M3U8 URLs.

Example 3: You want to record a live stream

If the stream is live, the app can keep saving it until you stop the task. Example URL:
https://demo.unified-streaming.com/k8s/live/stable/live.isml/.m3u8
How to use it:
  1. Click Add download.
  2. Paste the live M3U8 URL.
  3. Start the task and let it run.
  4. Stop it when you want to finish recording.
What happens:
  • The task shows Recording or LIVE.
  • When you stop it, the app finalizes the output file.

Example 4: You only have a page URL and want yt-dlp to extract it

If you do not have the real media URL, you can paste a supported page URL and let the app hand it to yt-dlp. Example URLs:
YouTube: https://www.youtube.com/watch?v=dQw4w9WgXcQ
Vimeo: https://vimeo.com/1169458024
Instagram: https://www.instagram.com/p/DW5dTURkVPw
How to use it:
  1. Click Add download.
  2. Paste the page URL.
  3. If the site requires login, add Cookie first.
  4. Click Add to queue.
What happens:
  • The task usually starts with Extracting.
  • If extraction succeeds, it continues to Downloading.
  • Some sites, especially Instagram, may require a valid login session.
  • Even if a site appears in the yt-dlp supported list, it may not always work normally.

Download Queue

The queue is where you manage all tasks. It shows progress, errors, and actions. Common states:
  • Queued: waiting to start
  • Extracting: reading a page URL or preparing the stream
  • Downloading: saving a normal file
  • Recording: saving a live stream
  • Merging / Finalizing: finishing the output file
  • Completed: finished successfully
  • Failed: stopped with an error
Common actions:
  • Pause or continue
  • Retry the download
  • Open the output file
  • Reveal the file in its folder
  • Open the recovery page
  • Debug request headers

If a Download Fails

Start with these checks:
  1. Read the full error message in the queue.
  2. Check whether the site needs Cookie, Referer, or User-Agent.
  3. If the URL came from a web page, try adding it again from Capture view.
  4. If it is a live stream, make sure the page session is still valid.

Settings

The main setting is FFmpeg M3U8 threads.
  • Range: 1 - 32
  • Default: 1
  • Increase it slowly if a source supports faster downloading

Notes

  • The update button opens the changelog page.
  • In-app auto update is not available yet.
  • Download success depends on the source site.
  • yt-dlp support depends on the target site and may break after site updates.
  • Not every site in the yt-dlp supported list will work correctly at all times.
  • Only download content you are allowed to access and save.