yt-dlp Tutorial: Download Videos from Any Site (2026)
30 August 2026

yt-dlp Tutorial: Download Videos from Any Site (2026)

The Downloader That Outlived Every Website

Here is a sentence you will not find on many tech blogs in 2026: the most reliable way to download videos is still a command-line program. Every online downloader website you have bookmarked has broken at least once since then. Every browser extension has either died in the Manifest V3 purge or asks for permissions it has no right to. Desktop apps come and go with their free-tier limits. And through all of it, yt-dlp — a free, open-source tool you run from a terminal — has kept downloading videos from YouTube, TikTok, Instagram, Twitch, Kick, Rumble, Vimeo, and thousands of other sites, with no account, no ads, and no daily quota.

yt-dlp tutorial: download videos from any site with one open-source command

This yt-dlp tutorial is the one you will actually finish. It assumes you have never opened a terminal, walks you from installation to your first download in about five minutes, and then hands you the commands that cover ninety percent of real-world use. By the end you will be able to save a single video, strip the audio as MP3, grab an entire playlist, pull subtitles, and fix the errors that send everyone else back to sketchy websites.

One rule before the commands, because it applies to every download in this guide: keep content you are allowed to keep. Your own uploads, Creative Commons material, and videos you have permission to save are the legitimate targets. The tool is legal; what you point it at is on you.

What yt-dlp Actually Is (and Why It Wins)

yt-dlp began as a fork of the older youtube-dl and quickly became the standard. It is open source — the entire codebase is public, which is why security researchers and millions of users trust it — and it is maintained by an active community that ships updates constantly. When YouTube changes something overnight, yt-dlp usually has a fix within days, sometimes hours. That is the entire reason it still works in 2026 while almost everything else broke: the tool that updates fastest wins.

Under the hood, yt-dlp uses small plugins called extractors to understand each site’s video delivery, then downloads the file directly from the platform’s own servers. When a high-quality YouTube video arrives as separate video and audio streams, yt-dlp merges them into a single MP4 using ffmpeg, a free companion tool you will install in the next section. No screen recording, no re-encoding, no quality loss — you get the file the platform actually serves.

How many sites does it cover? More than a thousand, with new extractors added by contributors all the time. If a platform serves video on the open web, someone has almost certainly written an extractor for it — which is why this one tool quietly replaced the dozens of single-site downloader websites people used to bookmark. That breadth is the reason the rest of this guide can teach one workflow instead of one per platform. It is also why the commands in this yt-dlp tutorial stay relevant: the extractor list grows as fast as the platforms do.

Install in Three Minutes (Windows, macOS, Linux)

Installation is one command on each major platform. Open your terminal — PowerShell or Command Prompt on Windows, Terminal on macOS, any shell on Linux — and run the line for your system:

# Windows
winget install yt-dlp

# macOS (with Homebrew)
brew install yt-dlp

# Linux / Python users on any OS
python3 -m pip install -U yt-dlp

You can also download the standalone executable from the official yt-dlp GitHub repository — always the official source, never third-party mirrors, because downloader software is a favorite disguise for adware.

Verify the install worked:

yt-dlp --version

If you see a version number, you are ready. Next, install ffmpeg — yt-dlp uses it to merge separate video and audio streams into one file. Windows: winget install ffmpeg. macOS: brew install ffmpeg. It is free and safe. Most of the “no sound” or “video-only” problems people report are actually a missing ffmpeg in disguise.

Your First Download

Copy any public video URL — a YouTube video, a Vimeo page, a TikTok link — and run:

yt-dlp "https://www.youtube.com/watch?v=EXAMPLE"

That is the entire program. yt-dlp fetches the video, picks the best quality available, merges the streams, and saves the file in the folder where you ran the command. The terminal output looks intimidating at first, but the lines you care about are the progress bar and the final merger messages — those mean the file is complete and playable.

Where does the file land? In the folder your terminal was open in, on every operating system — Windows, macOS, and Linux behave the same way. If you ever lose track of a download, the -o template in the next section makes the destination explicit, and yt-dlp --print after_move:filepath URL prints the exact path of the finished file.

The Essential Commands

Everything else builds on that one command. These are the five you will use constantly:

# 1. Audio only, as MP3
yt-dlp -x --audio-format mp3 URL

# 2. Cap the quality at 1080p (great for storage or slow connections)
yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL

# 3. Download an entire playlist
yt-dlp --yes-playlist PLAYLIST_URL

# 4. Save subtitles alongside the video
yt-dlp --write-subs --sub-langs "en" URL

# 5. Save to a specific folder with a clean filename
yt-dlp -o "%(title)s.%(ext)s" -P ~/Videos/YouTube URL

Three notes that save you time. -x extracts audio and converts it with ffmpeg — the same idea as our extract audio from video guide, just from a URL instead of a local file. The -f flag lets you pick exact formats; run yt-dlp -F URL first to see every quality the site offers, then choose by height. And the -o template lets you name files with the title, uploader, or date, which keeps archives organized instead of dumping everything into Downloads.

Archivists will want the companion flags that round out a file’s metadata: --write-thumbnail saves the video’s cover image, --embed-metadata writes title, uploader, and description tags straight into the file, and --write-description drops the full description into a text file next to the video. None of these change how the download works; they just make your library feel less like a folder of orphaned files.

Common Tasks, One-Line Cheat Sheet

Bookmark this table. It is the part of this yt-dlp tutorial people actually come back to:

Task Command
Save a single video yt-dlp "URL"
Best quality, merged audio yt-dlp -f "bv*+ba/b" URL
Audio only (MP3) yt-dlp -x --audio-format mp3 URL
Whole playlist yt-dlp --yes-playlist URL
Subtitles included yt-dlp --write-subs URL
Cap at 1080p yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL
List all available qualities yt-dlp -F URL

For whole playlists and channels, yt-dlp is the best batch tool in the niche — our playlist downloader guide goes deeper on organizing large downloads, and the same commands work for channels when you pass a channel URL instead of a video URL.

Channel downloads deserve one refinement: pass --dateafter 20250101 to grab only videos published since a date, or --playlist-items 1-50 to take a specific range. Used together with the -o template, those two flags turn a full-channel grab into a clean, chronological archive with no duplicate files.

When It Breaks: The Fixes That Actually Work

Update yt-dlp first, always. YouTube changes its player regularly, and yt-dlp ships fixes to match. If a download fails, run yt-dlp -U and retry. This solves more problems than everything else combined.

The JavaScript runtime issue (the one most guides miss). Since mid-2025, most YouTube errors — HTTP Error 403, Sign in to confirm you're not a bot, and Failed to get info — are not caused by an outdated yt-dlp at all. YouTube began requiring the downloader to execute parts of its player logic, and yt-dlp handles that by running a JavaScript runtime. If you do not have one installed, YouTube requests simply fail no matter how new your yt-dlp is. The fix is to install Deno and tell yt-dlp to use it:

# Install Deno first
# macOS / Linux: curl -fsSL https://deno.land/install.sh | sh
# Windows: winget install DenoLand.Deno

# Then tell yt-dlp to use it
yt-dlp --js-runtimes deno URL

With Deno installed, most 403 and “Failed to get info” errors disappear even on a fully updated yt-dlp. Treat this as a separate step from the update advice above: update first, and if the error persists, the missing runtime is the usual culprit. The yt-dlp release notes list the currently recommended runtime.

No sound or video-only files. You are almost certainly missing ffmpeg, or you chose a video-only format with -f. Install ffmpeg and use the default format selection — or the bv*+ba/b pattern from the cheat sheet — so the streams merge automatically.

Age-restricted, private, or region-locked videos. yt-dlp will not fetch content that requires a login, an age check, or a different country — and it should not. These are platform protections working as designed.

Throttled or slow downloads. Platforms occasionally slow down known downloader patterns. Updating yt-dlp, using the latest release, or retrying after a few minutes usually restores full speed.

Too many requests. If a batch run hits HTTP Error 429 or “Too Many Requests,” you are hammering the server. Space your runs out with --sleep-requests 2 (wait two seconds between videos) and consider --limit-rate 5M to cap bandwidth. Politeness is not just good manners — it keeps the downloads working.

Power Moves (Still Beginner-Friendly)

Once the basics feel easy, four habits separate people who “tried yt-dlp” from people who never open a downloader website again:

  • Update on a schedule. Run yt-dlp -U weekly, or add it to your terminal profile. Updates are the whole game.
  • Use a config file. Drop your defaults into yt-dlp.conf — output folder, preferred quality, MP3 conversion — and every command inherits them. One-time setup, permanent convenience.
  • Authenticate when you must. For member-only content you legitimately have access to, --cookies-from-browser chrome lets yt-dlp use your logged-in session. Use it only for content you are allowed to keep.
  • Wrap it in a GUI when you want buttons. Open Video Downloader puts a friendly interface on the same engine — the reliability of yt-dlp without the terminal.

When the habit is in place, the next step is automation: a scheduled task that runs yt-dlp against a list of channels every week keeps your archive fresh with zero effort. On Windows, Task Scheduler; on macOS, a cron entry or launchd job; on Linux, a cron line. One command, one output folder, one folder that grows on its own — that is the entire point of a tool that runs from a terminal.

Frequently Asked Questions

Is using yt-dlp legal? The tool is legal and widely used by archivists, journalists, and researchers. What matters is the content: your own uploads, Creative Commons material, and permission-granted videos are fine; bypassing paywalls or redistributing others’ work is not.

Is yt-dlp safe? Yes — it is open source, audited by the community, and free of ads, trackers, and telemetry. The risk is never yt-dlp itself; it is the fake “yt-dlp” copies on third-party sites. Install only from the official GitHub repository or your package manager.

Does yt-dlp still work in 2026? Yes, and it is more relevant than ever. The JavaScript runtime requirement (Deno) added in 2025 is the main new step — install it alongside yt-dlp and the tool keeps working through every platform change.

Windows or macOS — does it matter? No. The commands are identical; only the install line differs. Everything in this tutorial works on both, plus Linux.

How do I update yt-dlp? yt-dlp -U updates to the latest release. Package-manager installs (winget, brew, pip) update with their usual upgrade commands.

Why did my file come out as .webm instead of .mp4? Because the platform served the video in a WebM container with VP9 or AV1 encoding — better quality per megabyte, but less compatible with older devices and editors. It plays fine in VLC and most modern players; if you need MP4, remux or convert it — our convert video to MP4 guide covers the fastest route.

Can I pause or resume a download? Yes. yt-dlp skips files that already exist by default, so running the same command twice never duplicates anything, and interrupted downloads resume where they stopped when the server allows it. For a stalled partial file, add --continue to force the resume path.

Can yt-dlp download from Netflix or other DRM services? No. DRM-protected streams are encrypted by design, and no honest tool bypasses them. yt-dlp works on open platforms like YouTube, TikTok, Twitch, Kick, Rumble, Vimeo, and the thousands of sites its extractors support.

The Command That Works Everywhere

Here is the payoff of this yt-dlp tutorial: one tool now replaces every downloader website, extension, and app you have used. The same command that saved a YouTube video a minute ago also handles TikTok clips, Twitch VODs, Kick streams, Rumble broadcasts, and Vimeo pages. When you need the platform-specific details, the full guides on this site go deeper — downloading YouTube videos on PC and Mac, playlists, Twitch clips and VODs, Kick, Rumble, Vimeo, live streams, and lossless audio — but the engine under all of them is the one you just installed.

By the end of this yt-dlp tutorial, ten minutes of setup buys you the most reliable downloader on the internet. Update it weekly, keep Deno installed, respect the content rules, and you will never search for “video downloader” again — which, for a niche built on tools that break constantly, is the strongest recommendation there is.

Leave a Reply

Your email address will not be published. Required fields are marked *