About 1440p and 4K
Up to 1080p, MP4s use H.264 video, which plays everywhere. YouTube only offers 1440p and 4K as VP9 or AV1, so those MP4s play in the Windows 11 Media Player and VLC; older players may need the free VP9 Video Extensions.
Features
A friendly window for everyday downloads and a proper command line for scripts. Both use the same engine and the same self-updating tools.
In the app
Video and audio are fetched separately and merged by FFmpeg, so every MP4 has sound, from 360p all the way up to 4K when the video has it.
The quality list shows only the resolutions a video really has. Pick 4K and you get 2160p, not a silent step down.
Save just the sound as MP3 at 320, 256, 192 or 128 kbps, or as M4A in the original quality.
Add as many links as you like. Each gets its own progress bar, speed and time left, with Cancel, Retry and Show in folder. Up to 4 downloads run at once.
When a link is a playlist, switch on Whole playlist and Stashy saves every video in it.
Sites change often. Stashy keeps yt-dlp, FFmpeg and Deno in its own folder and updates them in one click, so downloads keep working.
Files are named like Title [id] - 1080p.mp4 or - 320kbps.mp3, so several qualities of one video can sit side by side.
See the thumbnail, title, uploader, site and length before you download, and how many videos a playlist has.
For videos that need you to be signed in, like age-restricted or members-only ones you have access to, Stashy can use your browser's login: Chrome, Edge, Firefox, Brave or Opera.
Press Ctrl+V anywhere in the window or drag a link onto it. Enter fetches the details, Ctrl+D starts the download.
Every finished download is kept on the History page, with search and a click to open the file or its folder.
Download from any terminal or script once Stashy is on your PATH (an optional checkbox in the installer).
stashy https://youtu.be/aqz-KE-bpKQ -f mp3 Command-line guide A full Arabic interface with a right-to-left layout. Switch languages any time in Settings.
Stashy tells you when a new version is out, checks the download's SHA-256 and installs it in a click.
A bold dark theme, a light one, or follow Windows. Taskbar progress and a notification when your downloads finish in the background.
Nothing to sign up for, no ads, no bundled extras. Files go straight to your Downloads\Stashy folder, or wherever you choose.
Up to 1080p, MP4s use H.264 video, which plays everywhere. YouTube only offers 1440p and 4K as VP9 or AV1, so those MP4s play in the Windows 11 Media Player and VLC; older players may need the free VP9 Video Extensions.
After each MP4, Stashy checks the streams. Audio that isn't AAC, MP3 or ALAC becomes AAC, and HEVC video (common on TikTok) becomes H.264, so the file opens in the default Windows player.
A download only counts as done when the file exists and its streams check out. If YouTube refuses a stream, Stashy retries with fresh links before it gives up, and tells you if it had to save a lower quality.
Command line
Run stashy with a link in PowerShell or Command Prompt and it downloads right there, with a progress bar and no window. Great for scripts and long lists of links.
PS C:\Users\you> stashy --version
Stashy 1.0.0
PS C:\Users\you> stashy https://youtu.be/aqz-KE-bpKQ --info
Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film
Site:YouTube
Uploader:Blender
Duration:10:35
Video:4K (2160p), 1440p, 1080p, 720p, 480p, 360p
Formats:MP4, MP3, M4A
PS C:\Users\you> stashy https://youtu.be/aqz-KE-bpKQ -f mp3 -b 320
Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [YouTube]
Saved (320kbps): C:\Users\you\Downloads\Stashy\Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ] - 320kbps.mp3
PS C:\Users\you> stashy https://youtu.be/aqz-KE-bpKQ -q 1080 -o D:\Videos
Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [YouTube]
Saved (1080p): D:\Videos\Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ] - 1080p.mp4
PS C:\Users\you>
stashy https://youtu.be/aqz-KE-bpKQ -q 1080 stashy https://youtu.be/aqz-KE-bpKQ -f mp3 -b 320 stashy URL1 URL2 URL3 -f m4a -o D:\Music stashy --update-tools Put links in quotes if they contain &, for example stashy "https://www.youtube.com/watch?v=aqz-KE-bpKQ&t=30".
Set it up
stashy on your PATH.Windows only finds stashy in a terminal once its folder is on your PATH. Pick one of the two ways below. Both take under a minute, and neither needs admin rights.
Recommended
stashy --version.Already installed? Just run the setup again. It upgrades in place, keeps your settings, tools and history, and lets you tick the box. Updates remember your choice, and uninstalling removes the PATH entry.
By hand
%LOCALAPPDATA%\Programs\Stashy Keep the %LOCALAPPDATA% part as it is. Stashy's updates then leave your entry alone. If you installed Stashy in a different folder, use option 1 instead.
Or paste this into PowerShell:
$dir = '%LOCALAPPDATA%\Programs\Stashy'
$key = [Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true)
$path = $key.GetValue('Path', '', 'DoNotExpandEnvironmentNames')
if (($path -split ';') -notcontains $dir) { $key.SetValue('Path', (@($path.TrimEnd(';'), $dir) -ne '') -join ';', 'ExpandString') }
$key.Close()
# Tell Windows the PATH changed, so new terminals pick it up:
[Environment]::SetEnvironmentVariable('STASHY_REFRESH', '1', 'User'); [Environment]::SetEnvironmentVariable('STASHY_REFRESH', $null, 'User') It adds the folder to your own PATH only once and leaves every other entry untouched. Then open a new terminal.
Skip PATH entirely: call the app by its full path, for example & "$env:LOCALAPPDATA\Programs\Stashy\Stashy.exe" --help in PowerShell.
Reference
stashy URL [URL ...] [options]. Options go in any order and combine freely, for example stashy URL -f mp3 -b 192 -o D:\Music.
| Option | What it does | Example |
|---|---|---|
URL [URL ...] | One or more links to download. Same as the app's Download button. | stashy https://youtu.be/aqz-KE-bpKQ |
-d, --download URL | Download URL. The same as giving the link on its own; repeat it for several links. | stashy -d URL1 -d URL2 |
-f, --format {mp4,mp3,m4a} | What to save: MP4 video with sound (default), MP3 audio or M4A audio. | stashy URL -f mp3 |
-q, --quality {best,2160,1440,1080,720,480,360} | Video height for MP4. Default: best, the highest the video has. | stashy URL -q 1080 |
-b, --bitrate {320,256,192,128} | MP3 bitrate in kbps. Default: 320. | stashy URL -f mp3 -b 192 |
-o, --out DIR | Folder to save into. Default: Downloads\Stashy. | stashy URL -o D:\Videos |
--playlist | Download the whole playlist when the link is one. | stashy PLAYLIST_URL --playlist |
--cookies {chrome,edge,firefox,brave,opera} | Use your browser's login, for videos you can only watch while signed in. | stashy URL --cookies firefox |
--info | Print the title, site, length and available qualities without downloading. | stashy URL --info |
--json | Machine-readable output: with --info, or one JSON line per finished download. | stashy URL --info --json |
--tools | Show the installed versions of yt-dlp, FFmpeg and Deno. | stashy --tools |
--setup | Download any missing tools (yt-dlp, FFmpeg and Deno). | stashy --setup |
--update-tools | Update yt-dlp, FFmpeg and Deno to their latest versions. | stashy --update-tools |
--check-update | Check whether a newer version of Stashy is available. | stashy --check-update |
--quiet | No progress bar; print only results and errors. | stashy URL --quiet |
-h, --help | Show the built-in help. | stashy --help |
-V, --version | Show the installed version. | stashy --version |
Pass one link or several; they download one after another. Opening a link without a terminal, from a shortcut for example, opens the Stashy window with the link filled in instead.
The command line uses the same yt-dlp, FFmpeg and Deno as the app. If they're missing it stops with exit code 3; run stashy --setup once, and stashy --update-tools whenever a site stops working.
0Everything worked.1A download or network error.2Bad arguments, like an unknown option or value.3The download tools are missing. Run stashy --setup.Stashy is a windowed app, so in a script, make the next line wait for it to finish. Either pipe its output (for example to Out-Host) and read $LASTEXITCODE, or use Start-Process -Wait. In Command Prompt, use start /wait. Use --json when another program reads the output.
Get-Content links.txt | ForEach-Object { stashy $_ -f mp3 --quiet | Out-Host }
if ($LASTEXITCODE -ne 0) { Write-Warning "The last download failed" } start /wait stashy https://youtu.be/aqz-KE-bpKQ -q 720 -o D:\Videos Every option also has the built-in help: run stashy --help.
Free for Windows 10 & 11. Installs in a minute, keeps itself up to date.