VidVortex
Media downloads without the command-line friction.
VidVortex turns yt-dlp and FFmpeg into a focused desktop workflow for inspecting available formats, choosing audio or video quality, downloading reliably, and validating the final output. A shared Python engine powers the desktop GUI, terminal interface, and CLI, keeping download behavior consistent across every surface.
- Surfaces
- Desktop · TUI · CLI
- Platforms
- Windows · macOS · Linux
- Engine
- yt-dlp · FFmpeg
- Profiles
- Fast · Safe · Conservative
- Distribution
- Python · Windows executable
- Status
- Active
Stack
- Python
- Tkinter
- Textual
- yt-dlp
- FFmpeg
- PyInstaller
One engine. Three interfaces. Verified output.
URL
https://example.com/watch?v=demo
Mode
Video
Quality
—
Profile
Safe
Ready to load qualities
Why VidVortex Exists
yt-dlp and FFmpeg are extremely capable, but their power lives primarily behind command-line options, format selectors, browser-cookie handling, post-processing flags, and platform-specific behavior.
VidVortex provides an opinionated layer over that complexity. The user works with URL → format → quality → download while the engine handles metadata inspection, format selection, cookie resolution, retries, throttling, download execution, remuxing, stream validation, and platform differences.
You are not pretending you invented media extraction. You built the system that makes the underlying tools approachable and dependable.
User works with
URL → format → quality → download
Engine handles
- metadata inspection
- format selection
- cookie resolution
- retries
- throttling
- download execution
- remuxing
- stream validation
- platform differences
One Engine, Three Interfaces
The interfaces do not implement separate download behavior. They all call the same engine.
VidVortex Engine
vidvortex.py
Desktop GUI
Tkinter / ttk
TUI
Textual
CLI
Python arguments
Shared Download Pipeline
- yt-dlp
- FFmpeg
- aria2c
Use it your way
Desktop
GUI
For normal use.
Terminal
TUI
For keyboard-driven workflows.
Command line
vidvortex <url> --mode video --quality 1080
For scripts and batch workflows.
All three surfaces execute the same underlying pipeline.
Visual centerpiece
From URL to verified media
- Paste URL
- Validate
- Fetch metadata
- Inspect formats
- Select quality
- Build yt-dlp command
- Download
- Remux if needed
- FFprobe validation
- ✓ Ready
A successful process exit is not the same thing as a valid media file.
The interface never owns the long-running work
Long-running subprocess work happens off the Tk event loop; interface updates are marshalled back onto the main thread.
Main UI thread
- buttons
- forms
- progress
- logs
Background thread
- ├── metadata
- ├── download
- ├── ffmpeg
- ├── validation
root.after(...) → UI update
Activity
- [metadata] qualities loaded
- [download] 22.4% · ETA 00:41
- [download] 64.7% · ETA 00:16
- [merge] combining video + audio
- [validate] checking output streams
- [done] ~/Desktop/VidVortex/video/...
Choose the output before downloading it
Instead of letting users guess format codes, VidVortex first queries metadata and translates available streams into useful choices.
Video
- Best Available
- 2160p
- 1440p
- 1080p
- 720p
- 480p
Audio
- Best Available
- 320 kbps
- 256 kbps
- 192 kbps
- 128 kbps
Format strategy
User choice: 1080p
VidVortex translates user-friendly quality choices into yt-dlp format expressions.
Different networks need different behavior
Fast
- retries
- 5
- delay
- none
- aria2c
- enabled when available
Prioritizes throughput.
Safe
- retries
- 10
- delay
- 1–3s
- aria2c
- off
Default balance between speed and reliability.
Conservative
- retries
- 15
- delay
- 2–6s
- aria2c
- off
More conservative request pacing for restrictive networks.
Adaptive throttling
- 429 / 403 / rate-limit pattern
- increase throttle level
- more retries + additional delay
Authentication without making it the user's problem
VidVortex supports authenticated downloads through browser sessions or imported cookie files — including browser-profile edge cases.
Browser session
- Chrome
- Firefox
- Edge
- Chromium profiles
↓ --cookies-from-browser
Cookie file
- cookies.txt
- validate
- persist configuration
- lock browser source
Atlas compatibility
When a browser is not directly recognized by yt-dlp, VidVortex can resolve its Chromium profile path and translate it into a compatible browser-profile target.
Same workflow, different operating systems
VidVortex adapts media selection and process execution around platform differences.
Windows / macOS
- MP4
- H.264
- AAC / M4A
Prefer broadly compatible containers and codecs.
Linux
- Broader codec support
- Flexible container choices
Allow broader codec and container combinations where compatibility constraints are less strict.
GUI process handling
- Windows console suppression
- PATH recovery for double-click launches
- OS-specific dependency discovery
Trust, then verify
VidVortex validates the output media instead of assuming a completed subprocess produced a usable file.
- Output file
- Container check
- Non-MP4? → FFmpeg remux + faststart
- FFprobe
- Duration > 0?
- Video stream?
- Audio stream?
- ✓ Valid
Defensive boundaries
URL validation happens before metadata retrieval and again before download execution.
- ✓ HTTP / HTTPS only
- ✓ localhost blocked
- ✓ private/reserved IPs rejected
- ✓ playlists disabled by default
- ✓ subprocess cancellation supported
It is a desktop workflow around yt-dlp and FFmpeg.
Users are responsible for downloading media they are permitted to access and retain.
From Python project to desktop application
VidVortex checks external dependencies before starting download workflows and provides actionable diagnostics when something is missing.
- Source
- PyInstaller
- Single-file Windows executable
Bundled
- application code
- UI assets
- default configs
Resolved externally
- yt-dlp
- FFmpeg
- ffprobe
- optional aria2c
VidVortex Doctor
- Python✓
- yt-dlp✓
- FFmpeg✓
- ffprobe✓
- aria2coptional
Technical highlights
03
Interfaces
Desktop · TUI · CLI
01
Shared engine
No duplicated download pipeline
03
Runtime profiles
Fast · Safe · Conservative
02
Media tools
yt-dlp · FFmpeg
02
Validation passes
URL · Output media
—
Cross-platform
Windows · macOS · Linux
Engineering decisions
One engine, three interfaces
Validate output, not just exit codes
Wrap yt-dlp and FFmpeg instead of reimplementing extractors
Platform-aware format strategy
VidVortex is an active open-source desktop tool. The shared engine powers GUI, TUI, and CLI surfaces across Windows, macOS, and Linux.
Distribution includes Python source and a PyInstaller Windows executable. External dependencies (yt-dlp, FFmpeg, ffprobe) are validated before download workflows start.
Next steps
Planned work — not yet completed features.
- Keep release packaging current with yt-dlp and FFmpeg changes
- Improve first-run diagnostics when toolchain detection fails
- Refine activity logging for faster support on auth and cookie edge cases
Technology
Interfaces
- Tkinter / ttk — desktop GUI
- Textual — terminal UI
- CLI — scripted and batch workflows
Engine & media
- Python 3 — orchestration and subprocess management
- yt-dlp — extraction and format discovery
- FFmpeg / ffprobe — remux, validation, post-processing
- aria2c — optional download accelerator
Packaging & delivery
- PyInstaller — single-file Windows executable
- GitHub Actions — cross-platform releases
- Per-OS setup scripts — dependency discovery