# yoinks yoinks yoink any video. paste. yoink. done. Download videos from YouTube, X/Twitter, Instagram, Threads, TikTok and 1,800+ other sites — right from your terminal. Paste a url, pick a resolution (or audio-only mp3), done. No popups, no fake download buttons, no sketchy redirects. yoinks home screen — paste a link and hit yoink ## Install ```sh npm install -g yoinks ``` Or try it without installing anything: ```sh npx yoinks ``` Requires Node 18+. Everything else (yt-dlp, ffmpeg) is fetched or bundled automatically. ## Usage ```sh $ yoinks https://youtu.be/dQw4w9WgXcQ # straight to the format picker $ yoinks # prompts for a url $ yoinks --theme light # force the light palette ``` yoinks takes over the terminal (full-screen, centered — and restores your scrollback on exit). Pick a format with ↑/↓ (or j/k, or number keys) and hit enter. `esc` goes back, `^c` quits. Or just use the mouse — the yoink button, the format list and the footer hints are all clickable, and clicking the logo takes you back home. Files are saved to `~/Downloads`, and the file path is printed to your terminal when you're done. The default `auto` theme uses your terminal's own foreground and background, so it follows light and dark terminal themes without guessing. Press `^t` or click the theme control in the footer to cycle through `auto`, `light`, and `dark` for the current session. Use `--theme auto`, `--theme light`, or `--theme dark` to choose the starting theme for one launch. yoinks format picker — resolutions with estimated file sizes, plus audio-only mp3 ## How it works - Powered by [yt-dlp](https://github.com/yt-dlp/yt-dlp). On first run, yoinks downloads the standalone yt-dlp binary to `~/.yoinks/bin` — no Python required. If you already have yt-dlp installed, it uses yours. - ffmpeg (needed for merging high-res streams and mp3 extraction) is found on your PATH, with `ffmpeg-static` as a bundled fallback. - The UI is [Ink](https://github.com/vadimdemedes/ink) — React for the terminal. ## Development ```sh npm install npm run build # bundle to dist/ with tsup npm run dev # rebuild on change node dist/cli.js npm run typecheck ``` To try it as a global command without publishing: `npm link`, then run `yoinks` anywhere. ## Roadmap - [ ] `--best` / `--mp3` flags to skip the picker (scriptable mode) - [ ] `-o ` to choose the output folder - [ ] Playlist / thread-with-multiple-videos support - [ ] Clipboard detection: launch bare and auto-suggest the url you copied - [ ] Self-update for the bundled yt-dlp binary (`yt-dlp -U`) - [x] Publish to npm (`npm i -g yoinks` / `npx yoinks`) - [ ] `curl yoinks.sh | sh` installer ## A note on fair use yoinks is a personal-archiving tool. Downloading content may violate a platform's terms of service — only download what you have the right to keep, and be excellent to creators. ## License [MIT](LICENSE)