Variables.
Variables are $( … ) tokens you drop into a command response. They fill in with live data when the command runs: the viewer name, your uptime, a random number, a quote, a counter value, and much more.
How variables work
Write a token anywhere in a command response and the bot replaces it before posting. They combine freely with your own text.
Welcome $(user)! $(channel) has been live for $(uptime).If a token has no value (or names something that does not exist) it simply renders as nothing, so a small typo never breaks the reply.
Tokens that target a user
A few tokens describe a person and accept an optional @mention. With no mention they describe the viewer who ran the command; with one, they describe that user. These are $(followage), $(watchtime) and $(accountage).
!followage → your own follow age
!followage @cohh → @cohh's follow ageOther arg-taking tokens read what the viewer typed: $(touser) is the first word after the command, $(query) is everything after it, and $(random 1-6) / $(pick a;b;c) take their own inline options.
When you put viewer input into an API URL, use $(querystring) (URL-encoded), never the raw $(query). The encoded form keeps spaces and symbols from breaking the link.
Full reference
Every available variable, grouped by what it relates to. Tokens shown as $(count.<name>) or $(api.<field>) take a name or field you supply.
User
$(user)The viewer who ran the command.
$(user)ninja$(user.id)The viewer's numeric Twitch user ID.
$(user.id)44322889$(chatter)The viewer who ran the command. Alias of $(user).
$(chatter)ninja$(chatter.id)The running viewer's numeric Twitch ID. Alias of $(user.id).
$(chatter.id)44322889$(user.followers)The running viewer's own channel follower count.
$(user.followers)1,530$(user.status)Whether the running viewer's own channel is live (with game) or offline.
$(user.status)live playing Fortnite$(user.title)The running viewer's own channel stream title.
$(user.title)ranked grind to Champion$(user.viewers)The running viewer's own channel viewer count (0 if offline).
$(user.viewers)212$(user.url)A link to the running viewer's own channel page.
$(user.url)https://twitch.tv/ninja$(user.tags)The running viewer's own channel stream tags.
$(user.tags)English, FPS$(user.game)The category the running viewer's own channel last streamed.
$(user.game)Fortnite$(touser)The first word after the command (an @-mention), or the viewer if none was given.
$(touser)cohhcarnage$(random.chatter)A random active chatter in your channel right now.
$(random.chatter)pokimane$(userlevel)The calling viewer’s level (everyone, subscriber, vip, moderator, broadcaster).
$(userlevel)moderator$(touser.id)The numeric Twitch ID of the @-mentioned user (or the viewer).
$(touser.id)26610234$(touser.followers)The @-mentioned channel’s follower count.
$(touser.followers)1,850,000$(touser.status)Whether the @-mentioned channel is live (with game) or offline.
$(touser.status)live playing Path of Exile 2$(touser.title)The @-mentioned channel’s current stream title.
$(touser.title)Chill Tuesday | PoE2$(touser.viewers)The @-mentioned channel’s current viewer count (0 if offline).
$(touser.viewers)4,120$(touser.url)A link to the @-mentioned channel’s page.
$(touser.url)https://twitch.tv/cohhcarnage$(touser.tags)The @-mentioned channel’s stream tags.
$(touser.tags)English, RPGChannel & Stream
$(channel)Your channel / broadcaster display name.
$(channel)doxmia$(streamer)Your channel / broadcaster display name. Alias of $(channel).
$(streamer)doxmia$(game)The category / game you are currently streaming.
$(game)Just Chatting$(title)Your current stream title.
$(title)building the overlay platform$(viewers)Your current live viewer count.
$(viewers)342$(uptime)How long you have been live this stream.
$(uptime)2h 14m$(followers)Your channel’s total follower count.
$(followers)12,480$(pluspoints)Estimated Twitch Plus Points earned so far this calendar month (paid subs only; Prime and gifted subs excluded). Resets monthly, like Twitch’s tracker.
$(pluspoints)39$(status)Whether you’re live (with the game) or offline.
$(status)live playing Just Chatting$(tags)Your current stream tags, comma-separated.
$(tags)English, Software & Game Dev$(channel.url)A link to your channel page.
$(channel.url)https://twitch.tv/doxmia$(channel.id)Your channel’s numeric Twitch ID.
$(channel.id)99288217$(livesince)The date your current stream went live.
$(livesince)Jun 9, 2026$(touser.game)The category another user (an @-mention, or the viewer) last streamed. Great for shoutouts.
$(touser.game)Path of Exile 2$(query)Everything the viewer typed after the command.
$(query)best loadout?$(querystring)Everything typed after the command, URL-encoded (for use inside API URLs).
$(querystring)best%20loadout%3F$(1)A single word the viewer typed, by position. $(1) is the first word after the command, $(2) the second, and so on (no limit). Blank past the last word.
$(1)bestDate & Time
$(time)The current local time in your configured timezone.
$(time)9:42 PM$(date)Today's date in your configured format and timezone.
$(date)Jun 9, 2026$(random)A random whole number. Defaults to 1-100, or pass your own range.
$(random 1-6)4$(pick)Randomly pick one of several options separated by semicolons.
$(pick heads;tails)tailsLoyalty
$(followage)How long a user (an @-mention, or the viewer) has followed your channel.
$(followage @cohhcarnage)2 years, 3 months$(watchtime)Total tracked watch time for a user (an @-mention, or the viewer). Needs Loyalty enabled.
$(watchtime @cohhcarnage)38h 12m$(accountage)How long ago a user (an @-mention, or the viewer) created their Twitch account.
$(accountage @cohhcarnage)11 years$(accountdate)The date a user (an @-mention, or the viewer) created their Twitch account.
$(accountdate)Mar 14, 2015$(subscribers)Your channel’s total subscriber count. Aliases: $(subscriber), $(subcount).
$(subscribers)486$(subscriber)Alias of $(subscribers) | your channel’s total subscriber count.
$(subscriber)486$(subcount)Alias of $(subscribers) | your channel’s total subscriber count.
$(subcount)486Quotes
$(quote)A random saved quote (its text). Same pick as $(quote.text) in the same response.
$(quote)dont feed the trolls$(quote.text)The text of a random saved quote.
$(quote.text)dont feed the trolls$(quote.author)The author of the random quote.
$(quote.author)doxmia$(quote.id)The per-channel number of the random quote.
$(quote.id)42Counters
$(count)This command's lifetime run count (or, inside a counter's own response, that counter's value).
$(count)128$(count.<name>)The current value of a named counter. Counters only change when a command or dashboard action explicitly increments them | they do NOT measure how often a word or phrase appears in chat messages.
$(count.deaths)7Queue
$(queue.current)The viewer currently up (now playing) in the queue.
$(queue.current)ninja$(queue.next)The next viewer waiting in the queue.
$(queue.next)shroud$(queue.count)How many viewers are waiting in the queue.
$(queue.count)5$(queue.list)Up to the next 5 waiting viewers, comma-separated.
$(queue.list)shroud, pokimane, tfue, myth, sykkuno$(queue.position)The calling viewer's position in the queue.
$(queue.position)3Media Requests
$(media.current)The now-playing song, with who requested it.
$(media.current)Darude - Sandstorm (requested by ninja)$(media.current.title)The title of the now-playing song.
$(media.current.title)Darude - Sandstorm$(media.current.artist)The channel / artist of the now-playing song.
$(media.current.artist)Darude$(media.current.url)A YouTube link to the now-playing song.
$(media.current.url)https://youtu.be/y6120QOlsfU$(media.requester)Who requested the now-playing song.
$(media.requester)ninja$(media.next)The title of the next song in the request queue.
$(media.next)Never Gonna Give You Up$(media.queue)Up to the next 5 requested song titles, comma-separated.
$(media.queue)Never Gonna Give You Up, Megalovania, Sandstorm$(media.count)How many songs are waiting in the request queue.
$(media.count)3League of Legends
$(lol.rank)A League player's ranked solo/duo tier, LP and win/loss. Needs the Riot integration enabled.
$(lol.rank Faker#KR1 kr)Challenger 1,487 LP (412W / 388L)$(lol.recent)A League player's last 5 ranked-solo results plus today's win/loss record.
$(lol.recent Faker#KR1 kr)WWLWW · today 3-1$(lol.champs)A League player's top 3 most-played ranked-solo champions with win rates.
$(lol.champs Faker#KR1 kr)Azir 62%, Ahri 58%, Orianna 55%API & Advanced
$(api)The raw response body of this command’s configured API call.
$(api){"temp":21,"humidity":72}$(api.<field>)A single field pulled from this command’s JSON API response.
$(api.main.temp)21$(url.commands)A public link to your channel’s command list.
$(url.commands)https://overlaything.com/c/doxmiaConditionals
$(if)Show text only when a condition is true. Pair with $(endif).
$(if subscribed)thanks for subbing!$(endif)thanks for subbing!$(else)The text to show when the $(if) condition is false.
$(if mod)hi boss$(else)hi$(endif)hi boss$(endif)Closes an $(if) block.
$(if vip)VIP$(endif)VIP$(subscribed)True when the viewer is subscribed. Aliases: sub, subscriber.
$(if subscribed)thanks for the support!$(endif)thanks for the support!$(founder)True when the viewer is a founder (one of the channel’s earliest subscribers).
$(if founder)OG sub!$(endif)OG sub!$(mod)True when the viewer is a moderator (the broadcaster counts too). Alias: moderator.
$(if mod)mod tools ready$(endif)mod tools ready$(vip)True when the viewer has the VIP badge.
$(if vip)VIP in the house$(endif)VIP in the house$(broadcaster)True only when the channel owner runs the command. Alias: streamer.
$(if broadcaster)hey boss$(endif)hey boss$(bits)How many bits the viewer cheered in this message (0 if none).
$(if bits >= 100)big cheer!$(endif)big cheer!$(is_cheer)True when this message included a bit cheer.
$(if is_cheer)thanks for the bits!$(endif)thanks for the bits!$(emote_count)How many emotes the viewer used in this message.
$(if emote_count >= 3)so many emotes$(endif)so many emotes$(first_time)True when this is the viewer’s first-ever chat message in your channel.
$(if first_time)welcome!$(endif)welcome!$(returning)True when the viewer has chatted before (a returning chatter).
$(if returning)welcome back!$(endif)welcome back!$(streams_seen)How many of your streams this viewer has been seen in.
$(if streams_seen >= 10)regular!$(endif)regular!$(hour)The current hour (0–23) in your timezone.
$(if hour >= 22)late-night crew$(endif)late-night crew$(day)The current day name (e.g. monday) in your timezone.
$(if day == "friday")happy Friday!$(endif)happy Friday!$(tier)The viewer's sub tier as a number (0=not subbed, 1/2/3). Prime counts as 1.
$(if tier >= 2)Tier 2+ perk unlocked$(endif)Tier 2+ perk unlocked$(follower)True when the viewer follows your channel. Alias: following.
$(if follower)thanks for following!$(endif)thanks for following!$(followage_days)How many days the viewer has followed your channel.
$(if followage_days >= 30)1+ month follower$(endif)1+ month follower$(followage_months)How many months the viewer has followed your channel.
$(if followage_months >= 12)1-year follower!$(endif)1-year follower!$(watchtime_minutes)The viewer’s total watch time in minutes.
$(if watchtime_minutes >= 60)1+ hour watched$(endif)1+ hour watched$(watchtime_hours)The viewer’s total watch time in hours.
$(if watchtime_hours >= 100)100-hour club!$(endif)100-hour club!$(live)True when your channel is currently live. Alias: is_live.
$(if live)we’re live!$(endif)we’re live!$(uptime_minutes)How many minutes the current stream has been live.
$(if uptime_minutes >= 120)2+ hours in$(endif)2+ hours inHype Train
$(hypetrain.active)yes while a Hype Train is running, otherwise no.
$(if $(hypetrain.active) == "yes")train is live!$(endif)train is live!$(hypetrain.level)Current Hype Train level (empty when none).
$(hypetrain.level)5$(hypetrain.progress)Points earned toward the next level (empty when no train or at the end).
$(hypetrain.progress)9500$(hypetrain.goal)Points needed for the next level (empty when no train or at the end).
$(hypetrain.goal)15000$(hypetrain.total)Total points contributed to the current/last train.
$(hypetrain.total)14250$(hypetrain.conductor)Display name of the top contributor (the conductor).
$(hypetrain.conductor)PixelPaladin$(hypetrain.type)Train type: regular, treasure or golden_kappa (empty when no train).
$(hypetrain.type)golden_kappaTokens like $(quote), $(count.deaths), $(queue.next), $(media.current) and $(watchtime) only return a value when the matching module is enabled. The League tokens need the Riot integration turned on for the platform.