Skip to content

Start typing. Errors match on their exact yt-dlp output.

to move, to open esc to close

Fix "ffmpeg not found" and "You have requested merging" in yt-dlp

Tested on yt-dlp 2026.07.28 Updated
What yt-dlp prints
ERROR: You have requested merging of multiple formats but ffmpeg is not installed. Aborting due to --abort-on-error

Quick answer

yt-dlp downloads high-quality video and audio as two separate files and needs ffmpeg to join them. It is a separate program, not a Python package, and installing it is the whole fix:

Windows
winget install Gyan.FFmpeg
macOS
brew install ffmpeg
Debian and Ubuntu
sudo apt install ffmpeg

Why yt-dlp needs a second program at all

Above 720p, YouTube does not store a single file containing both picture and sound. It stores a video-only stream and an audio-only stream, and the player combines them as it plays. To end up with one file on disk, something has to do that combining, and that something is ffmpeg.

yt-dlp does not bundle it. ffmpeg is a large, platform-specific binary with its own release cadence and its own licensing considerations; shipping it inside every yt-dlp build would make the download an order of magnitude bigger for the people who do not need it.

So without ffmpeg, yt-dlp falls back to whatever pre-combined file exists — on YouTube, the 360p stream that has been there since 2010. This is by far the most common reason for "yt-dlp only downloads 360p", and it usually arrives with no error at all.

Installing it

Windows

winget install Gyan.FFmpeg handles PATH for you. If winget is unavailable, Scoop and Chocolatey both work:

bash
scoop install ffmpeg
choco install ffmpeg

Installing by hand means downloading a build, extracting it somewhere permanent, and adding its bin directory to PATH — the step people skip, and the reason "I installed it and it still does not work" is so common. Prefer the yt-dlp project's own builds, which are tested against yt-dlp.

macOS

Homebrew is the sane route. If brew is not installed, the macOS install guide covers getting it. MacPorts users: sudo port install ffmpeg.

Linux

Every distribution packages it: apt, dnf, pacman, zypper. Unlike yt-dlp itself, the packaged ffmpeg is fine — it is not chasing a moving target the way an extractor is.

On minimal Debian and Ubuntu images, ffmpeg may pull only part of what you need; if extraction to mp3 then fails, install libavcodec-extra as well.

Installed, but yt-dlp cannot see it

These are two separate conditions. Check the first:

bash
ffmpeg -version

If that prints a version, ffmpeg is on PATH and yt-dlp will find it — as long as it is on PATH in the same shell. A PATH change does not reach terminals that were already open, and on Windows it does not reach a running Explorer session either. Close everything and reopen before concluding anything.

If it prints a version and yt-dlp still complains, point at it explicitly:

the directory, not the exe
yt-dlp --ffmpeg-location "C:\ffmpeg\bin" "URL"

Confirming the pairing

One command tells you what yt-dlp itself can see:

bash
yt-dlp --verbose --simulate "https://www.youtube.com/watch?v=jNQXAC9IVRw"

The verbose header lists the detected ffmpeg and ffprobe versions. If either says not present, yt-dlp is not finding it regardless of what your shell says — and that mismatch is almost always PATH scope.

If it still fails

  • "ffprobe not found" specifically. A partial install — usually a single ffmpeg.exe copied out of an archive. Both binaries have to be in the same directory.
  • Found, but merging fails. Different error, different page: see ffmpeg exited with code 1.
  • Works from the terminal, fails from a scheduled task or cron. Those run with a minimal environment and usually no PATH at all. Use --ffmpeg-location with an absolute path.
  • Docker. The base image needs ffmpeg installed explicitly — the Docker guide has a working image.
  • Termux on Android. pkg install ffmpeg is a separate step from installing yt-dlp; see the Termux guide.

Full per-platform detail, including verifying the install, is in the ffmpeg install guide.

Frequently asked

Can I use yt-dlp without ffmpeg?
Yes, but capped. Without it you get whatever single combined file a site offers, which on YouTube is 360p. No merging, no audio extraction, no subtitle embedding, no format conversion. For anything above 720p, ffmpeg is not optional.
I installed ffmpeg and yt-dlp still cannot find it.
Two different problems. Installed means the file is on disk; found means the directory is on PATH in the shell yt-dlp runs in. Open a new terminal — a PATH change does not reach sessions that were already open — and if that fails, point at it directly with --ffmpeg-location.
Does ffprobe matter too?
Yes. yt-dlp uses ffprobe to inspect files before processing. It ships alongside ffmpeg in every normal distribution, so if you have one you have the other — unless you copied a single ffmpeg.exe out of an archive, which is a common way to end up half-installed.
Which build should I download on Windows?
The yt-dlp project publishes builds tested against yt-dlp specifically, at github.com/yt-dlp/FFmpeg-Builds. They include fixes for issues that affect this exact workflow, and they are the ones to prefer over a generic build.