The !Song Command: Show What's Playing in Chat

“What's this track?” is the second most-asked question on any stream with music on. Answer it once, in a command, and never type it again.

!song
Get Started Free

What Does the !Song Command Do?

The !song command posts whatever track is playing on your stream right now, usually as artist and title, sometimes with a link. A viewer types it, your bot reads the current track from wherever your music is coming from, and chat gets an answer without you pausing what you're doing to squint at a taskbar.

It solves a specific, constant annoyance. Music is background for you and foreground for anyone who happens to like the track, and they'll ask — repeatedly, at different times, as new people arrive. Answering by voice works once for the people listening at that moment and not at all for the person who joins ninety seconds later. A command answers everyone, individually, forever.

Under the hood this is a live-data command, not a text one. Something has to know what's playing: either your bot is the thing playing the music, or it's connected to the service that is. That distinction determines everything about how you set it up, and it's why !song is more involved than a static trigger like !rules but less involved than something that has to authenticate and write, like !clip.

A common addition is !previoussong or !lastsong, for the viewer who was away making tea when the good one played. It costs nothing if your bot tracks history, and it catches the request you'd otherwise have to answer from memory.

Now Playing vs Song Requests — Not the Same Thing

These get conflated constantly and they're different features with different risks. Now playing is read-only: the command reports what's currently on, and chat has no influence over it. Song requests are write access to your stream's audio: viewers type !sr followed by a link or a search term, and their choice goes into a queue that actually plays.

Now playing is safe to hand to everyone on day one. Song requests are a moderation surface. Open a request queue on a channel with any kind of hostile audience and you will, eventually, get something that plays audio you very much did not want broadcast — which is why most bots gate requests behind a user level, cap the queue length, and give mods !skip and a ban list.

If you do run both, keep the triggers unambiguous. !song for what's playing, !sr or !songrequest to add one, !queue to see what's coming, !skip for mods. Streamers who use !song for requests and !nowplaying for the current track spend the rest of the stream correcting people, because chat's instinct for what !song means is near-universal.

One structural note if you're deciding between them: song requests are a genuine engagement mechanic — they give viewers a lever that visibly changes the stream, which very few things do — but they demand attention for the whole session. Now playing demands nothing. On a channel where you're already juggling chat from several platforms, start with the one that runs itself.

!Song Variations & Example Responses

CommandExample ResponseNotes
!songNow playing: Carpenter Brut — Turbo KillerThe standard. Artist and title, nothing else, one line.
!song (with link)🎵 Now playing: Carpenter Brut — Turbo Killer (open.spotify.com/track/...)With a link. Only worth it if your viewers use the same service.
!nowplayingNow playing: Carpenter Brut — Turbo KillerAdd as an alias — plenty of viewers type this instead.
!previoussongPreviously: Perturbator — SentientFor the viewer who missed the one they actually wanted.
!song (nothing playing)No music right now — just the sweet sound of me losing.Write the empty-state response yourself or the bot returns an error.
!sr <link>@Dave added Turbo Killer to the queue — position 3.Song requests, not now playing. Different command, different risk.
!playlistTonight's playlist: [link]. It's all stream-safe, feel free to steal it.Static text command. Answers the follow-up question !song creates.

Set Up !Song in StreamUps

StreamUps answers on Twitch, YouTube Live and Kick from one command list, so the music connection is configured once rather than per platform.

  1. 1Sign in to StreamUps and connect the channels you stream to.
  2. 2Connect your music source in the integrations area so the bot has something to read the current track from — this is the step that makes !song a live command rather than a static one.
  3. 3Open the Commands section and add a new command.
  4. 4Set the trigger to !song and add !nowplaying and !music as aliases.
  5. 5Write the response around the current-track placeholder, for example: Now playing: $(song) — and add a fallback line for when nothing is playing.
  6. 6Set a global cooldown of 15-30 seconds so a burst of curiosity doesn't fill chat with identical answers, then save and test it with music running.

Set Up !Song in Nightbot

Nightbot's AutoDJ can both play requests and report the current track. If your music comes from somewhere else, Nightbot needs a now-playing bridge it can fetch over HTTP.

  1. 1Sign in at nightbot.tv and make sure Nightbot has joined your channel with moderator status.
  2. 2If you want Nightbot to be your music player, open Song Requests in the sidebar, enable it, and use the built-in !songs current command to report the current track — no custom command needed.
  3. 3If your music plays from an external service instead, set up a now-playing bridge that exposes the current track at a URL your bot can read.
  4. 4Open Commands, then the Custom tab, and click Add Command.
  5. 5Set Command to !song and set Message to $(urlfetch https://your-now-playing-endpoint) so Nightbot posts whatever the bridge returns.
  6. 6Set User Level to Everyone and Cooldown to 15 seconds, add !nowplaying in the Alias field, then Submit and test with music playing.

Set Up !Song in StreamElements

StreamElements ships a song-related default command tied to its own media request player, so check the default list before you build anything custom.

  1. 1Sign in at streamelements.com, open the Bot section and confirm the bot has joined your channel.
  2. 2Go to Chat Commands and open the Default Commands tab — if a song command is listed, enable it and set its cooldown and access level there.
  3. 3If you use the StreamElements media request player, that default command will report the current track with no further work.
  4. 4If your music comes from an external service, open the Custom Commands tab and click Add New Command.
  5. 5Set the command name to !song and the response to ${urlfetch https://your-now-playing-endpoint}, optionally prefixed with your own wording.
  6. 6Set Cooldown to 15 seconds and access to Everyone, save, and confirm it returns a real track rather than an error before you announce it to chat.

Music Licensing: What !Song Can't Save You From

Playing commercial music on a live stream is a copyright problem regardless of whether a command announces it. Every major platform runs automated audio matching against VODs and clips, and the consequences range from a silently muted section of your archive to a formal copyright strike against your channel. Streaming a track does not become licensed because you credited the artist — that's a persistent myth and it has cost people their channels.

What the command does affect is discoverability of the problem, in both directions. A chat log full of track names makes it trivially easy to see what was played. It also, more usefully, makes it easy for you to audit your own habits: if !song keeps returning major-label releases, you have a licensing exposure you can measure rather than guess at.

The clean fix is stream-safe music. Several services license catalogues specifically for live streaming and clear the VOD and clip usage that gets ordinary music flagged — the labels and playlists built for streamers exist precisely so this stops being a decision you make per track. Switch your background playlist to one of those and the !song command becomes a straightforward promotional feature: chat discovers artists, the artists get named, and nobody is muting your archive.

If you keep playing commercial music anyway — plenty of people do, with eyes open — at least keep it out of your permanent record. Disable VOD publishing on music-heavy segments, and be aware that on YouTube in particular the archive is the point of the platform, so the trade is worse there than on Twitch. See the YouTube live chat commands guide for more on how much longer YouTube content stays in circulation.

Making !Song Work Across Every Platform

Music setups are personal and fiddly — a desktop Spotify client, a browser tab, a hardware mixer, a playlist running in OBS — and the number of moving parts is why a !song command that worked last month sometimes stops. The most common failure is a broken link between your music source and the bot: an integration whose authorisation lapsed, or a now-playing bridge that quietly stopped updating.

The second most common failure only affects multistreamers, and it's more annoying: the command works on one platform and not the others, because the bot answering on Twitch is a different bot from the one answering on YouTube, and only one of them is connected to your music. Running a single command list across Twitch, YouTube Live and Kick avoids that split — the music connection is configured once and every platform gets the same answer.

Build a habit of testing it during your pre-stream check, alongside your audio levels. It takes four seconds, and the alternative is finding out mid-stream in front of the person who asked.

!Song Command FAQ

What's the difference between !song and !songrequest?
!song reports what is currently playing and changes nothing. !songrequest (or !sr) lets viewers add tracks to a queue that actually plays on your stream. The first is read-only and safe to open to everyone; the second is write access to your audio and needs moderation, a queue limit and a skip command.
Can !song show the track playing from Spotify?
Yes, but the bot needs a connection to Spotify or a now-playing bridge that exposes the current track over HTTP. Bots cannot read the local text files that desktop Spotify tools write for OBS overlays — those work for on-screen text and are invisible to a chat bot, which is the mismatch that catches most people out.
Why does my !song command return the wrong track?
Usually because the bot is reading a different source than the one you're actually listening to — for example it's connected to your bot's own request player while your music comes from a browser tab. Check which source the command is bound to, then confirm that source is the one routed into your stream audio.
Does crediting the artist make it legal to play their music on stream?
No. Naming the track in chat has no bearing on licensing. Playing commercial music on a live stream can still result in muted VOD segments, removed clips or copyright strikes. If you want the command to be a promotional feature rather than an audit trail, switch to a catalogue licensed for live streaming.
Should the !song command include a link to the track?
Only if your audience uses the same service you do. A Spotify link is useless to someone without Spotify and adds length to a message that has to fit on one line in a busy chat. Artist and title are searchable anywhere, which is why most streamers stop at the text and add a !playlist command for people who want more.
Can I show the current song on screen instead of in chat?
Yes, and doing both is common. An on-screen now-playing widget answers passively for everyone watching, while the command answers on demand and — importantly on YouTube — leaves a record in the chat replay. The overlay version needs a different tool than the chat one, since they read the same data in different ways.
Does !song work while multistreaming?
It works on every platform where the answering bot is connected to your music source. If you run a separate bot per platform, expect the command to work on the one you configured and fail on the others. A single cross-platform command list avoids that by holding the music connection once for all of them.

Related Commands

Set Up Chat Commands in Minutes

Add !lurk, !so, !discord, and more to your Twitch, YouTube, or Kick chat with StreamUps. No bot hosting, no code—just pick your commands and go live.

Related Pages