DEV Community

Cover image for I Brought My Abandoned Downloader Back to Life: uTube Now Runs on Android, Desktop, and CLI
Omar Anwar
Omar Anwar

Posted on

I Brought My Abandoned Downloader Back to Life: uTube Now Runs on Android, Desktop, and CLI

uTube is a free, open-source downloader for public videos from YouTube, Facebook, Instagram, and X. It started as a terminal tool I abandoned. Here's what it became and how it's built.

A while ago I built a small terminal tool to download YouTube videos. It worked for a while, then it broke, and I did what many of us do with side projects: I archived the repo and moved on.

Recently I came back to it and rebuilt it properly. Meet uTube.

uTube on desktop, Android, and the terminal

What is uTube?

uTube is a free, open-source app that downloads public videos from:

  • YouTube
  • Facebook
  • Instagram
  • X (formerly Twitter)

You can save a video as MP4 in the quality you choose, or extract just the MP3 audio.

It runs on:

  • πŸ“± Android
  • πŸ–₯️ Windows, macOS, and Linux (desktop app, currently a preview)
  • ⌨️ Terminal (CLI)

Features

Quality choices

Pick the resolution you want, and see the estimated file size before you download. If that quality can't be downloaded, uTube falls back to the best working lower resolution and tells you which one it saved.

uTube Desktop on Windows showing video preview, MP4 or MP3 choice, and quality picker

Playlists

Download a whole playlist or select only some items. Files from a playlist stay together in their own folder, and one failed item doesn't stop the rest.

uTube on Android: choosing which playlist videos to download

Android workflow

Share a supported link to uTube, choose video or audio, pick a quality, and start the download. Downloads continue in the background and you can follow progress in notifications.

uTube on Android: choosing MP4 or MP3 and a video quality with estimated sizes

How it's built

The repository is a small monorepo with three parts:

apps/cli/       Terminal interface and command handling
apps/desktop/   Electron, React, and TypeScript desktop app
packages/core/  Shared download engine
Enter fullscreen mode Exit fullscreen mode

The idea was simple: one shared engine, several interfaces. The CLI and the desktop app both sit on top of the same core, so a fix in the engine benefits both.

The engine: recover quietly

Downloaders break when platforms change, so the engine is built around recovery:

  • Requested quality first. It tries matching encodings and alternate clients at your chosen resolution. A 720p request can use a 720p60 stream.
  • Best working fallback. Only when the requested resolution is unavailable or exhausted does it try lower resolutions, from highest to lowest, and it reports the quality that was actually saved.
  • Quiet retries. Recovery happens without repeated warnings, and the progress bar doesn't jump back to zero.
  • Audio included. Separate video and audio streams are merged into MP4 with FFmpeg. MP3 output uses 192 kbps audio with title metadata.

Try it

Android and Desktop

Download the latest build from the website or the GitHub releases page:

Android works without extra tools. On desktop, the preview builds are unsigned and macOS builds are not notarized, so your system may show a security prompt. FFmpeg is needed for MP3 audio and for videos that require merging audio and video. You can download it from the app's settings, and the Debian package installs it automatically.

CLI

Requires Node.js 20+.

npm install -g utube-cli@latest
utube
Enter fullscreen mode Exit fullscreen mode

This opens an interactive menu. You can also pass a link and a quality directly:

utube -u "https://youtu.be/jNQXAC9IVRw" -q 360p
utube --audio -u "https://youtu.be/jNQXAC9IVRw"
Enter fullscreen mode Exit fullscreen mode

uTube CLI showing video details and a completed download

Contribute

uTube is open source under the MIT license. Bug reports, fixes, translations, and feature ideas are all welcome:

πŸ‘‰ https://github.com/omer73364/uTube

If you try it, I'd love to hear what you think, and which platform you'd like to see supported next.

Thanks for reading! ⭐

Top comments (0)