Paste a link. Keep the video.
yt-dlp in a full-screen terminal UI. 1,800+ sites, mp4 or
audio-only mp3, straight to your ~/Downloads folder.
install
npx yoinks
Or npm install -g yoinks to keep it. Node 18+ is the only
prerequisite — yt-dlp is fetched to ~/.yoinks/bin on first run (no Python), and
ffmpeg falls back to a bundled binary.
youtube · x · instagram · threads · tiktok · +1800 more
paste. yoink. done.
No popups, no fake download buttons, no sketchy redirects — and nothing to unlearn. Three moves, and the second one is picking a number.
-
paste
Run
yoinksand paste a url, or pass one straight in:yoinks https://youtu.be/…jumps directly to the picker. -
yoink
Resolutions arrive with estimated file sizes attached. Choose one — or take the audio-only mp3 — with the arrow keys,
j/k, a number key, or the mouse. -
done
The file lands in
~/Downloadsand the full path prints to your terminal, ready toopenor pipe onward.
The picker.
- An estimated size sits on every row, so you decide before you commit — not after 232 MB has already moved.
- Audio-only mp3 is the last row of the same list. There is no separate mode to remember.
- The footer hints are clickable, and so are the format rows, the yoink button and the logo. It is a TUI that expects a mouse.
↑↓ or jk to move · enter to yoink · esc to go back · ^c to quit · ^t cycles auto, light and dark.
Specs.
| Sites | 1,800+ | whatever yt-dlp supports |
|---|---|---|
| Video | mp4, to source resolution | streams merged with ffmpeg |
| Audio | mp3, audio-only | extracted with ffmpeg |
| Runtime | Node 18+ | the only prerequisite |
| Extractor | yt-dlp | standalone binary → ~/.yoinks/bin, no Python; yours is used if you have one |
| Merger | ffmpeg | found on PATH, ffmpeg-static as fallback |
| Output | ~/Downloads | path printed on exit |
| Interface | Ink | React for the terminal; keyboard and mouse |
| Themes | auto · light · dark | ^t, or --theme at launch |
| Licence | MIT | source on GitHub |