The terminal toolkit for YouTube.

Download originals in any quality with zero re-encoding, extract MP3s, and pull clean transcripts. Terminal or desktop app.

$npm install -g krosztube
Download the app
krosztube

Everything the download sites do, minus the download sites.

Nothing gets re-encoded

krosztube grabs the exact streams YouTube serves and merges them with an ffmpeg stream copy. What the uploader encoded is what lands on your disk.

144p480p1080p1440p4K8K

MP3 in one flag

krosztube audio -b 320 takes the best audio stream and hands you a clean MP3.

Streams to mpv or VLC

krosztube play opens any video instantly, full quality, no file saved. Add --audio for radio mode.

Video, but make it ANSI

play --ascii renders the actual video as truecolor half-blocks in your terminal.

Binaries handled for you

First run downloads a checksum-verified yt-dlp and a static ffmpeg for your OS. When YouTube breaks things, krosztube update fixes them.

The whole script, as text.

Transcripts come from YouTube's own captions: free, instant, no API keys. Auto-caption noise is deduplicated and reflowed into readable paragraphs.

$ krosztube transcript https://youtu.be/jNQXAC9IVRw \
--format md -o script.md
✔ Transcript (en, manual) → script.md

Me at the zoo

Channel: jawed · Duration: 00:19

All right, so here we are, in front of the elephants. The cool thing about these guys is that they have really, really long trunks, and that is pretty much all there is to say.

Also a typed library.

Every command is a plain async function with progress callbacks, AbortSignal support and typed errors. The CLI is just its first consumer.

import { download, getTranscript, renderTranscript } from 'krosztube';

const { files } = await download('https://youtu.be/jNQXAC9IVRw', {
  quality: 1080,
  container: 'original',
  onProgress: (e) => console.log(e.phase, e.percent),
});

const transcript = await getTranscript('https://youtu.be/jNQXAC9IVRw');
console.log(renderTranscript(transcript, 'md'));

Eight commands, no menus.

download

Videos or playlists at any quality, stream-copied

clip

Grab a section, cropped to 9:16 or 16:9 for editing

audio

MP3 extraction from 64 to 320 kbit/s

transcript

Captions as clean txt, markdown, SRT or VTT

play

Stream via mpv or VLC, radio mode, ASCII mode

info

Title, channel, duration, views, JSON output

formats

Every available stream in one table

update

Refresh yt-dlp when YouTube changes things

doctor

Check binaries, players and the cache dir

Prefer a window?

The desktop app does everything the CLI does: paste a link, see what it is, pick a quality, and go. Downloads run on your machine, same as the terminal version.

The Windows installer sets the app up for your account, so it needs no administrator rights. Nothing here is code signed, so SmartScreen and Gatekeeper warn the first time: on Windows choose More info, then Run anyway.

Free, and staying that way.

No accounts, no paywalls, no ads. If krosztube saves you time and you feel like it, a tip keeps independent tools like this maintained.

Sponsor on GitHub

One install away.

$npm install -g krosztube

Node 20+, Windows, macOS and Linux.