A cross-platform Electron Desktop App to stream and download any Movie, TV Series or Anime in the World. Zero Ads and Tracking*
- π¦ Streaming: Stream any Movie, Anime or TV Series from around the World.
- π₯ Downloading: Download anything you want to watch.
- π Subtitles: Download and manage Subtitles.
- βοΈ Customizability: Customize the Interface and Features to your unique needs.
- π Library: Track what you watched, save stuff you want to watch and manage your Downloads.
- β¨ Trending: Discover new things to Watch every Day.
- π‘οΈ Privacy: Completely Ads and Tracker free, forever.
- β‘ Speed: Stream faster than any Browser can, download with multithreading.
The Application mainly gets Video Streams from VidSrc (you can also Stream from videasy and vidking).
It fetches Information for Images, Info Texts, Search and Homepage from tmdb.
You can download those Video Streams because the Program sources Links to their .m3u8 Playlist Files (similar to this Browser Extension).
Once you click 'Download' these Links are used to download the Full Movie/TV Episode using this Program. You can then watch them In-App or take the Files on any Storage Medium you want.
You can also watch Anime, the App checks if a Movie or Series is an Anime and then sources its Metadata from AniList instead of tmdb.
Media Files for Animes are scraped from AllManga.to (i stole this mechanic from ani-cli). The App directly gets .mp4 Files and doesnt evem show you the AllManga website, you can also download these Files, just like any other Content.
- Node.js (>=22.12.0) installed (only if you aren't using prebuilt Binaries)
- A free TMDB API Read Access Token (Guide on how to get one)
- For downloading, this Program somewhere on your PC and ffmpeg installed
On first launch you'll be prompted to enter your TMDB API key. (Guide on how to get one) It's saved locally, you only need to do this once.
Download the latest .deb .pacman or .AppImage from the Releases page.
# .deb
sudo dpkg -i streambert_*.deb
# Arch Linux (.pacman)
sudo pacman -U streambert-*.pacman
# .AppImage (you can also do it with Gearlever)
chmod +x Streambert-x64.AppImage && ./Streambert-x64.AppImageDownload the latest Streambert Setup *.exe from the Releases page and run it.
Download the latest Streambert-*-universal.dmg from the Releases page, open it and drag Streambert to your Applications folder.
- Install dependencies:
npm install- Build
npm run dist:win or
npm run dist:linux or (for Arch Linux)
npm run dist:archor (for an AppImage only)
npm run dist:appimageor (for a .deb only)
npm run dist:debor (for a .rpm only)
npm run dist:rpmor (for macOS)
npm run dist:macor (build all platforms at once)
npm run distRun the app in development mode with live reload β no manual rebuilds:
npm run devThis starts two processes together:
- Vite dev server on
http://127.0.0.1:5173β edits to React components/pages/styles hot-reload instantly (component state is preserved). - Electron β auto-launched as soon as the dev server is up, loading from the dev server instead of the built
dist/bundle.
Changes to main-process files (index.js, preload.js, popout-preload.js, src/ipc/) automatically restart Electron via electronmon.
If electronmon ever misbehaves (it is only officially tested up to Electron 23, this project uses Electron 40), use the nodemon-based fallback β same workflow, different watcher:
npm run dev:fallbackClosing the app window stops the whole dev session (both processes).
Tip
If a dev session was killed abruptly (e.g. closed terminal), a stale electronmon/electron process can linger and block new launches via Electron's single-instance lock. If a new npm run dev opens a black window or exits instantly, close leftover electron.exe / electronmon processes (Task Manager) and run it again.
Useful flags:
- Auto-open DevTools on launch:
cross-env ELECTRON_DEVTOOLS=1 npm run dev
The app itself is served fine (you can verify by opening http://127.0.0.1:5173 in Chrome β the black screen is an Electron rendering issue, not the app). Two things to try:
- Disable GPU acceleration β some GPUs/drivers show a black main window in dev:
(The Electron window will also log
cross-env ELECTRON_DISABLE_GPU=1 npm run dev
[dev] GPU acceleration disabledand the terminal will show[dev] loading http://127.0.0.1:5173 β¦.) - First-load race β on a cold start Vite pre-bundles dependencies, which can make the first load fail. Electron now automatically retries the dev-server load every second for ~30s, so just wait a few seconds.
If the terminal shows [boot] app ready and [boot] renderer loaded, the page did load β the black screen is a GPU/compositor issue and ELECTRON_DISABLE_GPU=1 should fix it.
Production-style previews (built bundle, no packaging) still work as before:
npm startImportant
If you are building/installing on Arch Linux and encounter errors, you may need these libraries:
- libcrypt.so.1 error:
sudo pacman -S libxcrypt-compat - http-parser dependency error:
yay -S http-parser(from AUR)
This project is open-source software licensed under the GNU General Public License v3.0 (GPL-3.0).
Forks may be created but they MUST stay open-sourced.
Everyone is welcome to contribute to this project. Before contributing please make sure to read the Contributing Guidelines and act accordingly.
Streambert itself does not collect ANY data. There is no centralized service which the app relies on. However, the streaming sources and github (for downloading updates in-app) may still collect your data.
Streambert has built-in tracker/- and adblocking, but obviously that is not perfect.
IMPORTANT: This application is for educational and personal use only.
- Streambert does not host, store, or distribute any copyrighted content
- All content is sourced from third-party providers and websites
- Users are solely responsible for ensuring they have legal rights to access any content
- The developer does not endorse or encourage copyright infringement
- Users must comply with all applicable laws in their jurisdiction
- Any legal issues should be directed to the actual content providers
- This app functions as a search engine aggregator only
- No copyrighted material is stored on my side
This application is provided "as is" for educational purposes. The developer:
- Does not claim ownership of any content
- Does not profit from copyrighted material in any way
- Does not control third-party content providers
- Encourages users to support content creators through legal means
Project Structure
Project Root
βββ index.html
βββ main.js
βββ package.json
βββ preload.js
βββ vite.config.js
βββ LICENSE
βββ README.md
βββ public
β βββ icon.png
β βββ installer-sidebar.bmp
β βββ logo.svg
βββ screenshots
β βββ adblock.png
β βββ anime.png
β βββ api-settings_tmdb.png
β βββ application_tmdb.png
β βββ download.png
β βββ icon.png
β βββ movie.png
β βββ personal-use_tmdb.png
β βββ series.png
β βββ setup.png
β βββ signup_tmdb.png
β βββ subs.png
β βββ token_tmdb.png
β βββ trending.png
βββ src
βββ App.jsx
βββ main.jsx
βββ components
β βββ BlockedStatsModal.jsx
β βββ CloseConfirmModal.jsx
β βββ DownloadModal.jsx
β βββ ErrorBoundary.jsx
β βββ Icons.jsx
β βββ KeyboardShortcutsModal.jsx
β βββ MediaCard.jsx
β βββ SearchModal.jsx
β βββ SetupScreen.jsx
β βββ Sidebar.jsx
β βββ SubtitleDownloaderModal.jsx
β βββ TrailerModal.jsx
β βββ TrendingCarousel.jsx
β βββ UpdateModal.jsx
β βββ WindowTitlebar.jsx
βββ ipc
β βββ allmanga.js
β βββ blockStats.js
β βββ downloads.js
β βββ player.js
β βββ storage.js
β βββ subtitles.js
βββ pages
β βββ DownloadsPage.jsx
β βββ HomePage.jsx
β βββ LibraryPage.jsx
β βββ MoviePage.jsx
β βββ SettingsPage.jsx
β βββ TVPage.jsx
βββ styles
β βββ global.css
β βββ fonts
β βββ bebas-neue-regular.woff2
β βββ dm-sans-300.woff2
β βββ dm-sans-500.woff2
β βββ dm-sans-600.woff2
β βββ dm-sans-regular.woff2
βββ utils
βββ ageRating.js
βββ aniSkip.js
βββ api.js
βββ appearance.js
βββ backup.js
βββ episodeMappings.js
βββ homeLayout.js
βββ storage.js
βββ subtitles.js
βββ updates.js
βββ useBlockedStats.js
βββ useRatings.js








