rox

If Foobar2000 was made in the current year.

A desktop music player for people with large, carefully tagged local libraries. You build the panels yourself, and a theme is one file you can hand to someone else. Native on Linux, macOS and Windows.

Download rox

On Arch or NixOS? Install it from the AUR or the Nix flake instead.

v1.33.0 · Linux, macOS, Windows · all downloads

  • 0.3 s from launch to a window
  • 134 MB of memory with 50,000 tracks loaded
  • AGPL-3.0 free and open source

Under a second to a window

rox ships as one binary and starts before you've let go of the mouse.

Startup, memory and idle CPU across seven music players on one 50,000-track library
PlayerWindow upFully loadedMemoryIdle CPU
rox0.3 s2.3 s 134 MB 0.5%
Elisa0.7 snever settles 206 MB 74%
fooyin0.3 s18 s 364 MB 0%
Quod Libet-19 s 384 MB 0.2%
Strawberry0.3 s32 s 434 MB 0.8%
Museeks-3 s 436 MB 0%
Tauon8.7 s12 s 2.8 GB 0%

I measured all of these myself, on one machine (Ryzen 9 5950X, Linux/Wayland) with the same 50k-track library on an external SSD, every player through the same harness with its library loaded. Memory is PSS across the full process tree. "Loaded" is when CPU settles after launch; idle is a paused player with the window visible. DeaDBeeF would have sat at 44 MB and won on memory, but it never got a row: its MP3 parser segfaults partway through importing this library, every attempt. rox indexes all 50,000 tracks, including the truncated files that trip it.

Library

  • A library that holds up

    A parallel scanner reads full tags, true durations and each file's own codec, not a header skim. Folder watching survives renames, and nothing drops silently.

    What breaks at 50,000 tracks
  • Tagging you can trust

    A full editor with atomic writes, batch edits and find and replace. Ratings live in the files themselves via FMPS and POPM. Lookup through MusicBrainz, iTunes and Deezer.

    Next to Mp3tag
  • Cue rips play like tracks

    A whole-disc FLAC beside its cue sheet indexes as real rows. Each span seeks, scrobbles, sorts and runs into the next one gaplessly, the way a file does.

    How the spans work
Equalizer Flat
C1C2C3C4C5C6C7C8C9

Playback

  • Gapless playback

    One stream, with shuffle, repeat, play-next and A-B repeat. Bookmarks and throwaway session markers sit on the seek strip. Media keys and now-playing work on all three platforms.

  • Ten bands and bit-perfect

    An equalizer in its own window, with saved presets and the AutoEq headphone database inside it. Crossfade leaves an album's splices alone, and exclusive output says what the hardware agreed to.

    ReplayGain and bit-perfect
  • Sorted by how it sounds

    rox describes your tracks off their own audio, tempo included, and orders what's next by resemblance. It runs on your machine against your files, no service in the loop.

Looks

  • Panels you compose

    Forty-odd panel types, from library and queue to artist grids and meters. Duplicate one with its config or pop it out into a window. Album tiles caption themselves with year, genre or last played.

    Next to Foobar2000
  • Themes as shareable files

    A workspace is one file carrying layout, palette, appearance and shaders. Palettes can tint from the playing cover, going light or dark with the art.

    The eight in the box
  • Visuals that listen

    Write a WGSL shader over one panel or the whole window, or run Milkdrop presets through projectM. Named signals off the spectrum ride the shader inputs.

    Shaders and signals

Day to day

  • Lyrics and history

    Synced or plain, from sidecar files, tags or lrclib, with an editor that writes back where it read. A listen log drives the history panel and stats, and Last.fm's scrobbles import with their own dates.

  • Playlists that survive

    Favourites, drag reorder, M3U, PLS and XSPF in and out, and smart playlists that re-run a saved query rather than hold a snapshot. Entries survive a file leaving and returning.

  • One binary, no installer

    A tarball, an AppImage, a Flatpak, a DMG or a zip, plus the AUR and a Nix flake. Portable mode keeps the library and settings in a folder beside the executable.

    Get it

Sources

Beyond the window

Radio you can rewind

Paste a stream URL or pick one out of the radio-browser directory. A station queues and scrobbles like a track, and a live buffer lets you pause a broadcast and rewind it.

Your server in the library

A Subsonic or OpenSubsonic server syncs its catalog in, and the rows browse, search and play like files. Streams ask for the original, so gapless and ReplayGain hold.

Songs off the air

Capture saves whole songs a station plays into a folder of your own, in the stream's own format, tagged, with the cover beside them. Off until you turn it on.

A socket, not a server

JSON-RPC over a local socket: transport, queue edits, library search and pushed events. Auth is file permissions, nothing listens on a port.

What you can build on it

The player as MCP tools

A proxy beside the app puts the socket on MCP, so an AI client can ask what's playing or work the deck. Off by default, rechecked every call.

Streams out to Icecast

A source client pushes what rox plays as MP3 at your mount. Outward only: the network face is Icecast's, and a dead server never stalls playback.

Plugins

And for everything else

Your library covers what's on your disk. A plugin brings in music from somewhere else, like a catalogue on the web or a server you run. rox browses, searches and plays it in the same panels and the same queue as your own files.

  1. Drop in a folder

    A plugin is a folder holding a small manifest and a program. Turn on plugins in Settings, press Reveal Folder and copy it in.

  2. Switch it on

    Switching it on is the approval. A card says what the plugin does and what it runs, and a change to any of its files switches it off again.

  3. Browse it

    It opens in an External Sources panel with the source's own home, shelves of covers, search and sortable columns, drawn in your theme.

  4. Play it, keep it, or start a radio

    Its tracks queue, play gapless and go in playlists like your own. Keep an album and it joins your library. Start a radio and the service picks what comes next.

The Internet Archive example plugin in an External Sources panel: a notice at the top, rows to browse, shelves of release covers, and download and year columns.
  1. Its own panel, docked and themed like the rest
  2. Columns the service knows, sorted with a click
  3. A line from the plugin, with a link
  4. Shelves of covers that scroll sideways

The Internet Archive example, browsing Creative Commons releases from the Archive's netlabels collection. It's in rox's repository, ready to copy.

Make it yours

There are eight workspaces in the box, one click away on the welcome window. Each one is a single file carrying the layout, the palette and the shaders it runs, so you can edit it, break it, and hand it to someone else. See them all.