Skip to Content
DocumentationNow PlayingNow Playing JSON

Now Playing JSON Data

OSMV exports live media metadata to shared/current_song.json for the built-in OBS Browser Source (shared/index.html), and optionally to shared/dynamic_text/track-info.json in Snaz format.


Primary JSON & JS Fallback (shared/current_song.json & shared/current_song.js)

When playback stops, closes, or the module is turned off, OSMV clears/removes shared/current_song.json and shared/current_song.js so shared/index.html fades out cleanly.

The companion shared/current_song.js defines window.__OSMV_CURRENT_SONG, allowing shared/widget.js to load track data when Chromium/OBS blocks fetch() on file:// URLs with ?preset=<Name> query strings.

current_song.json
{ "title": "Summer Of '69", "artist": "Bryan Adams", "album": "Reckless", "player": "Spotify", "thumbnail": "iVBORw0KGgoAAAANSUhEUgAA...", "status": "playing", "dynamicColor": true, "audioVisualizer": false, "timestamp": "2026-11-11T15:35:00Z" }

Fields description:

  • title: Name of the active song or video.
  • artist: Name of the musical artist or channel.
  • album: Album title (empty if unavailable).
  • player: Detected media player or browser application name.
  • thumbnail: Base64-encoded image bytes displayed directly by shared/index.html.
  • status: Playback state (playing, paused, stopped, or closed).
  • dynamicColor: Whether the OBS widget adapts colors to the cover art.
  • audioVisualizer: Whether the OBS widget visualizer is enabled.
  • timestamp: Last update time in ISO 8601 (UTC).

Overlay Studio Configuration (shared/widget_config.json & shared/widget_config.js)

OBS Overlay Studio saves all styling, layout, visualizer, custom CSS, and multi-scene presets (obsCustomPresets in shared/settings.json) into shared/widget_config.json and shared/widget_config.js (window.__OSMV_WIDGET_CONFIG).

  • presets map: Contains all 7 built-in presets (classic, glass, neon, compact, vinyl, minimal, banner) alongside every saved custom preset so different OBS scenes can reference shared/index.html?preset=<Name>.
  • CORS-safe file:// loading: shared/widget.js automatically falls back from fetch() to loading shared/widget_config.js and shared/current_song.js as <script> tags whenever running directly from local files.

Snaz-Compatible JSON (shared/dynamic_text/track-info.json)

When Export track-info.json is enabled in the Now Playing tab, OSMV writes a lightweight metadata file compatible with Snaz custom overlays:

track-info.json
{ "mediaplayer": "Spotify", "artist": "Bryan Adams", "song": "Summer Of '69", "album": "Reckless", "status": "playing" }
Last updated on