RSPlayer is an open-source, headless music server primarily for Linux, with experimental macOS builds — run it on your NAS, home server, Raspberry Pi, or any x86_64/ARM machine and control it from any browser. A native desktop app (Linux x86_64, macOS) is also available.
It runs as a systemd service and exposes a responsive web UI, making it a great fit for machines without a monitor or keyboard — but equally at home on a dedicated desktop audio PC. Hardware and DIY integrations (GPIO DAC control, custom firmware) are fully optional.
Under the hood RSPlayer uses Symphonia for audio decoding and Cpal for output, with a Rust-native audio pipeline for low-latency, high-performance playback.
Online demo -> https://rsplayer.dlj.freemyip.com/
Approximate comparison as of early 2026. Features change frequently.
| Feature | RSPlayer | Volumio | Moode Audio | MPD |
|---|---|---|---|---|
| Language | Rust | Node.js | PHP/Bash | C |
| Runs on x86_64 / NAS / server | ✓ | ✓ | Pi-only | ✓ |
| Parametric EQ / DSP | ✓ built-in | paid tier | ✓ (CamillaDSP) | via plugins |
| Multi-room | planned | paid tier | ✓ | via plugins |
| DSD playback | ✓ | ✓ | ✓ | ✓ |
| Web UI | ✓ | ✓ | ✓ | 3rd party |
| Local browser playback | ✓ | — | — | — |
| Loudness normalization (EBU R128) | ✓ | — | — | — |
| Synchronized lyrics | ✓ | — | — | — |
| Docker | ✓ | ✓ | — | ✓ |
| RISC-V 64 | ✓ | — | — | — |
| Home Assistant integration | ✓ | ✓ | — | ✓ |
| DIY hardware integration | optional | — | — | — |
| License | MIT | GPL | GPL | GPL |
- Low Latency Output: Direct output to ALSA or PipeWire minimizes latency.
- Local Browser Playback: Stream audio directly to your web browser for local playback.
- Automatic Resampling: High-quality FFT-based resampling (via rubato) when the output device doesn't support the source sample rate — no configuration needed. Automatically probes fallback rates for ALSA drivers that misreport their supported range.
- Fixed Output Sample Rate: Optionally lock the output to a specific sample rate, overriding automatic detection.
- Multiple Music Sources: Configure multiple local directories and network mounts as music sources, all scanned together.
- Network Storage Management: Discover, mount, and manage SMB/CIFS and NFS shares directly from the settings page.
- Adjustable Playback Thread Priority: Customize the priority of the playback thread up to a real-time rating of 99 via the settings page.
- Dedicated CPU Core for Playback: By default, the playback thread is pinned to a single CPU core for optimized performance.
- Web UI Remote Control: Manage your playback remotely with an intuitive web interface.
- Flexible Volume Control: Choose ALSA mixer, PipeWire, or software gain volume control, with hardware control also supported via RSPlayer firmware integration.
- Written in Rust: Enjoy the benefits of minimal dependencies and high performance, thanks to the Rust native implementation.
- Comprehensive Music Library Management: Scan, search, and browse your music library and online radio stations with ease.
- Dynamic Playlists: Automatically create dynamic playlists for personalized listening experiences.
- DSP Integration: Advanced Digital Signal Processing with parametric EQ, filters, and presets.
- Web UI VU Meter: Real-time audio visualization in the web interface.
- Extended Hardware Control: Support for seek and power management via firmware interactions.
- Web UI Themes: Support for customizable themes and dark/light modes (10+ built-in themes).
- Synchronized Lyrics: Real-time synchronized lyrics support via LRCLIB integration.
- Playlists by genre, year: Browse and create playlists based on genre or year.
- Loudness Normalization: Per-song EBU R128 loudness normalization, toggleable from the settings page. Analysis runs automatically in the background while playback is stopped and results are stored permanently.
- Library Statistics: Dedicated statistics page showing song/album/artist counts, total duration, play history, top genres, albums by decade, and loudness analysis progress.
- Priority Queue: Add songs, albums, artists, or directories to play next without disrupting the queue order.
- Drag-and-Drop Queue Reordering: Reorder queue items by dragging them directly in the queue view.
- Automatic Cache Busting: Browser caches are automatically invalidated on every release — no stale UI after upgrading.
- Volume Persistence: Volume level is saved on change and restored on restart, defaulting to 0 on first use to prevent hardware-max shock.
- Global Keyboard Shortcuts: Full keyboard control for playback, navigation, and search (Space, arrows, M, L, Y, S, /, ?, 1-4, F/A/P/R/T).
- Monkey's Audio (APE) Support: Play lossless APE files with full metadata support.
- Breadcrumb Navigation: Clear navigation context on all library pages.
- Skeleton Loading & Empty States: Visual feedback during loading and helpful empty state screens.
- DSD passthrough bypass: DSP (parametric EQ, filters), loudness normalization, and resampling are all bypassed for DSD files (
.dsf,.dff). DSD bitstreams are passed directly to the DAC without any signal processing. - Radio streams: Loudness normalization is not applied to internet radio streams — it requires pre-scanned file metadata. Seeking is not supported for streams.
- Supported formats: Supported formats include FLAC, MP3, AAC, OGG Vorbis, WAV, AIFF, CAF, DSD (DSF/DFF), and APE (Monkey's Audio).
- Local Browser Playback: In this mode the browser's native audio engine plays files directly. DSP, loudness normalization, resampling, VU metering, and DSD playback are all unavailable — format support is limited to what the browser itself can decode.
- Expanded Audio Codec Support: Compatibility with a wider range of audio codecs.
- Intelligent Dynamic Playlists: Advanced dynamic playlists that adapt based on user likes or playback counts for a personalized listening experience.
- Windows Compatibility: Development of a Windows build to extend platform support.
- Music Recommendations: Suggest similar tracks or artists based on listening history or current playback.
- Generate missing album cover image: Auto-generate album art using album name.
- MPD protocol support: Compatibility with MPD clients.
- Subsonic protocol support: Compatibility with Subsonic clients.
- Multi-room playback: Synchronized playback across multiple devices.
- MPRIS D-Bus integration: Native Linux desktop media key and player integration.
- Community plugin framework: Extensible architecture for third-party plugins.
- Improve playlists management create/modify/delete items and playlists: Items can be added/removed to/from playlist from everywhere.
- New version detection and upgrade from the app: Detect a new version and provide upgrade button
- Problem(bug) report with diagnostic: Report problem by user
- Scheduled music library scans: Enable user to define automatic library scan interval (or cron)
RSPlayer offers two build variants:
- Server — The headless music server daemon (systemd service). Available for all supported architectures.
- Desktop — A standalone native GUI app (built with Tauri). Available for x86_64 Linux and macOS only.
| Architecture | Typical Devices | Deb | RPM | Arch | Docker | Nix | Desktop |
|---|---|---|---|---|---|---|---|
| x86_64 | Intel/AMD PCs, servers, NAS | ✓ | ✓ | ✓ | ✓ | ✓ | deb, rpm, tgz |
| ARM64 (aarch64) | RPi 4, RPi 5, ARMv8 boards | ✓ | ✓ | ✓ | — | ✓ | — |
| ARMv7 | RPi 2, RPi 3, 32-bit RPi 4 | ✓ | ✓ | ✓ | — | ✓ | — |
| ARMv6 | RPi Zero, RPi Zero W, RPi 1 | ✓ | ✓ | ✓ | — | ✓ | — |
| RISC-V 64 | RISC-V 64-bit boards | ✓ | ✓ | ✓ | — | ✓ | — |
All Linux packages include a systemd service for automatic startup. See the releases page for per-architecture filename suffixes.
| Architecture | Server | Desktop |
|---|---|---|
Apple Silicon (aarch64-apple-darwin) |
raw binary | DMG |
Intel (x86_64-apple-darwin) |
raw binary | DMG |
Server and desktop builds for aarch64-apple-darwin and x86_64-apple-darwin are supported via cross-compilation from Linux. Audio output uses CoreAudio via cpal; the web UI works as on Linux.
- Server binary: Download
rsplayer_darwin_arm64orrsplayer_darwin_amd64from the releases page. - Desktop app: Download the
.dmgfrom the releases page for a native windowed experience.
Current platform limitations on macOS:
- Network share mounting/unmounting from RSPlayer UI is unavailable.
- ALSA/PipeWire volume backends are unavailable (use software volume mode).
- IR remote, system poweroff/reboot, and firmware USB integration are unavailable.
To build from Linux:
TARGET=aarch64-apple-darwin cargo make build_release
# or
TARGET=x86_64-apple-darwin cargo make build_releaseThe resulting binary is at target/cross/<target>/release/rsplayer when local cross target-dir override is active.
To install RSPlayer, execute the following script (requires curl):
# Headless server
bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/master/install.sh)
# Desktop app
bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/master/install_desktop.sh)install.sh detects your distribution and architecture, then installs the headless server package — it will configure and start the systemd service.
install_desktop.sh does the same for the desktop (GUI) app.
To stop RSPlayer, run the following command:
sudo systemctl stop rsplayerTo start RSPlayer service again, run the following command:
sudo systemctl start rsplayerdocker run -p 8000:80 -v ${MUSIC_DIR}:/music -v rsplayer_data:/opt/rsplayer --device /dev/snd -it --rm ljufa/rsplayer:latestservices:
rsplayer:
image: ljufa/rsplayer:latest
devices:
- /dev/snd
ports:
- 8000:80
volumes:
- ${MUSIC_DIR}:/music:ro
- 'rsplayer_volume:/opt/rsplayer'
restart: unless-stopped
volumes:
rsplayer_volume:
driver: localOnce RSPlayer is installed, you can access the web user interface by navigating to http://localhost or the IP address of the machine on which it is installed.
For detailed configuration instructions, please refer to the documentation.
RSPlayer can be controlled from Home Assistant via the rsplayer_hacs_plugin.
Features include media player control (play, pause, stop, next/prev, volume) and real-time sync with rsplayer_firmware power state.
Install via HACS by adding https://github.com/ljufa/rsplayer_hacs_plugin as a custom repository.
For DIY enthusiasts, rsplayer offers the flexibility to integrate with custom hardware components.
- Hardware Designs: rsplayer_hardware
- Firmware: rsplayer_firmware
See the Hardware Integration documentation for more details.
If you would like to contribute to RSPlayer, please submit a pull request or open an issue on the GitHub repository.
For instructions on how to build the project from source, please see the Building from Source documentation.
RSPlayer is licensed under the MIT license. See the LICENSE file for more information.