Skip to content
DRAZYPublic

About

Desktop app for Windows and Apple-silicon Macs that downloads video and audio from YouTube and the 1,700+ sites yt-dlp supports. Saves MP4, MP3, M4A or WAV with tags, cover art, chapters and subtitles. You can pick the audio language, trim, split, follow channels and convert. Free, no account.

Topics

Resources

Security policy

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

TuberX

TuberX downloads video and audio from a link and saves it as a finished file.

It's a desktop app for Windows and Apple-silicon Macs. Paste a link, pick a quality, and you get an MP4, MP3, M4A or WAV with the tags, cover art, chapters and subtitles already inside. It works with YouTube, Vimeo, Instagram, Dailymotion, SoundCloud, Mixcloud, Reddit, Bilibili and the 1,700 other sites the yt-dlp engine knows. yt-dlp updates itself, so a site change usually doesn't have to wait for a new version of the app. You can also pick the audio language on dubbed videos, trim clips, split by timecodes, follow playlists and channels, and convert to H.264 or H.265 on your GPU. There's no account, no telemetry and nothing to pay for.

Release Downloads Stars CI Last commit
Electron Vue TypeScript License Platforms

Download the latest release · Windows installer · Windows portable exe · macOS dmg


What TuberX is for

TuberX is for when you want a video, talk, mix, album or lecture series as a file on your machine, in the format your player or editor expects, without browser extensions, converter websites or "premium" nags. It's built for people who download often. The queue survives a crash, you see the quality before you commit, there's a Later list, History remembers where every file went, and subscriptions pick up new uploads for you.

TuberX main window

Features

Adding links

  • Pasting links. Press Ctrl+V anywhere in the window, right-click and choose Paste link, drag a link in, or drop a text file of links. If you copied a link in your browser, TuberX offers it when you come back, and one click adds it or adds and downloads it.
  • Playlists and channels. A playlist link opens a picker with search, select-all and Download all later. A single video that belongs to a playlist asks which you meant.
  • Subscriptions. Follow a playlist or channel from the picker. Every launch (and every six hours while open) TuberX spots the new videos, badges the count in the title bar, and queues them in one click.
  • Browser extension. Send the current page or any link from Chrome, Edge or Firefox with a click or Ctrl+Shift+P (Ctrl+Shift+L for Download Later).
  • The queue. Drag rows to set the download order. Select several and act on them together. Export the queue, Later or History as a text file of links.

Quality and formats

  • Every quality a video offers, from best down to 360p, with frame rate and an estimated finished size beside each choice, plus MP3, M4A, WAV, an M4R ringtone and subtitles-only. An "Apply to all" control sets one choice for the whole list.
  • Audio language. A video with several audio languages gets a language picker on its row, next to the quality. A dub keeps its language in the file name ([fr]), so it never replaces another language.
  • Finished files. MP4 with H.264/AAC preferred so it plays on stock Windows; subtitles embedded (auto-captions as fallback); chapters from the video's timestamps; cover art; title and artist tags. MP3 at your chosen bitrate (320 kbps by default). M4A as the original stream, no re-encode. WAV as lossless 16-bit PCM for editing.
  • Video codec. Choose H.264 for compatibility or H.265 for smaller files. Sources that arrive in VP9 or AV1 are converted after the download with the hardware encoder on your machine (Apple VideoToolbox, NVIDIA NVENC, Intel Quick Sync, AMD AMF), software as the fallback, with progress on the row.

Editing

  • Trim with preview. Scrub the downloaded video, set in and out points (chapters are one-click presets), and export the clip as MP4, M4A or a 40-second M4R ringtone. Instant keyframe cuts or frame-accurate re-encoded cuts. The original is never touched. If the preview cannot decode a file (8K or HDR without hardware decoding), the dialog says so and the in/out fields, chapter presets and export keep working from the file's own duration.
  • Split by timecodes. Paste a tracklist or use the video's chapters: one file per part with titles and track numbers, or write the list into the file as chapters.
  • Batch rename. Prefix, suffix, numbering and a live preview of every new name across the selected rows. Rows and history follow the rename.
  • Select and remove. Click, Cmd/Ctrl-click and Cmd/Ctrl+A select rows in the download list, History and Download Later; Delete or Backspace removes the selection, and a "Remove selected" button appears while anything is selected. "Clear finished" drops every completed row from the list in one click. Files on disk are never touched by any of these.

Speed and reliability

  • Speed. The video track, audio track, subtitles and cover all download at the same time, each through aria2c with sixteen connections, and one ffmpeg pass then writes the finished file. On a 245 MB 1080p60 video, that took the download from 53 s to 23 s. Audio outputs work the same way for MP3, M4A, WAV and M4R: the audio stream and cover arrive together, and one ffmpeg pass extracts, tags and embeds the artwork. Sites that only serve WebM (VP8/VP9 video, Vorbis or Opus audio) still give you a plain MP4, encoded to H.264/AAC on the GPU where there is one. You can run up to eight downloads at once, HLS/DASH fragments download in parallel, and there's an optional speed limit for shared networks. Links resolve in a couple of seconds, and downloads start right away from the metadata already fetched.
  • Pause, Stop, Resume, Download again. Pause keeps what has been transferred. A different quality of a file you already have lands beside it, never over it.
  • Recovering from problems. A transfer that goes quiet restarts and picks up where it stopped. If a site changed its pages, TuberX updates yt-dlp right away and tries again. It also checks for a new yt-dlp daily, separately from app updates. Every engine line goes in a log you can open in one click. Every engine update is verified before it is unpacked or run: its SHA-256 must match the yt-dlp release's own SHA2-256SUMS and the digest GitHub recorded for the file, and it must come from the yt-dlp project's release storage. A download that fails is discarded and the current engine stays in place.
  • After the queue. Open the folder, put the machine to sleep or shut it down when the last download finishes, with a 30-second warning you can cancel. Finished rows open in the default app, in an app you choose, or reveal in the folder.

Access and privacy

  • No account needed. Cookies, a site login and a video password are only needed for private, age-restricted or members-only media. Passwords live in the OS keychain. A user-agent choice (desktop, iPhone, Android) is available for sites that serve phones differently.
  • Network. Proxy, Prefer IPv4 (on by default, which is what clears YouTube's "confirm you're not a bot"), and a bundled PO-token helper.
  • Privacy. TuberX has no analytics, crash reporting or accounts, and it's MIT licensed. Settings, history and logs stay in your app-data folder.
  • Eight languages. English, Español, Deutsch, Français, Português, Italiano, 日本語, 简体中文, following the system or your pick.

Supported sites

TuberX sends every http(s) link to the bundled yt-dlp engine, so the list is yt-dlp's supported sites, 1,751 extractors at engine 2026.08.19. The engine updates itself daily, so a new or repaired extractor reaches you without an app release. A few things to know about that list:

  • "Supported" means there's an extractor for the site. Sites change and break, and yt-dlp itself marks about 136 of those extractors as currently broken at any time. When an extractor breaks mid-download, TuberX retries and the next engine update usually repairs it.
  • Some sites need you to sign in. Instagram, Patreon, private Vimeo, age-gated YouTube and most of X need your cookies (Settings → Network: from Chrome, Edge, Firefox or Brave, or an imported cookies.txt) or a site login (Settings → Access). Nothing is sent anywhere but to that site.
  • DRM services are out (Netflix, Disney+, Spotify and the like). yt-dlp does not decrypt DRM and neither does TuberX.

Tested and working with TuberX: YouTube (videos, Shorts, playlists, channels, subtitles, every quality rung and every audio format), Vimeo, Dailymotion, SoundCloud, Mixcloud, Instagram, Reddit, Bilibili, Twitch clips, Streamable, VK, Loom, Dropbox, The New York Times, Pinterest, Substack, iHeartRadio, Nebula, 9gag, Imgur, tumblr and the Internet Archive.

Install

  • Windows 10/11 (x64): run TuberX-Setup-<version>-x64.exe, or use TuberX-Portable-<version>-x64.exe with no install. The portable build is self-extracting, so allow it a moment on launch while it expands. Both keep settings, history and logs in %APPDATA%\TuberX.
  • macOS 13 or newer (Apple silicon): open the .dmg and drag TuberX to Applications.

The Mac app is signed with a Developer ID certificate and notarized by Apple, so it opens like any other app with no security prompt.

Updates

TuberX checks GitHub Releases for a new version 15 seconds after it opens and then every hour (Settings → About lets you pick every six hours, daily, launch only, or never), and again when the machine wakes from sleep. A new build raises a message in the app, marks the Settings icon, and shows under Settings → About; every check is written to the engine log. Nothing installs until you click Install update, and the check can be turned off.

Install downloads the new version with a progress bar, checks it, and restarts TuberX into it. If downloads are running, it waits and offers Restart to install instead of interrupting them.

  • Windows installer: the new installer runs silently and starts the new version.
  • Windows portable: TuberX downloads the new exe and refuses it unless its SHA-256 matches the digest GitHub recorded for the file and the .sha256 published beside it. It then puts the new exe in place of the old one (same file name, so shortcuts keep working) and starts it. The old copy is deleted on the next start. If the exe sits in a folder TuberX cannot write to, it opens the release page instead.
  • macOS: the update is the signed .zip from the release. macOS itself checks that it carries the same developer signature before swapping it in.

If an in-place install fails, TuberX says why, keeps running, and offers the release page.

Coming from 0.3.10 or earlier on a Mac: those builds were signed ad hoc, and macOS will only let an app replace itself with a build signed the same way. Download the new .dmg once and drag TuberX to Applications, replacing the old copy (settings, history and logs are kept). Every update after that installs itself.

Window

TuberX opens as a small window (600×680) centred on your main display, with no white flash while it loads. Resize or move it and it reopens exactly there next time; if that spot is no longer on a connected display it falls back to the centred default. Minimum size is 480×420. To have it open at full size, turn on Settings → Window → "Start with the window maximized". That's maximized rather than fullscreen, and un-maximizing returns to your remembered size.

Settings

  • Language: system language or one of eight.
  • Destination: default is Videos\TuberX; the last fifteen folders you picked are remembered.
  • Window: start with the window maximized.
  • Output: default quality, convert non-MP4 sources, video codec (auto / H.264 / H.265 with the detected hardware encoder), MP3 bitrate.
  • Subtitles: embed, also save .srt files, languages.
  • Thumbnails: save beside the file as JPG or PNG.
  • Downloads: re-download naming (keep both files or replace), skip files already downloaded, speed limit, what happens when the queue finishes, concurrent downloads (1–8), aria2c on/off, notifications.
  • Network: proxy, Prefer IPv4 (on by default), cookies from a browser, a cookies.txt file, and the PO-token helper (when needed, always, or off; each run of it costs 10 to 60 seconds, so "when needed" is the default).
  • Site login: username and password (keychain), video password, user-agent choice.
  • Engine: status of every bundled tool, a manual "Update yt-dlp now", and the log folder.
  • About: version, platform and links.

The Settings, Later, History and Subscriptions drawers close when you click outside them, press Escape, or add a link, and Settings has a Done button; changes apply the moment you make them.

Re-downloading and existing files

TuberX never replaces a file you already have with a different format. The rules, in order:

  1. A different quality or format of a link you already downloaded lands beside the existing file with the quality in its name: Title.mp4 stays, Title [1080p].mp4 is added. This applies whether you use Download again on the row, or paste the link again after removing the row.
  2. The same format again (Download again on a row without changing the dropdown) refreshes that one file in place. It only does so when the file is on record as produced by that same format.
  3. Audio formats never collide with video. MP3, M4A and WAV have their own extensions, so they always sit beside the video.
  4. A dubbed language gets its own file. The language code goes in the name, like Title [fr].m4a or Title [1080p fr].mp4, so no language replaces another or the original.
  5. Nothing on record (history cleared, files copied from another machine): a video file in the destination with this title still counts as existing, and the new quality gets the tag. If yt-dlp still meets an existing file, TuberX stops it before anything is touched and retries with the tag.

Settings → Downloads → "Re-downloading in a different format" switches rule 1 to Replace the existing file if you prefer one file per link.

Troubleshooting

"Sign in to confirm you're not a bot" from YouTube. YouTube asks this of an IP address it has grown suspicious of, and it usually clears on its own within minutes. TuberX handles it in three steps without you: it connects over IPv4 (the most common trigger is IPv6), it retries once with the bundled PO-token helper on the player clients that helper can actually serve, and if the check still stands it retries the row by itself after a minute and again after three, with the countdown shown on the row. If it survives all of that, the row says so in red and offers a Network settings button: Settings › Network › Cookies from browser lets TuberX use your own YouTube sign-in, which ends the check for good. On Windows, Firefox hands over its cookies most reliably.

The end of a download takes a while. With the parallel engine the finishing pass is a single write and takes about a second on an SSD; the log line fast: done in … breaks a job down into select, streams, finish and move so a slow step is named. The classic pipeline (Settings → Downloads → Parallel engine off) still works the old way: After the transfer, yt-dlp merges video and audio, embeds subtitles, writes tags and chapters, and moves the file, and each of those passes rewrites the whole file. The row names the pass and counts the seconds. Large files on a slow disk, a OneDrive folder or under antivirus scanning are the slow cases. When the destination is on another drive, TuberX keeps its temporary files there too, so the final step is a rename rather than a copy. A forced codec adds a conversion pass with its own progress.

"aria2c exited with code 22" or another aria2c code. aria2c, the multi-connection downloader, was refused by the server for that file, most often YouTube rejecting many connections at once. Since 0.3.12 TuberX retries the file once with yt-dlp's own downloader and the engine log says so; turning aria2c off in Settings › Downloads is no longer needed.

"[Errno 13] Permission denied" naming a tmp….tmp file in C:\Program Files\TuberX. Some videos uploaded in the last couple of days failed this way on Windows, because the engine tried to write a test file to the install folder. Fixed in 0.3.13: update and it goes away.

A download stops moving. The row says "no data for N s" as soon as the engine goes quiet. After 90 s of silence TuberX kills the transfer and restarts it, and aria2c and yt-dlp continue from what is already on disk; after three silent runs in a row the row fails with a message. Stop and Pause always land within a few seconds, even when the downloader is wedged.

A site stopped working. An extractor error makes TuberX check for a newer yt-dlp at once, install it, and retry. If the site is still failing after that, wait for the next yt-dlp release; Settings → Engine → Update yt-dlp now checks on demand.

A download is slow or fails. Every yt-dlp line for every download is written to engine.log (Settings → Engine → Open log folder) in the app-data folder (%APPDATA%\TuberX\logs on Windows, ~/Library/Application Support/TuberX/logs on macOS). It is the first thing to attach to a problem report.

TuberX does not open, or a click does nothing. Check for TuberX.exe in Task Manager (Activity Monitor on a Mac): if it is running with no window, end it and open TuberX again. Since 0.3.8 the window is shown even when the page or the graphics process fails, a second click brings the existing window back, a crashed graphics process makes the next launch render in software, and an unreadable settings file is set aside so the app still starts. The log (path below) begins every launch with a [app] launch line, so it shows how far the app got.

"This video is DRM-protected." The site serves that video only through DRM, and no downloader can take it.

Building from source

bun install
bun scripts/fetch-tools.ts          # engine binaries for this machine (dev)
bun scripts/fetch-tools.ts win32    # engine binaries the Windows build bundles
bun scripts/fetch-pot.ts            # PO-token helper for both platforms
bun run dev                          # Vite + Electron
bun test                             # unit tests
bun scripts/site-check.ts           # resolve one public URL per supported site
bun scripts/release-gate.ts         # 17 end-to-end downloads through the dev app, asserted with ffmpeg, temp files removed after (TUBERX_CDP=1 bun run dev first)
bun run build:win                    # Windows installer + portable exe
bun run build:mac                    # macOS arm64 dmg + zip

macOS builds also need bash scripts/build-aria2-mac.sh once, because no static arm64 aria2c is published upstream.

build:mac signs with the Developer ID Application certificate in the login keychain and notarizes the app and the dmg through the notarytool keychain profile named in APPLE_KEYCHAIN_PROFILE (strata-notary in the script; create one with xcrun notarytool store-credentials). No password is stored in the repo. The bundled tools are signed with hardened runtime and only the entitlements they need (scripts/mac-sign.cjs, build/entitlements.mac.*.plist): Deno gets allow-jit for V8, everything else gets none. A release needs latest-mac.yml, the -mac.zip and its .blockmap uploaded beside the dmg for in-app updates, and the Windows release needs latest.yml and the portable exe's .sha256.

Architecture in short: Electron + Vue 3 + Pinia + Tailwind, bundled by Vite and electron-builder. The engine is a set of external processes under resources/bin/<platform>/ (yt-dlp onedir, ffmpeg, aria2c, deno) driven over stdout by the main process; the renderer never touches the file system or spawns anything. State is a SQLite database (node:sqlite) plus an electron-store settings file; secrets go through Electron's safeStorage.

Third-party software

TuberX bundles yt-dlp (Unlicense), FFmpeg (GPL build), aria2 (GPL), Deno (MIT) and the bgutil PO-token provider (GPL-3.0). See THIRD_PARTY_LICENSES.md. Media you download is subject to the terms of the site it comes from and to copyright law; TuberX is a tool, and what you do with it is yours to answer for.

License

MIT. See LICENSE.

About

Desktop app for Windows and Apple-silicon Macs that downloads video and audio from YouTube and the 1,700+ sites yt-dlp supports. Saves MP4, MP3, M4A or WAV with tags, cover art, chapters and subtitles. You can pick the audio language, trim, split, follow channels and convert. Free, no account.

Topics

Resources

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages