yank

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.

View on GitHub
go install github.com/amornnan19/yank/cmd/yank@latest

yank in motion

Illustration, not a screen recording: a scripted replay of yank's screens and motion. The video, sizes and speeds are made up.

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 PATH if present. Otherwise it downloads the release asset and verifies it against the SHA-256 in the release's SHA2-256SUMS.

  • 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

Illustration, not a screenshot. Titles, formats and sizes vary by video.

Install & use

Requires Go 1.27.1 or newer. 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
$ yank          # start on the input screen, ready for a pasted URL
$ yank <url>    # start with that URL
enter
fetch the URL; in the picker, download the selected row
/ j k
move the cursor in the picker
19
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