Why yt-dlp Only Downloads 360p — and How to Get 1080p or 4K
[download] Destination: Some Video [dQw4w9WgXcQ].mp4
[download] 100% of 24.31MiB in 00:00:03
# …and the file is 640x360
Quick answer
yt-dlp defaulting to 360p is a symptom with four possible causes, and there is no error message
to tell them apart. One command distinguishes them: if -F lists formats above
360p, the problem is local. If it does not, the formats are being withheld.
yt-dlp -F "URL"
Why 360p specifically
Format 18 — 360p H.264 with AAC audio, one mp4 file — is the last combined stream YouTube still serves on virtually every video. Everything above it comes as a video-only stream plus a separate audio stream, to be joined after downloading.
So anything that stops yt-dlp from combining two streams, or from seeing them in the first place, lands on format 18. It is not a setting. It is what remains.
Cause 1 — ffmpeg is not installed
Most common by a distance. yt-dlp needs ffmpeg to merge, and without it silently declines to pick any format that would require merging. Check:
ffmpeg -version
"not recognized" or "command not found" is your answer — install it and the same command that gave you 360p will give you 1080p. If it prints a version but yt-dlp still will not merge, the problem is that yt-dlp cannot see it: ffmpeg not found.
Cause 2 — the format selector says 360p
-f best does not mean best quality. It means "the best single file that already
contains video and audio", which is exactly format 18. This is the most-copied wrong command in
the entire ecosystem:
| Selector | What it actually gets |
|---|---|
-f best | Best pre-merged file — 360p on YouTube |
-f b | Same thing, shorter |
-f bv*+ba/b | Best video + best audio, merged |
(nothing) | yt-dlp's default, which already merges |
If you have -f best anywhere — in the command, in a script, in a
config file — remove it. yt-dlp's default is
better than the thing people replace it with.
yt-dlp -f "bv*+ba/b" --merge-output-format mp4 "URL"
Cause 3 — the formats are being withheld
If -F lists nothing above 360p on a video you can watch in 1080p in a browser,
nothing is broken locally. YouTube is not offering the higher formats to this request, because
it carries no proof-of-origin token.
yt-dlp --extractor-args "youtube:player_client=tv" -F "URL"
Formats reappear, and the download works. The mechanism, and what to do when the TV client stops working too, is on the PO token page.
Cause 4 — a stale build
An older yt-dlp may fail to parse the current player and silently drop the formats it cannot sign. Sometimes it says so, via nsig extraction failed; sometimes it does not:
yt-dlp -U && yt-dlp --rm-cache-dir
Deciding in thirty seconds
- Run
yt-dlp -F "URL". - Formats above 360p listed? The problem is local: ffmpeg missing, or your selector. Causes 1 and 2.
- Nothing above 360p listed? The problem is upstream: token gating or a stale build. Causes 3 and 4.
Making it permanent
Once it works, put it in the config file so you never diagnose this twice:
-f bv*+ba/b
--merge-output-format mp4
--embed-metadata
--embed-thumbnail
Where that file lives on each platform, and which settings win when two disagree, is in the config file guide.
If it still fails
-
1080p downloads but looks soft. Check the codec. A 1080p AV1 or VP9 stream
at low bitrate can look worse than 720p H.264.
-S "res:1080,vcodec:h264"asks for the codec as well as the resolution. - Two files instead of one. The merge failed after the download succeeded — ffmpeg exited with code 1.
- Only on some videos. Not every upload has a 1080p version. Check what YouTube itself offers in the quality menu before assuming yt-dlp is at fault.
-
Only inside a playlist. A per-playlist format constraint, or one entry
lacking the format.
-iplus a looser selector.
Frequently asked
Why is 360p the number it falls back to?
Does -f best get the best quality?
It downloads 1080p in a browser extension but not in yt-dlp.
How do I always get the best quality without thinking about it?
Related
- yt-dlp Format Selection: -f, -S and Getting Exactly What You Want Format selection is the one yt-dlp concept worth learning properly — it decides resolution, codec, file size a...
- Fix "ffmpeg not found" and "You have requested merging" in yt-dlp yt-dlp downloads video and audio separately and needs ffmpeg to join them. How to install it on each OS, why "...
- Fix "PO Token required" and Missing Formats in yt-dlp PO tokens are YouTube's proof-of-origin check, and without one yt-dlp silently loses every high-quality format...