Skip to content

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

License

Notifications You must be signed in to change notification settings

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
  • 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]
                 [-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.)
  -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"

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:

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.