Skip to main content

snagvid (vdl)

Download videos from YouTube, X/Twitter, Instagram, Facebook, or almost any website — straight from your terminal, no browser extensions, no sketchy websites.

PyPI version License: MIT Python 3.9+

demo

Features

  • 🧙 Interactive CLI Wizard: Simply type vdl to get guided prompts for URL, resolution, and output folder.
  • 📊 Smart Resolution & Size Detection: Shows available resolutions with accurate combined video + audio download size estimates.
  • 🎵 Audio Extraction: Easily extract high-quality audio tracks (e.g. MP3) directly.
  • 🎨 Clean Live Progress: Real-time progress display with speed, ETA, and spinner animations powered by rich.
  • 🌐 1800+ Supported Sites: Powered by yt-dlp for unmatched platform compatibility.
  • Scripting Ready: Pass URLs and flags directly (vdl "<url>" -q 720p) for automation.
  • 🛡️ Long Title Protection: Automatic title truncation and ID tagging to prevent filesystem errors on long post captions.

Prerequisites

  • Python: 3.9 or higher
  • FFmpeg: Required for stream merging and audio extraction.
    • Linux: sudo apt install ffmpeg / sudo pacman -S ffmpeg
    • macOS: brew install ffmpeg

Installation

pip install snagvid
# or with pipx for isolated global installation:
pipx install snagvid

Local Development Install

git clone https://github.com/WaqasAhmad313/snagvid.git
cd snagvid
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Usage

Interactive Mode (Recommended)

Run vdl with no arguments to start the interactive wizard:

vdl

Direct / Scripted Usage

Pass arguments directly to bypass the interactive prompts:

# Direct download best quality
vdl "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

# Download audio-only (MP3)
vdl "https://www.youtube.com/watch?v=dQw4w9WgXcQ" --audio

# Download specific quality to custom directory
vdl "https://www.youtube.com/watch?v=dQw4w9WgXcQ" -q 720p -o ~/Videos

Configuration (~/.vdlrc)

You can save your default preferences in ~/.vdlrc (INI format):

[defaults]
output       = ~/Videos
quality      = 1080p
audio_format = mp3
retries      = 5

Supported Sites

vdl inherits complete extractor support from yt-dlp, covering 1800+ websites including YouTube, X/Twitter, Instagram, Facebook, TikTok, Twitch, Reddit, Vimeo, and SoundCloud.

For a full list of supported extractors, see the yt-dlp supported sites documentation.

Responsible Use

This tool is intended for downloading content you own, have explicit permission to use, or that is otherwise legally accessible to you — e.g. personal backups, offline access to your own posts, content licensed for reuse. Respect the terms of service of the platform you're downloading from and applicable copyright law. The maintainers are not responsible for misuse.

Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snagvid-0.1.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snagvid-0.1.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file snagvid-0.1.0.tar.gz.

File metadata

  • Download URL: snagvid-0.1.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for snagvid-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c0623d1c52226bccc6a81a321da8037dae970f00bb6c36cff2adc68d579b7c4d
MD5 042514880eb7f7f6c621b0c0d9c934c2
BLAKE2b-256 cc45eac4b602285258435adef70c9c2bf900514f73af05dc1bb3cd598f2453df

See more details on using hashes here.

Provenance

The following attestation bundles were made for snagvid-0.1.0.tar.gz:

Publisher: publish.yml on WaqasAhmad313/snagvid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snagvid-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: snagvid-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for snagvid-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dac6ba858f9abb3e164655d1172637d3c7b44583658762f1d3bbf1bfbcde3f11
MD5 64443936b2cac88f8a1cc15b814e0dce
BLAKE2b-256 cb5ce80775cca80ec779681fc8583530d00f881e20ed9add5aaa70f938c1c394

See more details on using hashes here.

Provenance

The following attestation bundles were made for snagvid-0.1.0-py3-none-any.whl:

Publisher: publish.yml on WaqasAhmad313/snagvid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page