Cross-platform desktop downloader for YouTube and other platforms, built with Electron + React and powered by yt-dlp. Pre-built release artifacts are published for Windows, macOS, and Linux.
Main dashboard for pasting a link, fetching metadata, selecting clip range, enabling Turbo download, adding items to queue, and using the built-in yt-dlp updater.
Active queue workspace with download overview, per-job status, and inline logs for the selected item.
History dashboard for browsing past downloads, completed items, failed jobs, and archived activity.
Settings workspace for saving defaults, managing clipboard watcher preferences, and checking app/update status.
- Notion-like desktop workspace with dedicated
New Download,Active Queue,History, andSettingsviews - Queue-based downloads with per-item progress and logs
- Pause, resume, cancel, and retry controls
- Optional clip-range downloads with structured Clip Studio controls
- Smart fallback strategy for format/download failures
- Built-in
yt-dlpupdater - In-app app-update notification (checks GitHub latest release)
- Conditional auth handling for age/bot-restricted content
- Clear centered popup when no downloadable formats are available
StreamFetch now handles restricted content in a guided flow:
- Try normal fetch/download first.
- If authentication is required, a popup appears (browser cookies).
- If browser cookie access fails (DPAPI/locked DB), popup enables
cookies.txtimport. - Retry can be applied both at fetch-time and download-time.
- If video still has no downloadable streams, StreamFetch shows a dedicated "No Downloadable Formats" popup.
- Single video and playlist support
- Structured workspace shell with sidebar navigation and saved defaults
- Advanced format picker from extracted format IDs
- Clip-range download for single videos (
ss,mm:ss,hh:mm:ss) - Playlist range controls (
start,end, include, exclude`) - Global + per-download speed limits (
500K,2M,1.5M) - Download history, runtime logs, and active queue overview
- Frameless desktop UI with custom window controls
- Electron 34
- React 18 + Vite 6
- Tailwind CSS 3
yt-dlp+ optionalffmpeg
streamfetch/
electron/ # Main process + preload bridge
src/ # React renderer
bin/ # Platform binaries bundled into release builds
release/ # Build outputs
npm install
npm run devnpm run build:renderer
npm startRelease builds bundle yt-dlp and ffmpeg automatically in CI.
For local source builds, provide binaries in bin/ for your platform (yt-dlp and optional ffmpeg) or install them in your system $PATH, then clone and build:
git clone https://github.com/Shripad735/streamfetch.git
cd streamfetch
npm install
npm run buildPre-built Windows setup executables are published with every release. To build locally:
npm run build:winArtifact is created in release/:
StreamFetch-Setup-<version>.exe(installer)
npm run build:macnpm run build:linuxYou can download only a specific part of a single video:
- Fetch video metadata.
- In
Download Options, enableClip Range. - Enter
Start TimeandEnd Timeusingss,mm:ss, orhh:mm:ss. - Queue the job.
Notes:
- Clip range is available only for single videos (not playlist jobs).
ffmpegis required for clip extraction.
- GitHub workflow runs on
v*tags (for examplev1.2.0). - Workflow validates that tag version (
vX.Y.Z) matchespackage.jsonversion. - Tagged releases build artifacts for Windows, Linux, and macOS.
- macOS build is configured as non-blocking in CI (to avoid blocking release when mac runners are unavailable).
- Release notes are auto-generated from commits between the previous release tag and the current tag.
- Notes are grouped into
Features,Fixes, andOther Changesbased on commit message prefix.
Use these commit prefixes to classify notes:
feat: add app update notification bannerfix: handle age-restricted download retryhotfix: prevent renderer crash on startup
nodeIntegration: falsecontextIsolation: true- Strict preload bridge for allowed IPC channels only
- Download execution uses validated
spawnarguments
For source-based development, place these files in bin/ for your target platform:
yt-dlporyt-dlp.exe(required)ffmpegorffmpeg.exe(optional, enables merged best-quality outputs)
These binaries are not committed to git to keep repository size small.
Install from GitHub Releases for the easiest setup. Each tagged release includes:
- Windows installer (
Setup .exe) - macOS disk image (
.dmg) - Linux AppImage (
.AppImage)
MIT



