Skip to content

vib795/pull-vids

Repository files navigation

pull-vids

GitHub release Homebrew License: MIT Go Version GitHub stars

A free, open-source CLI tool for downloading videos and audio from 1000+ websites. Inspired by tools like Downie and PullTube, but completely free!

Built with Go for blazingly fast performance! 🚀

Supported Platforms

Works with any site supported by yt-dlp, including:

  • YouTube - Videos, playlists, channels
  • Vimeo - Videos and channels
  • Twitter/X - Videos and GIFs
  • TikTok - Videos
  • Instagram - Videos, Reels, Stories
  • Facebook - Videos
  • Twitch - VODs and clips
  • Reddit - Videos from v.redd.it
  • Dailymotion - Videos
  • And 1000+ more! - Full list

Features

  • Download videos from 1000+ websites
  • Cookie authentication for YouTube bot detection bypass
  • Automatic retry with exponential backoff for rate limiting
  • Sleep intervals between downloads to avoid rate limits
  • Various quality options (360p to 4K)
  • Audio-only extraction (MP3, M4A, etc.)
  • Playlist and channel support
  • Beautiful real-time progress bars
  • Cross-platform (Windows, macOS, Linux)
  • Single binary - no dependencies to install
  • Fast startup - < 1ms
  • No ads, no paywalls, just downloads

Demo

Demo

Installation

Package Managers (Recommended)

macOS (Homebrew):

brew tap vib795/tap
brew install pull-vids

Windows (Chocolatey):

choco install pull-vids

Ubuntu/Debian (APT):

sudo add-apt-repository ppa:vib795/pull-vids
sudo apt update
sudo apt install pull-vids

Arch Linux (AUR):

yay -S pull-vids

Linux (Snap):

sudo snap install pull-vids

Quick Install Script

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/vib795/pull-vids/main/install.sh | bash

Windows (PowerShell as Administrator):

irm https://raw.githubusercontent.com/vib795/pull-vids/main/install.ps1 | iex

Manual Installation

Option 1: Download Pre-built Binary

Download the latest release for your platform from Releases:

macOS:

# Intel Mac
curl -L https://github.com/vib795/pull-vids/releases/latest/download/pull-vids-darwin-amd64 -o pull-vids
chmod +x pull-vids
sudo mv pull-vids /usr/local/bin/

# Apple Silicon (M1/M2/M3)
curl -L https://github.com/vib795/pull-vids/releases/latest/download/pull-vids-darwin-arm64 -o pull-vids
chmod +x pull-vids
sudo mv pull-vids /usr/local/bin/

Linux:

# AMD64
curl -L https://github.com/vib795/pull-vids/releases/latest/download/pull-vids-linux-amd64 -o pull-vids
chmod +x pull-vids
sudo mv pull-vids /usr/local/bin/

# ARM64
curl -L https://github.com/vib795/pull-vids/releases/latest/download/pull-vids-linux-arm64 -o pull-vids
chmod +x pull-vids
sudo mv pull-vids /usr/local/bin/

Windows:

  1. Download pull-vids-windows-amd64.exe
  2. Rename to pull-vids.exe
  3. Move to a directory in your PATH (e.g., C:\Program Files\pull-vids\)

Option 2: Build from Source

Requirements:

  • Go 1.18 or higher
  • Git

Build:

# Clone the repository
git clone https://github.com/vib795/pull-vids.git
cd pull-vids

# Build for your platform
make build

# Or build for all platforms
make build-all

# Install to system
make install

Install Dependencies

pull-vids requires ffmpeg and yt-dlp to work:

macOS:

brew install ffmpeg yt-dlp

Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg
pip install yt-dlp

Windows:

winget install ffmpeg
pip install yt-dlp

Verify installation:

ffmpeg -version
yt-dlp --version
pull-vids --version

Usage

Basic Examples

Download from YouTube:

pull-vids "https://www.youtube.com/watch?v=VIDEO_ID"

Download from Vimeo:

pull-vids "https://vimeo.com/123456789"

Download from Twitter/X:

pull-vids "https://twitter.com/user/status/123456"

Download from TikTok:

pull-vids "https://www.tiktok.com/@user/video/123456"

Download from Instagram:

pull-vids "https://www.instagram.com/p/ABC123/"

Download from Twitch:

pull-vids "https://www.twitch.tv/videos/123456789"

Download audio only:

pull-vids -a "https://www.youtube.com/watch?v=VIDEO_ID"

Download in specific quality:

pull-vids -q 720p "https://vimeo.com/123456789"

Download to a specific directory:

pull-vids -o ~/Videos "https://www.youtube.com/watch?v=VIDEO_ID"

Download entire playlist:

pull-vids -p "https://www.youtube.com/playlist?list=PLAYLIST_ID"

YouTube Authentication (Cookie Support)

If you get a bot detection error from YouTube, you'll need to authenticate using cookies from your browser.

Option 1: Export Cookies Manually (Recommended - Most Reliable)

  1. Install a browser extension to export cookies:

  2. Visit YouTube and make sure you're logged in

  3. Click the extension icon and export cookies for youtube.com

  4. Save the file (e.g., youtube-cookies.txt)

  5. Use with pull-vids:

    pull-vids --cookies youtube-cookies.txt "https://www.youtube.com/watch?v=VIDEO_ID"

Option 2: Extract Cookies from Browser

Firefox (usually works without issues):

pull-vids --cookies-from-browser firefox "https://www.youtube.com/watch?v=VIDEO_ID"

Chrome:

pull-vids --cookies-from-browser chrome "https://www.youtube.com/watch?v=VIDEO_ID"

Safari (macOS only):

pull-vids --cookies-from-browser safari "https://www.youtube.com/watch?v=VIDEO_ID"

⚠️ macOS Safari Users: If you get a permission error, you need to grant Full Disk Access:

  1. Open System SettingsPrivacy & SecurityFull Disk Access
  2. Click the + button and add your terminal app (Terminal.app or iTerm2)
  3. Restart your terminal
  4. Try again

⚠️ Chrome/Chromium Users: If Chrome doesn't work, try exporting cookies manually (Option 1) or use Firefox.

Supported browsers: firefox, chrome, safari, edge, chromium, brave, opera, vivaldi

Important: Make sure you're logged into YouTube in the browser before extracting cookies!

Command-Line Options

usage: pull-vids [-h] [-o OUTPUT] [-q QUALITY] [-a] [-p] [-f FORMAT]
                 [--cookies COOKIES] [--cookies-from-browser BROWSER]
                 [--sleep-interval SECONDS] [-v] [--no-banner] url

positional arguments:
  url                   Video URL from any supported site (1000+ platforms)

options:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        Output directory (default: ~/Downloads/pull-vids)
  -q QUALITY, --quality QUALITY
                        Video quality: best, high, medium, low, 2160p, 1440p, 1080p, 720p, 480p, 360p
                        (default: best)
  -a, --audio-only      Download audio only
  -p, --playlist        Download entire playlist
  -f FORMAT, --format FORMAT
                        Output format (mp4, mkv, mp3, m4a, etc.)
  --cookies COOKIES     Path to cookies file (Netscape format)
  --cookies-from-browser BROWSER
                        Extract cookies from browser (chrome, firefox, safari, edge, etc.)
  --sleep-interval SECONDS
                        Sleep interval in seconds between downloads (avoids rate limiting)
  -v, --version         show program's version number and exit
  --no-banner           Don't show the banner

Quality Options

  • best - Best available quality (default)
  • high - Up to 1080p
  • medium - Up to 720p
  • low - Up to 480p
  • 2160p, 1440p, 1080p, 720p, 480p, 360p - Specific resolutions

Format Options

Video formats: mp4 (default), mkv, webm Audio formats: mp3 (default), m4a, opus, wav

Examples

# Download 4K video
pull-vids -q 2160p "https://www.youtube.com/watch?v=VIDEO_ID"

# Download as MP3
pull-vids -a -f mp3 "https://www.youtube.com/watch?v=VIDEO_ID"

# Download playlist to Music folder
pull-vids -a -p -o ~/Music "https://www.youtube.com/playlist?list=PLAYLIST_ID"

# Download in MKV format
pull-vids -f mkv "https://www.youtube.com/watch?v=VIDEO_ID"

# Download with cookies for YouTube bot detection
pull-vids --cookies-from-browser firefox "https://www.youtube.com/watch?v=VIDEO_ID"

# Download long playlist with rate limit protection
pull-vids --cookies-from-browser firefox --sleep-interval 5 -p "https://www.youtube.com/playlist?list=PLAYLIST_ID"

Why pull-vids?

  • Free Forever - No subscriptions, no trials, no limitations
  • Open Source - Transparent code you can trust and modify
  • Privacy Focused - No tracking, no data collection
  • Powerful - Built on yt-dlp, supporting 1000+ video platforms
  • Simple - Clean CLI interface, no bloat
  • Fast - Compiles to a single binary with zero startup time
  • Portable - Single executable, no runtime dependencies

Limitations

DRM-Protected Content

This tool CANNOT download DRM-protected content. This includes:

  • ❌ Amazon Prime Video
  • ❌ Netflix
  • ❌ Disney+
  • ❌ Hulu
  • ❌ HBO Max
  • ❌ Apple TV+
  • ❌ Other paid streaming services

Why? These services use DRM (Digital Rights Management) protection. yt-dlp does not and will not support bypassing DRM due to legal restrictions and ethical reasons.

What You CAN Download

User-uploaded content:

  • YouTube (videos, playlists, channels, live streams)
  • Vimeo (public and password-protected videos)
  • Social media (Twitter, TikTok, Instagram, Facebook)
  • Twitch (VODs and clips)
  • Reddit (v.redd.it videos)
  • And 1000+ other sites with publicly accessible content

Public platforms where content creators share their work ✅ Content you have legal rights to download

Note: Just because you can download something doesn't mean you should. Always respect:

  • Copyright laws
  • Platform Terms of Service
  • Content creator rights
  • Fair use guidelines

Troubleshooting

"ffmpeg not found" error:

  • Make sure ffmpeg is installed and in your PATH
  • Try running ffmpeg -version to verify installation

"No video formats found" error:

  • The video might be region-locked or unavailable
  • Try a different quality setting
  • Check if the URL is correct

"Sign in to confirm you're not a bot" error:

  • See the YouTube Authentication (Cookie Support) section above
  • Use --cookies-from-browser or --cookies flag
  • pull-vids will automatically retry up to 3 times with exponential backoff (30s, 60s, 120s)

Rate limiting on long playlists:

  • Use --sleep-interval 5 to add delays between downloads
  • Recommended: 5-10 seconds for playlists with 30+ videos
  • Automatic retry kicks in if rate limiting is detected despite the sleep interval

Slow downloads:

  • The video platform may be throttling your connection
  • Try downloading at a different time
  • Use a different quality setting
  • Some platforms have rate limits

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

MIT License - feel free to use this tool however you want!

Credits

Core:

  • yt-dlp - The amazing YouTube downloading library

Go libraries:

Inspired by Downie and PullTube, but free and open-source!

Disclaimer

This tool is for personal use only. Please respect copyright laws and each platform's Terms of Service. Only download videos you have the right to download.

About

Universal video downloader CLI supporting 1000+ websites. Free, open-source alternative to Downie/PullTube built with Go.

Topics

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors