Start here

Save a video, a channel, or a whole playlist

Paste a YouTube link, choose a resolution, and TubeVault stores it in ./downloads — ready to watch inside the app, offline.

1

Paste a link

Nothing is downloaded yet — we only read the metadata first.

2

Choose a quality

1080p is a good default for laptops and TVs.

3

Review & download

Fetch a link above and its details will appear here.

Download queue

Nothing queued yet.

Your active and finished downloads will show up here with live speed and progress.

What happens when you press download?

  1. Resolve. yt-dlp asks YouTube which streams exist for this video and picks the best one under your resolution cap.
  2. Fetch. Video and audio arrive as separate streams, downloaded in parallel fragments.
  3. Merge. ffmpeg joins them into one MP4 (or extracts an MP3 for audio-only) and the file is indexed in your Library.

Need the details? The explains resolutions, cookies and troubleshooting.

Your collection

Library

Everything in ./downloads, playable right here — no external player needed.

Nothing playing

0:00/0:00

Learn the machinery

How TubeVault works

A short tour of the pieces, so nothing feels like a black box.

01

yt-dlp does the talking

YouTube does not publish a download API. Instead, yt-dlp reads the same player data your browser receives and resolves it into concrete media streams. TubeVault never parses YouTube itself — it spawns yt-dlp and reads its JSON output and progress lines.

02

High resolutions are two files

Above roughly 720p, YouTube serves a video-only stream and an audio-only stream. Downloading "1080p" means fetching both and muxing them with ffmpeg. Without ffmpeg, TubeVault falls back to pre-merged files, which is why some qualities may be unavailable.

03

Everything stays local

The server binds to 127.0.0.1, media lands in ./downloads, and the library index is a plain JSON file. Nothing is uploaded anywhere; the app works offline once a file is saved.

04

Quality is a ceiling, not a promise

Picking 1080p means "best stream at or below 1080p". If a video only offers 720p, you get 720p — the format selector always ends with a safe fallback so a request never fails just because a resolution is missing.

Resolution cheat sheet

PresetPixelsTypical size / 10 minGood for
4K3840 × 21601–3 GBArchiving, big screens (needs ffmpeg)
2K2560 × 1440500 MB – 1.5 GBLarge monitors
1080p1920 × 1080250–600 MBEveryday watching
720p1280 × 720100–250 MBPhones, saving space
480p / 360p854 × 480 / 640 × 36040–120 MBReference clips, slow connections
Audio (MP3)—10–25 MBMusic, podcasts, lectures

Sizes are rough: bitrate depends on the uploader and how much motion the video has.

Where things live

  • downloads/Your media files — the library is built by scanning this folder.
  • downloads/.thumbnails/Cached cover images so the library works offline.
  • data/library.jsonTitle, channel, duration and size for each file.
  • bin/Bundled yt-dlp and ffmpeg executables.
  • server/Zero-dependency Node server: API, queue, streaming.
  • public/The interface you are looking at.

Troubleshooting

“YouTube asked for a sign-in check”

YouTube occasionally challenges automated requests. Export cookies from your browser in Netscape format, then start the server with YTDLP_COOKIES=C:\path\cookies.txt npm start. Only do this for content you are allowed to download.

1080p and 4K are missing or fail

Install ffmpeg: use the button in the setup card, or npm run setup. TubeVault passes --merge-output-format mp4, so the merged result plays in the built-in player.

A download says “Requested format is not available”

That video has no stream matching the preset. Pick “Best available”, or a lower resolution. Live streams and premieres can also behave differently.

The player shows a blank frame but plays audio

Some codecs (for example AV1 in an unusual container) are not decodable by the embedded browser engine. Re-download as 720p/1080p H.264, or play the file in VLC via “Reveal in folder”.

Downloads are slow

The queue runs at most two downloads at once on purpose. Speed also depends on YouTube throttling; yt-dlp already uses parallel fragments. Try a lower resolution if the connection is the bottleneck.

Download responsibly

TubeVault is a local tool for personal archiving. Downloading content you do not own or have rights to may violate YouTube's terms of service or copyright law. Check the rules for your country and use it for material you are permitted to save.