pablostanley/yoinks

Media & Design

Grabs a video from a pasted link in a full-screen terminal picker, avoiding ad-laden download sites.

6,352
536
TypeScript
MIT
3 months old

A small, focused downloader for people who paste links often and dislike browser download pages: it wraps yt-dlp in a terminal picker, and the whole job is paste, choose a format, done.

The problem

You have a video URL and want a local file, usually at a specific resolution or as audio. The common path is a free download site: close popups, dodge fake buttons, pick through an unclear format list, and hope the file that lands is what you asked for. yoinks moves that step into the terminal. Paste the URL as an argument or at a prompt, arrow through formats with estimated sizes and an audio-only mp3 option, and the file lands in ~/Downloads with its path printed — scrollback restored on exit.

What's different

The mechanism is not a new extractor. yoinks is a UI layer over yt-dlp, the widely used downloader, and the README credits it as the engine; the interface is built with Ink, which renders React components in a terminal. The practical benefit is that the messy part — a full-screen picker with keyboard and mouse support, number keys, theme cycling, and size estimates per format — sits on top of an extractor that already claims support for 1,800+ sites. Support for a site therefore tracks yt-dlp rather than a bespoke list.

The trade-off is that this is a convenience shell, not a self-contained tool. On first run it fetches the standalone yt-dlp binary into ~/.yoinks/bin unless one is already installed, and high-resolution merging plus mp3 extraction depend on ffmpeg, found on PATH with a bundled fallback. So first launch involves a download, and the project's own reach is bounded by yt-dlp's behavior when a site changes. The roadmap is also visibly incomplete — scriptable --best/--mp3 flags, output-directory selection and playlist support are unchecked, and bundled yt-dlp self-update is still planned.

Who should try it

Good fit: a developer who already uses a terminal, downloads videos regularly, and wants one command instead of a browser tab, especially in the npx yoinks case where no global install is needed. Poor fit: anyone who needs batch or playlist downloads, a fixed output folder, or unattended scripting — those are listed roadmap items, not current features — and anyone who prefers a GUI file dialog. The README's own fair-use note matters here: it calls the tool personal-archiving software and warns that downloading may violate platform terms, so the legal judgement is on the user.

Requirements and limitations

Node 18+ is required, and everything else is described as automatic: yt-dlp is fetched or reused, ffmpeg is looked up or bundled. Installation is one npm command or npx, documented in the README. The most consequential limits are the first-run binary fetch, the yt-dlp dependency for site compatibility, and the missing flags for output folder, mp3-only and playlists — which today force interactive use for each file. Ongoing upkeep mostly means keeping yt-dlp current when a site breaks downloads; the project plans self-update but has not shipped it.

HotRepo's take

The dated board samples show 2,723 stars on 2026-10-01 and 6,331 on 2026-10-27, with four recorded appearances in that window; that is a snapshot, not a trajectory. With comparable daily history insufficient, persistence cannot be judged. Before adopting, check that your target site's formats come through as expected after the first-run yt-dlp fetch.

Written by AI from the project's README, updated October 27, 2026. The project's own docs are the source of truth.