Spotty is a modern terminal user interface for Spotify, built with Rust. It brings playback control, library browsing, search, queue management, device transfer, and lyrics into a keyboard-driven TUI.
Spotty is an unofficial Spotify client and is not affiliated with Spotify AB.
🎧 Watch the full demo with audio
- Keyboard-first Spotify playback: play, pause, skip, volume, shuffle, and repeat.
- Library access for playlists, liked songs, saved albums, followed artists, and saved podcasts.
- Home view with top tracks, top artists, and recently played tracks.
- Search across tracks, artists, albums, and playlists.
- Queue view with live playback context.
- Device selector for transferring playback between Spotify Connect devices.
- Synced and unsynced lyrics support through Spotify metadata.
- A Spotify Premium account.
- A browser for OAuth authorization.
Go to the Releases page and download the archive for your platform:
| Platform | File |
|---|---|
| Linux (x86_64) | spotty-linux-x86_64.tar.gz |
| macOS (Apple Silicon) | spotty-macos-aarch64.tar.gz |
| Windows (x86_64) | spotty-windows-x86_64.exe.zip |
Install the ALSA runtime library (required for audio):
# Debian / Ubuntu
sudo apt install -y libasound2
# Fedora / RHEL
sudo dnf install -y alsa-lib
# Arch
sudo pacman -S alsa-libExtract and run:
tar -xzf spotty-linux-x86_64.tar.gz
chmod +x spotty-linux-x86_64
./spotty-linux-x86_64macOS includes all required audio libraries. Extract and run:
tar -xzf spotty-macos-aarch64.tar.gz
chmod +x spotty-macos-aarch64
./spotty-macos-aarch64If macOS blocks the binary because it is from an unidentified developer, remove the quarantine flag:
xattr -d com.apple.quarantine spotty-macos-aarch64No additional dependencies are required. Extract spotty-windows-x86_64.exe.zip and run from PowerShell:
.\spotty-windows-x86_64.exeIf Windows Defender SmartScreen blocks the binary, click More info → Run anyway.
When you first launch Spotty, it will open your browser and redirect you to Spotify's login page. After logging in, Spotify redirects back to the app automatically. Your credentials are then cached locally, so you won't need to log in again on future launches.
Use ? inside Spotty to open the in-app help popup.
| Key | Action |
|---|---|
q |
Quit |
? |
Toggle help |
g |
Open quick actions |
Esc |
Close popup |
Enter |
Select or confirm |
Tab |
Cycle focus between panels |
1 / 2 / 3 / 4 |
Focus panel 1 / 2 / 3 / 4 |
| Key | Action |
|---|---|
H |
Home |
S |
Search |
Q |
Queue |
L |
Lyrics |
| Key | Action |
|---|---|
Space |
Play or pause |
n |
Next track |
p |
Previous track |
+ / - |
Increase or decrease volume |
s |
Toggle shuffle |
r |
Cycle repeat mode |
| Key | Action |
|---|---|
j / Down |
Move down |
k / Up |
Move up |
h / Left |
Move left or switch to the previous tab |
l / Right |
Move right or switch to the next tab |
Ctrl+d |
Jump down 10 items |
Ctrl+u |
Jump up 10 items |
| Key | Action |
|---|---|
Enter |
Run search |
Tab |
Cycle result groups: tracks, artists, albums, playlists |
Esc |
Return to search input |
Open quick actions with g, then press t to transfer playback.
| Key | Action |
|---|---|
j / Down |
Next device |
k / Up |
Previous device |
Enter |
Transfer playback |
Linux (Debian / Ubuntu)
sudo apt install -y libasound2-dev pkg-config libssl-devLinux (Fedora / RHEL)
sudo dnf install -y alsa-lib-devel pkg-config openssl-develmacOS — install Xcode Command Line Tools if you haven't already:
xcode-select --installWindows — install Visual Studio Build Tools with the Desktop development with C++ workload selected.
Install Rust from rustup.rs, then:
git clone https://github.com/vquclinh/spotty.git
cd spottycargo run # run in debug mode
cargo run --release # run optimized
cargo build --release # build binary to target/release/spotty
cargo check # type-check without building
cargo fmt # format code
cargo clippy # lint| Area | Library |
|---|---|
| TUI rendering | ratatui |
| Terminal events | crossterm |
| Spotify Web API | rspotify |
| Audio playback | librespot |
| Async runtime | tokio |
src/
app/ Application state, routes, and view models
audio/ Librespot authentication, player, and audio events
event/ Event primitives
handlers/ Keyboard handlers by view
network/ Spotify API client, requests, and response models
ui/ Layouts, widgets, popups, and rendering
lib.rs Application bootstrap and main event loop
main.rs Binary entrypoint
- Vo Quoc Linh (vquclinh)
- Nguyen Thanh Nhat (night0)
MIT