I needed to download videos from various sites for content creation - YouTube for reference, some regional streaming platforms, a few social media sites. Most tools either didn't work or had quality limits.
Tried a bunch of options. Browser extensions were hit or miss. Online download sites were sketchy and slow. youtube-dl worked but required constant updates. yt-dlp is great but the CLI syntax got complicated for simple tasks.
Found you-get. It's a Python command-line tool that handles 100+ sites out of the box. The main advantage is simplicity - just pass the URL and it figures out the best quality available.
Supported sites
The --list flag shows everything. Main ones I've used:
- Video platforms: YouTube, Vimeo, Dailymotion
- Streaming: Netflix (with some caveats), Bilibili
- Social: Instagram, Twitter/X, TikTok
- Japanese sites: Niconico, Bilibili
- Misc: Imgur albums, SoundCloud (audio)
Getting started
pip install you-get
Or on macOS: brew install you-get
You also need FFmpeg or aria2 for some sites:
# macOS
brew install ffmpeg aria2
# Ubuntu/Debian
sudo apt install ffmpeg aria2
Downloading your first video
Just pass the URL:
# YouTube - downloads best quality available
you-get "https://www.youtube.com/watch?v=xxxxx"
# Bilibili
you-get "https://www.bilibili.com/video/BVxxxxx"
# Instagram video
you-get "https://www.instagram.com/p/xxxxx/"
It automatically detects the best quality and downloads to the current directory.
Quality options
See what's available first:
you-get -i "https://www.youtube.com/watch?v=xxxxx"
# Output:
# - format: mp4
# container: mp4
# quality: 1920x1080
# size: 156.5 MiB
# # download-with: you-get --format=mp4 [URL]
#
# - format: webm
# container: webm
# quality: 3840x2160
# size: 456.2 MiB
# # download-with: you-get --format=webm [URL]
Then download specific format:
you-get --format=webm "https://www.youtube.com/watch?v=xxxxx"
Or force highest quality:
you-get "https://www.youtube.com/watch?v=xxxxx" --format=best
Bypassing geo-restrictions with proxies
This is the important part. Some content is region-locked or blocked in certain countries. You need to route through a proxy to access it.
You-get supports HTTP/HTTPS/SOCKS proxies:
HTTP Proxy
you-get -x 127.0.0.1:7890 "https://www.youtube.com/watch?v=xxxxx"
SOCKS5 Proxy (like Shadowsocks/V2Ray)
you-get -x 127.0.0.1:1080 "https://www.youtube.com/watch?v=xxxxx"
With authentication
you-get -x username:password@proxy-server.com:8080 "URL"
Set as environment variable (so you don't type it every time)
# Add to ~/.bashrc or ~/.zshrc
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:1080
# Then use normally
you-get "URL"
Real-world use cases
YouTube blocked in your region
# Route through a proxy in an allowed country
you-get -x proxy-server.com:8080 "https://www.youtube.com/watch?v=xxxxx"
Bilibili requiring mainland China IP
# Use a China-based proxy
you-get -x china-proxy.com:8080 "https://www.bilibili.com/video/BVxxxxx"
Netflix (experimental)
# Netflix uses DRM, so this doesn't always work
# But for some content:
you-get -x 127.0.0.1:7890 "https://www.netflix.com/watch/xxxxx"
# You might need additional tools for DRM-protected content
Slow download speeds
# Use aria2 for multi-threaded downloads
you-get --aria2 "URL"
# Or limit connections if getting throttled
you-get --aria2-args "-x 4 -s 4" "URL"
More command-line options
Download to specific directory:
you-get -o ~/Downloads/Videos "URL"
Keep original filename:
you-get -O original "URL"
Download playlist:
you-get "https://www.youtube.com/playlist?list=xxxxx"
Skip existing files (resume interrupted downloads):
you-get --skip-existing-files "URL"
Show info without downloading:
you-get -i "URL"
Problems I hit
"URL not supported" error
The site might not be supported or the URL format changed. Check if it's in the supported sites list with you-get --list.
"Address cannot be resolved" or connection timeout
Site is blocked in your region or DNS issues. First try with proxy:
# Test proxy connection first
curl -x 127.0.0.1:7890 "https://www.youtube.com"
# Then use with you-get
you-get -x 127.0.0.1:7890 "URL"
Download starts but crawls at 10KB/s
Site is throttling. Try different approaches:
# Use aria2 for multi-threading
you-get --aria2 "URL"
# Or try a different proxy server
you-get -x different-proxy.com:8080 "URL"
FFmpeg not found errors
Some sites require FFmpeg to merge video/audio streams:
# macOS
brew install ffmpeg
# Linux
sudo apt install ffmpeg
"HTTP Error 403: Forbidden"
Site is blocking automated downloads. Try:
# Add user agent header
you-get --http-header "User-Agent: Mozilla/5.0..." "URL"
# Or use cookies from your browser
# Export cookies first, then:
you-get --cookies ~/.config/you-get/cookies.txt "URL"
When you need cookies
Some content requires login. Export cookies from your browser:
# Use a browser extension to export cookies.txt
# Then:
you-get --cookies ~/cookies/website.txt "URL"
"Get cookies.txt LOCALLY" extension for Chrome/Edge works well for this.
Important notes
- Respect copyright and terms of service
- Don't redistribute downloaded content without permission
- Some sites actively fight downloaders - expect breakage
- DRM-protected content (like most Netflix content) can't be downloaded directly
- Proxy setup might be needed depending on your location
You-Get repo: github.com/soimort/you-get
For more advanced use cases, yt-dlp is a more actively maintained fork of youtube-dl.