Skip to main content
Back to the lab
Chrome extension

TubeVault

Local-first YouTube archiver

View source
Chromeyt-dlpReact
TubeVault popup showing active downloads and queued work
TubeVault options — download history
TubeVault options — helper status panel
TubeVault options — setup checklist

The problem

Playlists rot. Videos go private, channels disappear, and the watch-later library you curated for years is one takedown away from gone — unless you hand your whole library to some third-party downloader site.

The build

A Chrome extension that adds archive controls directly to YouTube watch, Shorts, playlist, and channel pages, with a native-messaging helper that runs yt-dlp locally in WSL. Pick components (video, audio, metadata, thumbnails), set quality preferences, and playlists expand into per-video jobs in a visible download queue. No remote server involved.

Stack & choices

  • Chrome MV3 · ReactContent script UI on YouTube pages, popup queue, and options/history pages
  • Node.js helperNative-messaging host that drives yt-dlp in WSL
  • yt-dlpThe actual download engine — videos, thumbnails, and metadata
  • PowerShellInstaller that registers the native messaging host on Windows

Process notes

  1. 1

    The split architecture is the whole trick: the extension never downloads anything itself — it hands jobs across Chrome's native-messaging bridge to a local helper, keeping the Web Store surface clean.

  2. 2

    Playlist and channel requests expand into per-video jobs, so a 300-video playlist is a queue you can watch drain, not a black box.

  3. 3

    A built-in Setup tab walks through the native host install — the part of local-first tools that usually loses people.

  4. 4

    Versioned like a real product: changelog, screenshots in the repo, v0.3.x and counting.