# StemRoller: a desktop app for splitting songs into vocals, drums, bass and other

> StemRoller wraps Facebook's Demucs model in an Electron and Svelte desktop app with YouTube search built in. It is a one-click stem splitter, and the trade-offs are in the packaging and the platform support.

**stemrollerapp/stemroller** — Isolate vocals, drums, bass, and other instrumental stems from any song

- Repository: https://github.com/stemrollerapp/stemroller
- Website: https://www.stemroller.com
- Stars: 3,174 · Forks: 159
- Language: Svelte
- License: NOASSERTION
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/stemrollerapp-stemroller

## What StemRoller does that a plain Demucs install does not

Demucs is a source separation model. Running it means having Python, the right packages, a downloaded checkpoint and a local audio file. StemRoller's contribution is everything around that: a search box that queries YouTube, a download step, a queue, and a Split button in the results list. The README describes the flow in one sentence: type the name or artist of a song, click Split, wait several minutes, then click Open next to the song to reach the stems. The output is four stems, vocals, drums, bass and other, matching the Demucs separation targets named in the project description.

The audience is narrow and clear. Someone who has a song title in mind and no local file. Someone who does not want to install PyTorch. Musicians pulling a drum loop out of a reference track, or a vocal for practice, fit the app's assumptions. Anyone with a large local library of lossless files and a batch pipeline is not the target, because the entry point is a YouTube search rather than a file picker.

The README calls StemRoller "the first free app which enables you to separate vocal and instrumental stems from any song with a single click." The claim about being first is not something a reader can check from the repository, and the word "any" is doing work that the YouTube dependency undercuts: a song that is not on YouTube, or is region-locked, is not reachable through the app's own search.

## The Electron, Svelte and Python split across the repository

The repository layout shows three cooperating pieces. The renderer-src directory holds the Svelte front end, built with Vite and styled with Tailwind, and it is what the user sees. The main-src directory holds the Electron main process, and package.json points "main" at main-src/main.js. The third piece is external: Demucs and yt-dlp are separate programs that the app drives.

That third piece explains the oddest script in package.json. There is a download-third-party-apps script, and the README tells Windows and macOS developers to run it after cloning. It fetches the external binaries rather than declaring them as npm dependencies, because they are not JavaScript. On Linux the README instead tells you to install ffmpeg through your package manager and demucs and yt-dlp globally with pip. The packaging therefore differs by platform in a way that the source tree does not hide.

The build scripts confirm the Electron target. build:mac and build:win both run the Svelte build first and then electron-builder with electron-builder.config.json. There is no build:linux script. The presence of win-extra-files, mac-extra-files and anyos-extra-files directories alongside electron-build-resources is consistent with per-platform packaging assets. The README is explicit that Linux is "Not officially supported," which is a statement about support, not about whether the code can run there.

## Installing StemRoller and splitting a first song

Most people should not build from source. The README says to head to the StemRoller website or the releases page and download the latest version, and that the bundle includes everything needed to split stems. The current release listed in the repository is 3.1.1, published on 2026-06-30.

Building from source is for development. The README gives these steps, and the npm i -D flag matches the fact that every dependency in package.json sits under devDependencies, since the app is packaged rather than published as a library:

```bash
git clone https://github.com/stemrollerapp/stemroller.git
cd stemroller
npm i -D
```

On Windows or macOS, the next step pulls in the external programs the app shells out to. Without it the app has no Demucs and no yt-dlp to call:

```bash
npm run download-third-party-apps
```

To run the app from source during development, the dev script sets NODE_ENV=dev and STEMROLLER_RUN_FROM_SOURCE=true before launching Vite and Electron together with concurrently. The README gives the short form:

```bash
npm run dev
```

For a production run from source, the README uses the Svelte build followed by the start script, which likewise sets NODE_ENV=production and STEMROLLER_RUN_FROM_SOURCE=true:

```bash
npm run build:svelte && npm run start
```

To produce an installer, the README names two commands, one per supported platform. Each runs the Svelte build and then electron-builder with the config file:

```bash
npm run build:win
npm run build:mac
```

Once the app is open, the first real use is the README's own loop: type a song name or artist into the search bar, click Split on the result, wait several minutes, then click Open. If you want a signal that the pipeline is wired correctly before committing to a long song, pick a short track first. The README does not document a progress indicator, a cancel button, or where stems are written on disk.

## Where StemRoller breaks, and what the README does not cover

The most common failure implied by the design is the network dependency. Search, download and separation are chained: if YouTube changes something that yt-dlp has not caught up with, or the machine is offline, the app cannot reach the audio at all. A local file workflow has no such step. The search phrases people use around this project include "Stemroller failed," "stemroller not working" and "stemroller keeps failing," which points at exactly this chain rather than at the Demucs model.

Separation itself is slow. The README says to "wait several minutes for splitting to complete," and that cost scales with song length and with the machine. There is no documented GPU requirement, no documented minimum RAM, and no documented way to choose a faster or slower Demucs configuration. The app decides.

Linux is the second boundary. The README labels it not officially supported and routes Linux users to manual global installs of ffmpeg, demucs and yt-dlp through pip, plus a note that installing libsox-dev can fix "Couldn't find appropriate backend" errors. That is a developer path, not a supported one.

The gaps in the README matter more than usual because the app is a black box around two moving external tools. There is no documented rollback procedure, no documented way to point the app at a local audio file instead of a YouTube result, and no documented output directory. The repository also reports the license as NOASSERTION while package.json declares "Unlicense" and the README offers a choice of Unlicense or MIT No Attribution. Those two statements do not obviously agree, and the LICENSE file is the thing to read rather than either summary.

## StemRoller against running Demucs yourself

The real alternative is Demucs directly. The difference is not the model, since StemRoller uses Demucs. The difference is the input and the interface. Demucs takes an audio file you already have and writes stems; StemRoller takes a search query and fetches the audio first. If your songs are already on disk, the direct route removes an entire failure surface, the YouTube search and download step, and gives you the batch and scripting options that a GUI does not.

What you give up is convenience. Demucs means Python, package management and a command line, and the README's Linux instructions show what that looks like even inside StemRoller: install demucs and yt-dlp globally with pip. If that sentence reads as a reasonable afternoon, you are probably better served by Demucs alone. If it reads as a reason not to bother, StemRoller is the wrapper that exists for you.

A second comparison point is the search phrase "stem roller vst." StemRoller is not a VST plugin. It is an Electron desktop application, and package.json names Electron, Svelte and Vite, not any audio plugin format. Anyone looking for a plugin to drop into a DAW track is looking at a different category of tool, and StemRoller's README does not claim otherwise.

## Maintenance, releases and what the license situation means

The repository is not archived, and the last push was on 2026-06-30, the same date as the 3.1.1 release. The previous release, 3.1.0, is dated 2026-02-25. That is a cadence of roughly every four months across those two versions, which is a fact about the release history rather than a promise about the future. For an app that depends on yt-dlp, release cadence is the maintenance signal that matters, because a stale yt-dlp is the most likely reason the search step stops working.

Upgrade cost for users is low: the README points at the releases page, and the bundle is self-contained. Upgrade cost for anyone building from source is higher, because the third-party binaries are fetched by download-third-party-apps.js rather than pinned in package.json. If that script pulls whatever is current, a rebuild can change the Demucs or yt-dlp version under you.

On licensing, the repository metadata says NOASSERTION, package.json says "Unlicense," and the README says your choice of Public Domain (Unlicense) or MIT No Attribution, directing readers to the LICENSE file. Three surfaces, three phrasings. The practical reading is that the project intends a permissive, attribution-free license, but the authoritative document is the LICENSE file, and anyone embedding StemRoller in a commercial product should read it rather than a summary. This is a description of what the files say, not legal advice.

## Conclusion

StemRoller suits people who want stems from a song without touching a command line, and who are on Windows or macOS. It is the wrong tool if you need a Linux build (the README says Linux is not officially supported), if you want to split a file you already own rather than search YouTube, or if you need a VST plugin inside a DAW. Before relying on it, verify that your machine can run the bundled Demucs and yt-dlp, that a test song splits end to end, and check the LICENSE file yourself, since the repository metadata reports NOASSERTION while package.json declares Unlicense.

## FAQ

### Is StemRoller free?

Yes. The README describes it as a free app, and the downloads are on the StemRoller website and the GitHub releases page. The repository is licensed under your choice of Public Domain (Unlicense) or MIT No Attribution, according to the README.

### What is StemRoller and what does it do?

It is a desktop app that separates a song into vocal, drum, bass and other instrumental stems. It uses Facebook's Demucs algorithm and integrates YouTube search results, so you type a song name, click Split, and later click Open to reach the stems.

### Is StemRoller safe?

The README does not make security claims, and nothing in the repository layout addresses this directly. What can be said is that the app drives external programs, Demucs and yt-dlp, which on Windows and macOS are fetched by the download-third-party-apps script. The README does not document what that script downloads or how it verifies it.

### Is StemRoller legit?

It is a real open source repository with a homepage, a releases page and a Discord server linked from the README. It is not archived, and the last push was on 2026-06-30. Whether it is right for you depends on your platform, since the README lists Linux as not officially supported.

### Is StemRoller good?

The README does not offer quality claims beyond calling Demucs state-of-the-art. The practical question is speed and reliability: the README says splitting takes several minutes, and the app depends on YouTube search and download working, which is where the reported failures tend to sit.

### Is StemRoller a VST plugin?

No. StemRoller is an Electron desktop application built with Svelte and Vite, and package.json lists no audio plugin format. The README describes a standalone app with a search bar and a Split button, not a plugin you load inside a DAW.

## Sources

- [Issues](https://github.com/stemrollerapp/stemroller/issues)
- [Project website](https://www.stemroller.com)
- [README](https://github.com/stemrollerapp/stemroller/blob/main/README.md)
- [Releases](https://github.com/stemrollerapp/stemroller/releases)
- [stemrollerapp/stemroller on GitHub](https://github.com/stemrollerapp/stemroller)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/stemrollerapp-stemroller
