A desktop app that downloads and converts audio and video from YouTube, SoundCloud, TikTok, Instagram, Vimeo, and hundreds more platforms — with optional lyrics, subtitle support, and a fully responsive UI that adapts to any window size.
- Output formats: MP3, WAV, FLAC
- MP3 at 320 kbps / 48 kHz, lossless source quality for WAV & FLAC
- Embeds cover art, title, artist, album, and year metadata automatically
- Lyrics support — download as a separate
.lrcfile or embed directly into the MP3 (USLT tag) - Optional playlist download support
- Output formats: MP4, MKV
- Choose your resolution — from 144p up to 4K, based on what the source offers
- Embeds subtitles directly into the container — no sidecar
.vtt/.srtfiles left behind - Supports both manual and auto-generated subtitle tracks
- Embeds thumbnail and metadata automatically
- MP4 uses
mov_text(SRT), MKV uses native SRT/ASS — both embed correctly
- 🎨 Live theme switching — red accent in Audio mode, blue accent in Video mode, applied across all buttons, borders, progress bar, and focus rings
- 🔀 Animated transitions — smooth fade when switching between Audio and Video config panels
- 📐 Fully responsive layout — all panels, buttons, and the log area stretch to fill the window; works correctly on maximize, snap, and any arbitrary resize
- 📋 Live log feedback — every setting change (mode, format, lyrics option, resolution, subtitle track, output folder) is immediately reflected in the terminal — clears and shows the latest status so it never clutters
- 📊 Real-time progress bar that tracks download percentage
- ⏹️ Cancel button to stop at any time
- 🔄 Reset button to quickly start a new download
- ⟳ Built-in Update yt-dlp button to keep the tool up to date
- 🪟 Standalone
.exe— no installation or Java required
- 🔗 Supports YouTube, SoundCloud, TikTok, Instagram, Vimeo, and many more
- 📋 Analyze a URL first to preview available subtitle/lyrics tracks and resolutions before downloading
- 📂 Choose your own output directory
- Go to the Releases page
- Download the latest
AVault.exe - Run it — that's it!
⚠️ Windows only.yt-dlpandffmpegare bundled inside — no extra setup required.
AVault uses yt-dlp to fetch streams and FFmpeg to encode and tag them. Lyrics are embedded using JAudioTagger.
| Format | Bitrate | Sample Rate |
|---|---|---|
| MP3 | 320 kbps | 48,000 Hz |
| WAV | Lossless | Source native |
| FLAC | Lossless | Source native |
| Title / Artist / Album / Year | Cover Art | |
|---|---|---|
| MP3 | ✅ | ✅ |
| FLAC | ✅ | ✅ |
| WAV | ✅ | ❌ (ffmpeg limitation) |
| Mode | Result |
|---|---|
| No Lyrics | Audio only |
| Separate .lrc file | Lyrics saved alongside the MP3 |
| Embed in MP3 | Lyrics written into the MP3's metadata (USLT tag) |
| Format | Subtitles | Subtitle Format | Metadata & Thumbnail |
|---|---|---|---|
| MP4 | ✅ Embedded | SRT (mov_text) | ✅ |
| MKV | ✅ Embedded | SRT / ASS | ✅ |
Requirements
- Java 21+
- Maven
First, clone the repository and build the project. This step applies to all platforms:
git clone https://github.com/AngelosKalogeridis/AVault.git
cd AVault
mvn clean packageThis will generate avault-1.0-SNAPSHOT.jar inside the target/ directory.
Create a folder named dist in the root of the project and move the compiled JAR into it:
mkdir dist
# On Windows: copy target\avault-1.0-SNAPSHOT.jar dist\
# On Linux: cp target/avault-1.0-SNAPSHOT.jar dist/💡 Developer Tip: If you just want to test the app locally without building the executables, you can run it directly from the terminal using: mvn clean javafx:run
yt-dlp.exe,ffmpeg.exe,ffprobe.exeand the compiledavault-1.0-SNAPSHOT.jarplaced indist/app.icoicon file in root directory
Packaging to .exe
jpackage `
--type exe `
--name "AVault" `
--app-version "1.0.0" `
--vendor "AK006" `
--icon "app.ico" `
--input "dist" `
--main-jar "avault-1.0-SNAPSHOT.jar" `
--main-class "Launcher" `
--dest "installer-output" `
--win-shortcut `
--win-menu `
--win-dir-chooser `
--description "AVault — Audio & Video Downloader"The bundled tools (
yt-dlp.exe,ffmpeg.exe,ffprobe.exe) must be placed indist/before runningjpackage. They are resolved at runtime from the same folder as the JAR.
For execution in cmd, replace ` with ^.
- Linux native binaries for
yt-dlp,ffmpeg, andffprobeand the compiledavault-1.0-SNAPSHOT.jarplaced indist/ app.pngicon file in root directory (Linux does not support.ico)
Packaging to .deb
jpackage \
--type deb \
--name "AVault" \
--app-version "1.0.0" \
--vendor "AK006" \
--icon "app.png" \
--input "dist" \
--main-jar "avault-1.0-SNAPSHOT.jar" \
--main-class "Launcher" \
--dest "installer-output" \
--linux-shortcut \
--linux-menu-group "AudioVideo" \
--linux-app-category "AudioVideo" \
--description "AVault — Audio & Video Downloader"The bundled Linux tools (
yt-dlp,ffmpeg,ffprobe) must be placed indist/before runningjpackage. They are resolved at runtime from the same folder as the JAR.
| Tool | Purpose |
|---|---|
| Java 21 | Core language |
| JavaFX 21 | Desktop UI framework |
| yt-dlp | Downloading audio & video streams |
| FFmpeg | Encoding, merging, subtitle conversion & metadata tagging |
| JAudioTagger | Embedding lyrics into MP3 |
| Maven | Build & dependency management |
| jpackage | Packaging into a standalone .exe |
| 🎵 Audio Mode | 🎬 Video Mode |
![]() |
![]() |
This tool is intended for personal use only. Please respect copyright laws and each platform's Terms of Service. Only download content you have the right to download.
❌ DRM-protected platforms are not supported — this includes Spotify, Deezer, Apple Music, Tidal, and similar services.

