yank
A terminal UI for downloading video with yt-dlp.
Paste a URL, pick a format from a short list, watch a progress bar, get the path of the file that landed on disk.
brew install amornnan19/tap/yank
yank in motion
What it does
-
Seven rows, not a hundred
A full yt-dlp extraction can list a hundred-odd formats. yank reduces them to at most seven: up to six video heights plus one mp3 audio row.
-
Sensible codec choice
Within a height it prefers avc1/h264, which plays everywhere, unless the vp9/av01 stream is at least 25% smaller.
-
yt-dlp fetched for you
Uses yt-dlp from your
PATHif present, and never updates that copy. Otherwise it downloads the release asset and verifies it against the SHA-256 in the release'sSHA2-256SUMS. Once a day, in the background, it checks for a newer release, verifies it the same way, and switches to it on the next launch that finds no other yank window using the old one. -
ffmpeg is optional
Without ffmpeg you get fewer rows, only formats that already carry video and audio, and the picker says why. A smaller menu, not a failure.
-
Progress, then a path
Watch a progress bar while it downloads. The done screen tells you where the file landed:
~/Downloads.
Pick a format
Install & use
yank is a single static binary. It needs neither Go nor yt-dlp at runtime: it fetches and updates its own yt-dlp.
Homebrew (macOS and Linux)
brew install amornnan19/tap/yank
ffmpeg is optional and not installed with yank; brew install ffmpeg adds the merged and mp3 rows to the format picker.
Download a binary
Each release carries a yank_<version>_<os>_<arch>.tar.gz for darwin and linux on amd64 and arm64, and a checksums.txt with their SHA-256:
shasum -a 256 -c checksums.txt --ignore-missing tar -xzf yank_<version>_<os>_<arch>.tar.gz yank ./yank --version
Then put the yank binary somewhere on your PATH.
macOS Gatekeeper. The binaries are not signed or notarized, so macOS quarantines one downloaded by a browser and refuses to run it. Clear the flag once:
xattr -d com.apple.quarantine ./yank
Homebrew installs are not affected.
With Go
Go 1.27.1 or newer is required. The binary lands in go env GOBIN or $(go env GOPATH)/bin, which must be on your PATH.
go install github.com/amornnan19/yank/cmd/yank@latest
Use
$ yank # start on the input screen, ready for a pasted URL $ yank <url> # start with that URL $ yank --update # update the cached yt-dlp now; no terminal UI needed $ YANK_NO_UPDATE=1 yank # turn the daily background check off
- enter
- fetch the URL; in the picker, download the selected row; on the done screen, start another
- ↑ ↓ / j k
- move the cursor in the picker
- 1–9
- jump to a row without starting it
- esc
- cancel a fetch or download and go back
- q
- quit from the done screen
- ctrl+c
- quit from anywhere