Now playing overlay
for OBS. For free.
Soundie exposes a local WebSocket RPC and REST API so you can build real-time now-playing overlays for OBS, control music from Stream Deck, and show track info anywhere on stream.
Runs on localhost · No external server · Free forever
Real-time WebSocket events
Subscribe to track changes, play/pause, and seek events as they happen. No polling needed.
REST API for state snapshots
GET /player/state returns the current track, position, volume, and queue. Works from any HTTP client.
Stream Deck integration
POST to /player/toggle, /player/skip, or /player/volume from any Stream Deck button.
Discord Rich Presence
Soundie updates your Discord status with the current track automatically — no setup needed.
Works with any overlay tool
Browser Source in OBS, custom Electron widgets, or any tool that can make HTTP or WebSocket requests.
Free and local
Runs on 127.0.0.1 — your stream data never touches an external server. Free forever.
How to connect
// Fetch current player state
const res = await fetch('http://127.0.0.1:45289/player/state');
const { track, isPlaying, position } = await res.json();
// track.title, track.artist, track.albumArt, track.duration
console.log(`Now playing: ${track.artist} — ${track.title}`);const ws = new WebSocket('ws://127.0.0.1:45289');
ws.onmessage = (e) => {
const event = JSON.parse(e.data);
if (event.type === 'TRACK_CHANGED') {
// Update your OBS Browser Source overlay
updateOverlay(event.track);
}
if (event.type === 'PLAYBACK_STATE') {
// Show/hide pause indicator
setPlaying(event.isPlaying);
}
};# Play / pause (bind to a Stream Deck button)
curl -X POST http://127.0.0.1:45289/player/toggle
# Skip to next track
curl -X POST http://127.0.0.1:45289/player/next
# Set volume (0.0 – 1.0)
curl -X POST http://127.0.0.1:45289/player/volume \
-H "Content-Type: application/json" \
-d '{"volume": 0.6}'OBS Browser Source setup
Open OBS
Go to Sources → Add → Browser Source.
Point to your overlay
Use a local HTML file or a hosted page that connects to ws://127.0.0.1:45289.
Subscribe to events
Listen for TRACK_CHANGED events and update your overlay's DOM.
Style it your way
The API gives you title, artist, album art URL, duration, and position — lay it out however you want.
Full API reference in the WebSocket RPC docs and REST API docs.
Add now-playing to your stream.
Download Soundie, connect OBS to the WebSocket, and you have live track data on stream in minutes.