Drop successful an MP3, WAV, FLAC, OGG/Opus, MP4, aliases M4A file, aliases paste a YouTube URL, and StemDeck splits the audio into up to six stems (vocals, drums, bass, guitar, piano, other). Play them backmost successful a DAW-style multitrack mixer: mute, solo, equilibrium levels, zoom the waveform, loop a region, and export individual stems aliases a civilization mix. Everything runs locally connected your ain machine.
What is this? StemDeck is simply a stem separation tool, not a downloader. Its main occupation is processing audio you already own: resistance an MP3, WAV, FLAC, OGG, aliases M4A onto the import barroom and go. YouTube support is simply a convenience for contented you person the correct to process. StemDeck does not store, cache, aliases redistribute immoderate downloaded content. Everything happens locally and thing leaves your machine.
StemDeck is simply a free, unfastened replacement to unreality stem-splitters for illustration Moises and LALAL.AI: nary account, nary quota, nary uploads, nary subscription. If you want stems for individual study and for illustration to support things section and free, StemDeck has you covered. If you request the polish, a mobile app, aliases deeper musician tooling, the commercialized products are a amended fit.

StemDeck is free and does not judge immoderate money, sponsorship, aliases funding from anyone listed below. I stock these makers and artists and communities purely for the joyousness of pointing you toward awesome group doing beautiful work. Go meet them ❤️
| Analog4Lyfe | All-analog euphony gear, nary integer shortcuts | @analog4lyfe |
| r/bass | My beloved bass organization connected reddit | r/Bass |
| Beltr | Turns the songs you already ain into karaoke gold, correct connected your ain machine, nary subscription, nary cloud, conscionable you and the mic | beltr.app |
| Dlima Guitars | Custom guitars and basses, built 1 astatine a time | @dlimaguitars |
| Empress Effects | Boutique effects pedals for reside chasers who don't settle | empresseffects.com |
| Joao Gaspar | Producer and movie scorer, besides plays arsenic a touring/session musician | @jay_glaspar |
| Kris Luthier | Hand-repairs and restores instruments successful Lisbon, 1 observant hole astatine a time | @krisluthier |
| Lisbon Guitar Works | Guitars built by manus successful Lisbon | dlimaguitars.com |
| More Notes Less Talk | Instruments and cogwheel pinch personality, recorded earthy to tape. No hype, nary gatekeeping. | @morenoteslesstalk |
| Seratone | Turns immoderate TV into a studio-grade karaoke stage | seratone.audio |
| slashCAM | German-language camera and video tech: hands-on tests, manufacture news, and the post-production specifications astir reviews skip | @slashcam.de |
| Thomann | One of Europe's largest euphony cogwheel retailers, practically everything a musician could need | @thomann.music |
6-stem separation via Demucs htdemucs_6s, pinch auto-detection of the champion Torch instrumentality (CUDA connected NVIDIA, MPS connected Apple Silicon, CPU fallback).
YouTube and section record import. Paste a YouTube URL aliases driblet an MP3, WAV, FLAC, OGG/Opus, MP4, aliases M4A straight onto the import bar.
DAW-style waveform editor pinch min/max sample rendering crossed each stems, shared normalization, zoom in/out/Fit, loop resistance connected the ruler, golden playhead overlay, and stem-aligned lanes.
Stem subset extraction. Click stem chips to take which stems to keep. Clicking from "all selected" snaps to "only this one"; consequent clicks adhd aliases remove.
"Original" backing track. When you prime a subset, a 7th lane contains the complement (full opus minus selected stems), cleanable for A/B reference without doubling.
Downloadable selected mix. A azygous mix.wav of conscionable your selected stems, summed via ffmpeg amix.
Per-stem mixer pinch measurement fader, mute, solo, and "monitor" (solo-only) per stem. State syncs betwixt the preview mixer and the stems sidebar.
Live VU meters per stem. Post-gain RMS via Web Audio analysers pinch highest clasp and slow falloff.
Song analysis including BPM (librosa hit tracker), key, scale, and assurance (Albrecht-Shanahan profiles), integrated LUFS (BS.1770), and sample highest successful dBFS.
Cancellable jobs. Cancel mid-pipeline and the runner terminates the progressive subprocess immediately, deletes the partial occupation dir, and returns to ready.
Library panel pinch folder-based way organisation, drag-and-drop, search, and trash.
StemDeck is not trying to compete pinch commercialized stem-separation products. It covers the halfway usage lawsuit good and stops there. This array exists truthful you tin make an informed prime alternatively than observe the gaps aft the fact.
| Price | Free, forever | Freemium; credits aliases subscription required for regular use |
| Hosting | Runs wholly connected your machine | Cloud; audio must beryllium uploaded to their servers |
| Account / login | None | Required |
| Internet required | Only for YouTube download and first exemplary fetch (~170 MB, cached after) | Always; nary offline use |
| Privacy | Audio ne'er leaves your machine | Audio is uploaded and processed connected third-party servers |
| Data retention | You power it; delete anytime | Governed by their privateness argumentation and retention period |
| Stem model | Demucs htdemucs_6s (open source, Meta AI) | Proprietary models, regularly updated, mostly higher quality |
| Stem count | 6 (vocals, drums, bass, guitar, piano, other) | Up to 10 depending connected work and plan |
| Input formats | YouTube URL, MP3, WAV, FLAC, OGG/Opus, MP4, M4A | MP3, WAV, FLAC, M4A, and much depending connected service |
| Processing speed | Depends connected your hardware; accelerated pinch a GPU, slow connected CPU only | Fast sloppy of your hardware (runs connected their servers) |
| Batch processing | One occupation astatine a time | Yes, connected paid plans |
| Mobile app | No | iOS and Android |
| Extra features | No (no transportation shift, chord detection, lyrics, click track, BPM tap) | Yes, varies by product |
| Polish | Functional, hobby-grade UI | Polished, production-grade apps |
| Source code | Open source, forkable, self-hostable | Closed source |
If you request speed, quality, mobile access, aliases the other musician tooling, the commercialized products are worthy the money. If you want stems for individual study, for illustration to support audio private, aliases conscionable want thing that runs locally pinch nary strings attached, StemDeck is enough.
Pre-built installers and zips are attached to each GitHub Release.
macOS
| StemDeck-macOS-arm64.dmg | Apple Silicon (MPS) | M1 and later |
| StemDeck-macOS-x64.dmg | CPU only | Intel |
Open the DMG, resistance StemDeck to Applications, and motorboat it. On first motorboat the setup surface downloads the Python runtime (~500 MB), FFmpeg, and the Demucs exemplary (~170 MB). Subsequent launches skip setup and commencement successful seconds. No Python aliases strategy limitations required.
macOS whitethorn show a Gatekeeper punctual connected first unfastened — right-click the app and take Open to bypass it.
Windows
| StemDeck-Windows-x64.zip | CPU only | ~700 MB |
| StemDeck-Windows-x64.NVIDIA.zip | NVIDIA CUDA | ~1.6 GB |
Extract the zip anywhere, tally StemDeck.exe. FFmpeg, the Demucs model, config, and logs unrecorded successful a data/ files adjacent to StemDeck.exe, not successful AppData; move aliases transcript the full extracted files anyplace and it keeps working. On first motorboat the app verifies the bundled Python runtime and downloads FFmpeg and the Demucs exemplary (~170 MB) into that folder. Subsequent launches skip this and commencement successful seconds. Everything is self-contained; nary Python aliases strategy limitations required. Your job/library information stays successful its accustomed location (~/Documents/StemDeck by default) and is relocatable anytime from Settings → StemData location.
StemDeck is built connected Python 3.12 managed via uv, pinch a FastAPI backend serving REST and Server-Sent Events. Stem separation uses Demucs (htdemucs_6s), Meta AI's open-source 6-stem neural network. The optional on-demand lead/backing vocal divided runs the UVR-MDX-NET Karaoke 2 exemplary via audio-separator, trained arsenic portion of the Ultimate Vocal Remover task by Anjok07. YouTube audio is fetched via yt-dlp; transcoding and mixing usage FFmpeg. BPM discovery and cardinal study tally connected librosa; loudness measurement uses pyloudnorm (ITU-R BS.1770). The macOS and Windows desktop shells are Tauri v2 (Rust/WKWebView connected macOS, Rust/WebView2 connected Windows). The frontend is vanilla JS pinch the Web Audio API, nary model and nary build step; waveforms are rendered connected <canvas> utilizing min/max sample rendering.
Thanks to the creators and maintainers of each the open-source libraries that make StemDeck possible.
Requires Rust, Node.js, and Python 3.12. Builds a self-contained .app that downloads its ain runtime connected first launch.
The .app lands astatine desktop/src-tauri/target/<target>/release/bundle/macos/StemDeck.app. The DMG lands astatine .build/macos-dist/StemDeck-macOS-<arch>.dmg.
To tally a caller build straight without the DMG:
If macOS blocks the app pinch a Gatekeeper prompt, run:
Note: To trial a cleanable first-launch during development, you tin swipe erstwhile app information first: rm -rf ~/Library/Application\ Support/StemDeck. Don't do this connected a existent install.
Web Server (macOS / Linux / Windows pinch Python 3.12+)
Python 3.12 aliases newer, ffmpeg connected your PATH, and uv. Around 170 MB of free disk for the Demucs model, which downloads automatically connected first run.
Open http://localhost:8000.
setup uses Homebrew connected macOS and apt-get connected Debian/Ubuntu. For different Linux distros, instal ffmpeg and uv manually, past tally uv sync followed by ./run.sh start.
Install prerequisites:
- uv — winget instal astral-sh.uv
- ffmpeg — winget instal Gyan.FFmpeg (or Chocolatey: choco instal ffmpeg)
Open http://localhost:8000.
run.sh is macOS/Linux only. On Windows usage the PowerShell commands above, aliases tally wrong WSL.
NVIDIA GPU (CUDA): instal the CUDA-enabled torch build earlier starting:
--timeout-graceful-shutdown bounds really agelong uvicorn waits for open connections erstwhile you extremity it. StemDeck keeps a long-lived SSE watercourse open for the import queue while a browser tab is connected the app, truthful without it Ctrl-C waits for that watercourse alternatively of exiting.
Stems onshore successful ./jobs/ connected the host. Demucs weights are cached successful a named measurement truthful they don't re-download connected rebuild. Note: nary GPU passthrough connected macOS Docker.
A prebuilt image is published to GHCR. Tags: separator (rolling, rebuilt connected each merge to main), latest (newest unchangeable release), and X.Y.Z (pinned to a release).
On a Linux big pinch an NVIDIA GPU (driver + NVIDIA Container Toolkit installed), adhd --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all and StemDeck auto-detects CUDA. The image already bundles CUDA-enabled torch, truthful nary abstracted CUDA instal is needed.
StemDeck is disposable successful Unraid Community Applications: unfastened Apps, hunt "StemDeck", and install. Map the 2 volumes to persistent appdata paths:
- /app/jobs -> /mnt/user/appdata/stemdeck/jobs (library + stems)
- /cache -> /mnt/user/appdata/stemdeck/cache (model weights)
The room is persistent by default (STEMDECK_PERSIST_LIBRARY=1), truthful tracks are ne'er auto-deleted. For GPU acceleration, instal the Nvidia Driver plugin, past group the container's Extra Parameters to --runtime=nvidia (the NVIDIA_VISIBLE_DEVICES and NVIDIA_DRIVER_CAPABILITIES variables are already successful the template). CPU-only useful pinch nary other configuration.
- On the import bar, click stem chips to take which stems to extract (defaults to each 6).
- Paste a YouTube URL or driblet an audio record (MP3, WAV, FLAC, OGG, MP4, M4A), past click Process.
- Wait done Uploading... / Downloading... → Analyzing... → Separating... → Mixing tracks....
- When done, the workplace dashboard appears. If you picked a subset, the first lane is Original (full opus minus your selection); the remainder are your isolated stems.
- Mix: Play/Pause/Stop controls the maestro transport. M mutes a stem, S solos it (additive; aggregate solos enactment audible), Monitor solos only that stem and clears others. The measurement fader moves 1:1 pinch drag; double-click resets to 0 dB; Shift+wheel gives coarse accommodation and plain instrumentality gives fine. The Reset, Mute, and Solo toolbar buttons enactment connected each stems astatine once.
- Drag connected the ruler to specify a loop region; click Loop to enable. Use + / - / Fit aliases Ctrl/Cmd+wheel to zoom.
- Download Mix successful the footer gives you a WAV of your selected stems summed together.
Keyboard shortcuts: Space play/pause · [ activity -5s · ] activity +5s · L loop · I loop successful · O loop out
| STEMDECK_DEMUCS_DEVICE | auto | Force Torch device: cuda, mps, aliases cpu. |
| STEMDECK_DEMUCS_MODEL | htdemucs_6s | Demucs exemplary name. |
| STEMDECK_JOBS_DIR | ./jobs | Where occupation directories land. |
| STEMDECK_DATA_DIR | (none) | Portable mode root; sets each sub-dirs beneath to unrecorded wrong it. |
| STEMDECK_CACHE_DIR | <data>/cache | Torch exemplary cache directory. |
| STEMDECK_DOWNLOADS_DIR | <data>/downloads | yt-dlp download scratch space. |
| STEMDECK_MODELS_DIR | <data>/models | Demucs exemplary weights directory. |
| STEMDECK_LOGS_DIR | <data>/logs | Log record output directory. |
| STEMDECK_FFMPEG_DIR | (none) | Directory containing a bundled ffmpeg binary. |
| STEMDECK_FFMPEG | ffmpeg | Path to the ffmpeg executable. |
| STEMDECK_FFPROBE | ffprobe | Path to the ffprobe executable. |
| STEMDECK_MAX_DURATION_SEC | 1200 | Reject audio longer than this (seconds). |
| STEMDECK_JOB_TTL_SECONDS | 86400 | How agelong to support occupation dirs connected disk. |
| STEMDECK_MAX_PENDING_JOBS | 3 | Max queued jobs earlier returning 503. |
| STEMDECK_TIMEOUT_FFMPEG | 300 | ffmpeg subprocess timeout (seconds). |
| STEMDECK_TIMEOUT_ANALYZE | 120 | Audio study timeout (seconds). |
| STEMDECK_TIMEOUT_DEMUCS_STALL | 1800 | Kill Demucs if nary output for this galore seconds. |
run.sh besides reads: HOST (default 127.0.0.1), PORT (default 8765), RELOAD=1 (enable uvicorn auto-reload for development), FOREGROUND=1 (run successful foreground alternatively of backgrounding).
| GET | /api/health | Server wellness and type info |
| POST | /api/jobs | JSON {url, stems?} aliases multipart record + stems → {job_id} |
| GET | /api/jobs | List completed (library) jobs |
| GET | /api/jobs/{id} | Job authorities snapshot |
| GET | /api/jobs/{id}/events | SSE watercourse of occupation state |
| POST | /api/jobs/{id}/cancel | Terminate progressive subprocess and cancel job |
| PATCH | /api/jobs/{id}/sections | Save waveform conception markers for a job |
| GET | /api/jobs/{id}/stems/{name}.wav | Stream a azygous stem WAV file |
| GET | /api/jobs/{id}/stems/{name}.mp3 | Transcode and watercourse a stem arsenic MP3 |
| GET | /api/jobs/{id}/video.mp4 | Mux the existent operation pinch the root video (MP4 upload aliases YouTube) into an MP4 |
| DELETE | /api/jobs/{id} | Remove occupation dir from disk (terminal jobs only) |
ffmpeg: bid not found: instal ffmpeg and restart pinch ./run.sh restart.
WARNING: [youtube] No supported JavaScript runtime: instal deno (brew instal deno connected macOS) and restart. Downloads still activity without it but whitethorn prime suboptimal formats.
First separation is very slow: Demucs downloads htdemucs_6s weights (~170 MB) connected first run; cached afterwards.
Demucs runs connected CPU only: cheque the startup log for device=mps aliases device=cuda. If you spot cpu, your torch instal whitethorn beryllium CPU-only.
Page reloaded mid-job: the occupation keeps moving server-side. Wait for it to finish, past resubmit.
./run.sh: Permission denied: tally chmod +x run.sh.
Job authorities is in-memory. Restart the server and the occupation database resets, but files persist connected disk. Old dirs are swept automatically (TTL 24 h, configurable).
StemDeck is simply a section audio stem separation instrumentality intended for individual study, research, and experimentation. It is not a downloading service. It does not store, cache, aliases redistribute immoderate audio content. All processing runs connected the user's ain instrumentality and nary audio is transmitted anywhere.
YouTube URL support is provided via yt-dlp arsenic a convenience. Automated downloading whitethorn break YouTube's Terms of Service. You, the user, are solely responsible for ensuring you person the correct to process immoderate audio you submit, complying pinch the position of work of immoderate tract you download from, and respecting the copyright of the worldly you activity with.
You are besides responsible for pursuing the licenses of the underlying devices this task depends connected (yt-dlp, Demucs, FFmpeg, PyTorch, and others listed successful pyproject.toml).
The author(s) of StemDeck supply this package "as is", without warranty of immoderate kind, and judge nary work aliases liability for really it is used.
These are for improvement and testing. Release builds only admit the variables marked "release".
| STEMDECK_DATA_DIR | all | release | Override the personification information directory (default: platform-standard location) |
| STEMDECK_ROOT | all | release | Override the app guidelines directory (default: derived from executable path) |
| STEMDECK_PYTHON | all | debug builds only | Override the Python executable path |
| STEMDECK_FFMPEG_URL | Windows, macOS | release | Override the FFmpeg download URL |
| STEMDECK_FFPROBE_URL | macOS | release | Override the ffprobe download URL |
Issues, characteristic suggestions, and propulsion requests are welcome. See unfastened issues for what's planned.
English (US) ·
Indonesian (ID) ·