The terminal toolkit for YouTube.
Download originals in any quality with zero re-encoding, extract MP3s, pull clean transcripts, and stream without leaving your shell.
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.
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.
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
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
One install away.
Node 20+, Windows, macOS and Linux.