A modern, cross-platform desktop application built with C# .NET 8.0 and Avalonia UI for downloading videos and audio from popular platforms like YouTube, TikTok, Instagram, and hundreds of other websites. Features a clean, intuitive interface with real-time progress tracking and comprehensive download management.
- β Multi-Platform Support: Native apps for Windows, Linux, and macOS
- β Universal Compatibility: Supports 1000+ websites via yt-dlp integration
- β Format Selection: Choose from various video qualities and audio formats
- β Real-Time Progress: Live download progress with speed and ETA tracking
- β Smart History: Comprehensive download history with file management
- β Custom Naming: Rename files before downloading
- β Flexible Storage: Choose custom download locations
- π¨ Modern UI: Clean, responsive interface with Fluent design
- π Fast Performance: Asynchronous operations keep UI responsive
- π± Intuitive Navigation: Tabbed interface for easy workflow
- π― Error Handling: Graceful error management with user feedback
- π§ File Integration: Direct file access and folder opening
Clean, tabbed interface with Paste Link, Downloads, and History sections
Real-time progress tracking with speed and status indicators
VideoDownloaderApp follows the MVVM (Model-View-ViewModel) pattern for clean separation of concerns:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VideoDownloaderApp β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Views (AXAML + Code-behind) β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β MainWindow β β PasteLinkViewβ βDownloadsViewβ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β MainVM β β PasteLinkVM β βDownloadsVM β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Services: YtDlpService, FileService β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Models: DownloadItem, HistoryItem β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β External: yt-dlp, ffmpeg β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
VideoDownloaderApp/
βββ π Models/
β βββ π DownloadItem.cs # Active download representation
β βββ π HistoryItem.cs # Completed download record
βββ π ViewModels/
β βββ π MainViewModel.cs # Main window coordinator
β βββ π PasteLinkViewModel.cs # URL input and format fetching
β βββ π DownloadsViewModel.cs # Download queue management
β βββ π HistoryViewModel.cs # Download history management
βββ π Views/
β βββ π MainWindow.axaml # Main application window
β βββ π PasteLinkView.axaml # URL input interface
β βββ π DownloadsView.axaml # Active downloads monitor
β βββ π HistoryView.axaml # Download history browser
βββ π Services/
β βββ π YtDlpService.cs # yt-dlp CLI integration
β βββ π FileService.cs # File system operations
βββ π Resources/
β βββ πΌοΈ logo.png # Application logo
β βββ π¬ splash.gif # Splash screen animation
βββ π docs/
βββ π Architecture.md # Detailed architecture guide
βββ π API_Documentation.md # Complete API reference
βββ π User_Guide.md # Comprehensive user manual
Required Dependencies:
- .NET 8.0 SDK or later
- yt-dlp - Video download engine
- ffmpeg - Media processing (optional but recommended)
# Install .NET 8.0
winget install Microsoft.DotNet.SDK.8
# Install yt-dlp
winget install yt-dlp
# Install ffmpeg
winget install ffmpeg
# Install .NET 8.0
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update && sudo apt install dotnet-sdk-8.0
# Install yt-dlp and ffmpeg
sudo apt install yt-dlp ffmpeg
# Install .NET 8.0
brew install dotnet
# Install yt-dlp and ffmpeg
brew install yt-dlp ffmpeg
# Clone and navigate to project
cd VideoDownloaderApp
# Restore dependencies
dotnet restore
# Build the application
dotnet build
# Run the application
dotnet run
# Windows (x64)
dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true
# Linux (x64)
dotnet publish -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true
# macOS (x64)
dotnet publish -c Release -r osx-x64 --self-contained -p:PublishSingleFile=true
# macOS (ARM64 - Apple Silicon)
dotnet publish -c Release -r osx-arm64 --self-contained -p:PublishSingleFile=true
- Paste URL: Copy any supported video URL and paste it into the text field
- Fetch Formats: Click to retrieve available download options
- Select Format: Choose your preferred video quality or audio format
- Customize: Optionally rename the file and choose save location
- Download: Start the download process
- Real-time Progress: Visual progress bars with percentage completion
- Speed Monitoring: Current download speed and estimated time remaining
- Status Tracking: Clear status indicators (Pending, Downloading, Complete, Failed)
- Queue Management: View and manage multiple simultaneous downloads
- Complete History: Chronological list of all completed downloads
- Quick Actions: Play files directly or open containing folders
- File Management: Remove items from history as needed
- Easy Access: One-click access to downloaded content
VideoDownloaderApp supports 1000+ websites through yt-dlp integration:
- YouTube - Videos, playlists, live streams, shorts
- Vimeo - Professional video hosting platform
- Dailymotion - European video sharing platform
- Twitch - Gaming streams, clips, and VODs
- TikTok - Short-form vertical videos
- Instagram - Posts, stories, reels, IGTV
- Twitter/X - Video tweets and embedded content
- Facebook - Public videos and live streams
- Khan Academy - Educational video content
- Coursera - Course videos (where permitted)
- edX - Educational platform content
- YouTube Education - Educational channels
- BBC iPlayer - BBC content (UK region)
- CNN - News video content
- Reuters - International news videos
- Associated Press - News media content
- SoundCloud - Music and podcast content
- Bandcamp - Independent music platform
- Mixcloud - DJ mixes and radio shows
And hundreds more! See the complete list of supported sites.
- Framework: .NET 8.0 with C# 12
- UI Framework: Avalonia UI 11.3.2 (Cross-platform XAML)
- Architecture: MVVM with CommunityToolkit.Mvvm 8.2.1
- Theming: Fluent Design with Inter font family
- CLI Integration: yt-dlp and ffmpeg via System.Diagnostics.Process
- Asynchronous Operations: All network and file operations use async/await
- Real-time Updates: INotifyPropertyChanged and ObservableCollection for live UI updates
- Cross-platform File Operations: Platform-specific file system integration
- Error Handling: Comprehensive error management with user-friendly messages
- Process Management: Safe external process execution with proper cleanup
- Non-blocking UI: All long-running operations run on background threads
- Memory Efficient: Proper disposal of resources and process cleanup
- Responsive Design: Adaptive UI that works on various screen sizes
- Efficient Data Binding: Compiled bindings for improved performance
# Clone the repository
git clone [repository-url]
cd VideoDownloaderApp
# Install dependencies
dotnet restore
# Run in development mode
dotnet run
# Run with hot reload (if supported)
dotnet watch run
- Models: Create data models in
Models/
folder - Services: Implement business logic in
Services/
folder - ViewModels: Add view models in
ViewModels/
folder with proper MVVM patterns - Views: Design UI in
Views/
folder using AXAML - Testing: Add unit tests for new functionality
- Follow C# naming conventions
- Use async/await for all I/O operations
- Implement INotifyPropertyChanged for data binding
- Add XML documentation comments for public APIs
- Use dependency injection where appropriate
- User Guide - Complete user manual with step-by-step instructions
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
- Architecture Guide - Detailed architectural overview
- API Documentation - Complete API reference
- Contributing Guidelines - How to contribute to the project
"yt-dlp not found" Error
# Verify yt-dlp installation
yt-dlp --version
# Add to PATH or place in application directory
Download Failures
- Check internet connection
- Verify URL is accessible
- Try different video quality/format
- Check for geographic restrictions
Performance Issues
- Close unnecessary applications
- Ensure sufficient disk space
- Use wired internet connection for large downloads
For detailed troubleshooting, see the User Guide.
- Batch Downloads: Download multiple videos simultaneously
- Playlist Support: Download entire playlists with one click
- Download Scheduling: Schedule downloads for specific times
- Auto-clipboard Detection: Automatically detect video URLs in clipboard
- Pause/Resume: Pause and resume downloads
- Download Presets: Save preferred quality/format settings
- Advanced Filtering: Filter downloads by duration, size, etc.
- Subtitle Downloads: Download subtitles with videos
- Plugin System: Extensible architecture for custom downloaders
- Cloud Integration: Save directly to cloud storage
- Media Library: Built-in media organization and playback
- Mobile Companion: Mobile app for remote control
We welcome contributions! Here's how you can help:
- Fork the repository
- Clone your fork locally
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Test thoroughly
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow existing code style and conventions
- Add tests for new functionality
- Update documentation as needed
- Ensure cross-platform compatibility
- Test on multiple operating systems if possible
- π Bug Fixes: Fix issues and improve stability
- β¨ New Features: Add new functionality
- π Documentation: Improve guides and API docs
- π¨ UI/UX: Enhance user interface and experience
- π§ Performance: Optimize speed and resource usage
This project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp: Unlicense
- ffmpeg: LGPL/GPL
- Avalonia UI: MIT License
- yt-dlp team - Powerful video download engine
- Avalonia UI - Cross-platform .NET UI framework
- FFmpeg - Multimedia processing framework
- .NET Foundation - .NET ecosystem support
- π Documentation: Check our comprehensive docs folder
- π Bug Reports: Open an issue on GitHub
- π‘ Feature Requests: Suggest new features via GitHub issues
- β Questions: Start a discussion on GitHub Discussions
Made with β€οΈ using .NET and Avalonia UI
β Star this repo | π Report Bug | π‘ Request Feature | π Documentation