YTMDesktop2
Features

OBS overlays

Now-playing overlays via the local API

Drive OBS (or other) browser sources from the local API so stream overlays stay in sync with playback.

OBS overlay settings — live preview and flags

First-party embed

  1. Enable the API under Settings → API & Integrations → API.
  2. Open Settings → API & Integrations → OBS.
  3. Tune layout + flags in the live preview, then Copy OBS URL.
  4. In OBS: Add → Browser Source → paste the URL (suggested size ~480×140; smaller for badge/ticker; full scene for fullscreen).

Default URL:

http://127.0.0.1:13091/embed/now-playing

When authentication is on, append a paired client token:

http://127.0.0.1:13091/embed/now-playing?token=<token>

(The settings page can load a token from a paired client into the URL.)

Layouts

layoutDescription
defaultFull card — art, title, artist, progress (default)
compactSmaller card, tighter spacing
textTitle + artist only (no art/progress)
badgeCompact horizontal card (same 12px radius as default/ticker)
fullscreenEdge-to-edge art with overlay text — size Browser Source to scene
stackVertical poster (art on top) — good for side panels
tickerThin scrolling strip for top/bottom of stream

Example: ?layout=badge, ?layout=fullscreen, ?layout=ticker.

Default

Horizontal card — art, title, artist, progress.

Default layout

Stack

Vertical poster — large art on top, centered metadata, progress.

Stack layout

Text

Title + artist only — transparent background for minimal lower-thirds.

Text layout

Query flags

ParamDefaultDescription
layoutdefaultWidget layout (see above)
artonAlbum art
titleonTrack title
artistonArtist
progressonProgress bar + times
transparentonTransparent page background (OBS)
scale1CSS scale (0.254)
tokenAPI token when auth is required

Set a flag off with 0 / false / off (example: ?art=0&progress=0).

Tips

  • Confirm GET /track and GET /track/state before wiring overlays — see Routes.
  • First-party embeds load art from GET /track/thumbnail (thumb-cache), not the YouTube CDN.
  • WebSocket /socket pushes track:change and track:state (progress / play).
  • Prefer 127.0.0.1 and a token when the API is reachable beyond your machine.

Community overlays

You can still point browser sources at custom HTML that reads the API. Community reference: Zyphen's Now Playing.

On this page