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.
!songWhat 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
| Command | Example Response | Notes |
|---|---|---|
| !song | Now playing: Carpenter Brut — Turbo Killer | The 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. |
| !nowplaying | Now playing: Carpenter Brut — Turbo Killer | Add as an alias — plenty of viewers type this instead. |
| !previoussong | Previously: Perturbator — Sentient | For 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. |
| !playlist | Tonight'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.
- 1Sign in to StreamUps and connect the channels you stream to.
- 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.
- 3Open the Commands section and add a new command.
- 4Set the trigger to !song and add !nowplaying and !music as aliases.
- 5Write the response around the current-track placeholder, for example: Now playing: $(song) — and add a fallback line for when nothing is playing.
- 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.
- 1Sign in at nightbot.tv and make sure Nightbot has joined your channel with moderator status.
- 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.
- 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.
- 4Open Commands, then the Custom tab, and click Add Command.
- 5Set Command to !song and set Message to $(urlfetch https://your-now-playing-endpoint) so Nightbot posts whatever the bridge returns.
- 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.
- 1Sign in at streamelements.com, open the Bot section and confirm the bot has joined your channel.
- 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.
- 3If you use the StreamElements media request player, that default command will report the current track with no further work.
- 4If your music comes from an external service, open the Custom Commands tab and click Add New Command.
- 5Set the command name to !song and the response to ${urlfetch https://your-now-playing-endpoint}, optionally prefixed with your own wording.
- 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?
Can !song show the track playing from Spotify?
Why does my !song command return the wrong track?
Does crediting the artist make it legal to play their music on stream?
Should the !song command include a link to the track?
Can I show the current song on screen instead of in chat?
Does !song work while multistreaming?
Related Commands
!lurkLurk
Let viewers announce they're watching quietly without leaving the stream.
!followageFollowage
Show viewers exactly how long they've been following your channel.
!watchtimeWatchtime
Show a viewer's total hours spent watching your streams.
!soShoutout
Give another streamer an on-stream shoutout with a link to their channel.
!discordDiscord
Drop your community Discord invite into chat on demand.
!socialsSocials
Share all of your social media links in a single chat message.
!uptimeUptime
Tell chat how long the stream has been live at any moment.
!quoteQuote
Save memorable stream quotes and replay them in chat later.
!rulesRules
Post your chat rules on demand so moderation stays transparent.
!clipClip
Let chat capture the last 30 seconds the moment something happens.
!subcountSubcount
Put your live subscriber total in chat to fuel milestone hype.
!8ball8ball
Answer chat's questions with a random magic eight ball verdict.
!hugHug
Give viewers a way to interact with each other, not just with you.
!specsSpecs
Answer the most-asked question on any stream: what's in your PC?
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.