# YouTube Download Stuck at 0% or 99%? What to Check

Source: https://b-roll-6hk.pages.dev/troubleshooting/download-stuck-0-or-99/
Published: 2026-09-25
Updated: 2026-09-25
Author: Ema Zamboni, video editor (https://b-roll-6hk.pages.dev/about/)
Section: Troubleshooting (https://b-roll-6hk.pages.dev/troubleshooting/)

**In short:** A YouTube download stuck at 0 percent is still preparing: fetching formats, finishing B-ROLL's first-launch setup, or waiting on a sign-in check. One stuck near 99 percent is merging video and audio with ffmpeg or converting to ProRes or DNxHR, which shows its own percentage. Read the download log, then retry or restart B-ROLL.

## Why is a YouTube download stuck at 0 percent?

A YouTube download that never leaves zero is still preparing: yt-dlp is asking YouTube for the video's details and stream list, and no video data has arrived. In B-ROLL the card reads **preparing…** while yt-dlp fetches them, then **downloading** and a live percentage once data flows.

A card that holds at zero is waiting on one of four things, and each leaves a different trace:

- **First-launch setup.** B-ROLL is still installing its tools. The TOOLS status in the sidebar's Advanced panel shows what is missing.
- **The queue.** B-ROLL runs one download at a time, so a card marked **queued** waits for the one ahead of it. **download now** on a queued card moves it to the front and pauses the running download, which resumes afterwards.
- **A sign-in check.** As of September 2026, YouTube can answer a request with "Sign in to confirm you're not a bot". B-ROLL then tries your browser logins (the log says `Trying your saved logins…`) and, if none works, opens the sign-in wizard.
- **A clip deep inside a long video.** Seeking into one large stream could stall a clip for minutes, so B-ROLL prefers YouTube's HLS streams for clips.

The table maps every point where a B-ROLL download can appear stuck to what the toolchain is doing there and what you do about it.

| Where it stops | What is happening | What to do |
| --- | --- | --- |
| Card says **queued** | Waiting for the download ahead of it | Wait, or click **download now** |
| Card says **preparing…** at 0 percent | yt-dlp is fetching the video's details and formats | Read the last log line |
| 0 percent on the first launch | B-ROLL is still installing yt-dlp, ffmpeg and Deno | Wait for `✓ All components ready.` in the log |
| 0 percent, log mentions sign-in | YouTube wants a signed-in session | Follow the sign-in wizard with your own account |
| Clip card at 0 percent, no speed | ffmpeg is opening the stream at the clip's start | Wait: clip cards never show a speed |
| 99 or 100 percent, full video | ffmpeg is merging the video and audio streams | Wait for **done** |
| Card says **to convert** or **converting…** | The ProRes or DNxHR conversion, with its own percentage | Wait: it uses every CPU core |

[Download B-ROLL for Windows](https://b-roll-6hk.pages.dev/download/): free, Windows 10 and 11 today, macOS and Linux planned. No account, no ads.

## Why is a YouTube download stuck at 99 percent?

A YouTube download near 99 or 100 percent has finished receiving data, and ffmpeg is now building the file. The [yt-dlp README](https://github.com/yt-dlp/yt-dlp) says ffmpeg is required for merging separate video and audio files. As of September 2026, YouTube serves 1080p and higher as separate video and audio streams, so a 1080p or 4K download ends with this merge.

yt-dlp's percentage counts downloaded data, so the bar stops moving while yt-dlp is merging formats: ffmpeg writes both streams into one file, and a long 4K file takes longer to write than a short 1080p one. For the tool doing that work, see [what ffmpeg is and why downloaders need it](https://b-roll-6hk.pages.dev/compare/what-is-ffmpeg/).

ProRes and DNxHR add a second phase. yt-dlp first merges the best streams into an MKV master, then ffmpeg converts it to a `.mov`, and the card changes to **to convert**, then **converting…** with its own percentage. B-ROLL runs one conversion at a time on every CPU core, and the next download starts while the previous file converts.

If a conversion fails, B-ROLL keeps the MKV master and logs `⚠ DNx transcode failed; keeping the MKV.`, so the downloaded footage is never lost. The whole pipeline is described in [YouTube to ProRes and DNxHR](https://b-roll-6hk.pages.dev/features/youtube-to-prores-dnxhr/).

## What does B-ROLL do on its first launch?

B-ROLL downloads yt-dlp, ffmpeg and Deno on first launch into `%LOCALAPPDATA%\Broll`. Until that setup finishes, B-ROLL has no tools to download with, so a first launch is a normal reason for a card to wait at 0 percent.

The setup runs in the background behind the main window, in this order:

1. Download `yt-dlp.exe` and update it to the latest nightly build.
2. Download the ffmpeg package and keep only `ffmpeg.exe`.
3. Download Deno, the JavaScript runtime. As of September 2026, the [yt-dlp README](https://github.com/yt-dlp/yt-dlp) says full YouTube support needs its yt-dlp-ejs component, which runs on a JavaScript runtime such as Deno.
4. Set up a local helper service that yt-dlp uses.
5. Resolve one public test video so the first real download starts faster.

On Ema Zamboni's PC the three tools measured 17.0 MB for `yt-dlp.exe`, 194.8 MB for `ffmpeg.exe` and 96.4 MB for `deno.exe`. The log reports each step (`Installing ffmpeg…`, `Installing JS runtime…`) and ends with `✓ All components ready.`

If TOOLS still shows `ffmpeg: missing` or `JS runtime: missing` after setup, **Reinstall tools** downloads ffmpeg and Deno again. If Windows blocked the app before any of this ran, see [Is B-ROLL safe? SmartScreen, signing and checksums](https://b-roll-6hk.pages.dev/troubleshooting/windows-smartscreen-warning/).

## How long should you wait for a stuck YouTube download?

Wait as long as the download log keeps adding lines: judge by the card state and the log, not by the percentage. B-ROLL shows no time remaining, so the live speed on the card (for example `⬇ 5.0MB/s`) and new log lines are the signs of progress.

- **Downloading with a speed.** Data is arriving. A low speed is a different problem, covered in [YouTube download slow or throttled? Causes and fixes](https://b-roll-6hk.pages.dev/troubleshooting/youtube-download-slow/).
- **A clip with a percentage and no speed.** Normal: B-ROLL computes clip progress from ffmpeg's position against the clip length.
- **Converting.** Normal for ProRes and DNxHR: the percentage climbs at the pace of your CPU.
- **No new log line and no change on the card.** Act, following the order in the next section.

Pause before you Stop. **Pause** keeps the partial file and **Resume** continues it, while **Stop** cancels the download and deletes the partial files.

## What do you do if a YouTube download never moves?

A YouTube download that never moves needs the cheapest fixes first: read the log, update yt-dlp, repair the tools, then retry. The controls sit in the sidebar's Advanced panel or on the card.

1. Click **Open download log** and read the last line. It names the step that stopped.
2. If the log mentions sign-in, follow the wizard and add a cookies.txt from your own YouTube account, as [fix "Sign in to confirm you're not a bot" on YouTube](https://b-roll-6hk.pages.dev/troubleshooting/sign-in-to-confirm-not-a-bot/) explains.
3. Click **Force update yt-dlp**. The log shows `✓ yt-dlp update check done.` when it finishes.
4. Check TOOLS. If it shows `ffmpeg: missing` or `JS runtime: missing`, click **Reinstall tools** and wait for `── Reinstall complete ──`.
5. Stop the card and click **retry**. Stop deletes the partial file, and the download goes back into the queue and asks YouTube for fresh stream links.
6. Close and reopen B-ROLL. yt-dlp updates itself at every launch, so a restart also refreshes it.
7. If nothing helps, click **Report a bug**. It opens your email app with your description and, when **Include the download log** is ticked, the last 4,000 characters of the log; nothing is sent until you send the email.

Errors with a message on the card have their own fixes on the hub, [YouTube downloader not working? Fixes for editors](https://b-roll-6hk.pages.dev/troubleshooting/).

## Frequently asked questions

Q: Does antivirus software slow the first launch?
A: Only when your security software holds the new tools for a scan. B-ROLL's first launch writes three new programs, yt-dlp.exe, ffmpeg.exe and deno.exe, into its data folder, and security software can inspect new executable files before they run. Watch the download log while setup runs: each tool reports its own line, and the last line reads All components ready.

Q: Why do clip downloads show no speed?
A: B-ROLL measures clip progress from ffmpeg's position in the clip, not from bytes received. A clip card therefore shows a percentage and no speed. ffmpeg cuts the range while it reads the stream, and its position against the clip length is the progress figure that stays honest. A clip card that has not moved yet is still opening the stream.

Q: Where are B-ROLL's log messages?
A: B-ROLL's log is in the sidebar's Advanced panel: click Open download log, and the log also appears under the download list while the panel is open. B-ROLL keeps the log in memory for the current session only, so read it, or send it with Report a bug, before you close the app.

## Sources

1. [yt-dlp README on GitHub](https://github.com/yt-dlp/yt-dlp)
2. [About FFmpeg](https://ffmpeg.org/about.html)

---

B-ROLL is a free, donation-supported desktop YouTube downloader for video editors: it downloads videos, clips, playlists and channels, converts them automatically into edit-ready ProRes or DNxHR (or saves MP4, MKV, WEBM or audio), and includes built-in trimming, subtitles and automatic creator credit files. Part of [YouTube Downloader Not Working? Fixes for Editors](https://b-roll-6hk.pages.dev/troubleshooting/) on the B-ROLL website. Download B-ROLL, free for Windows 10 and 11 (macOS and Linux planned): https://b-roll-6hk.pages.dev/download/
