SourceTV is the broadcaster inside a Counter-Strike 2 dedicated server. It can relay a live match to spectators, record the match as a demo, or hand the stream to a separate broadcast relay. Every option sits in the tv_ command family. Valve's own cvar list is a snapshot from October 2023, so this post pairs it with the convar dump from the current build and calls out where the two differ.
What SourceTV does
A server with SourceTV enabled runs a second observer alongside the match. Players connect to that observer, or the stream is pushed to a relay that other people connect to instead. The relay path is what lets a tournament run the game on one box and the spectator load on another.
The commands below are server-side. You set them in the server console or in the server config, not in the client console.
Turning it on and naming it
- activates SourceTV. The default is false, and the entry carries the nf and release flags in Valve's list.
Code: Select all
tv_enable 1 - activates a second SourceTV instance, which is the one Valve's relay and port settings refer to when they carry a 1 suffix.
Code: Select all
tv_enable1 1 - sets the host name. The default is the literal string SourceTV.
Code: Select all
tv_name "My Server TV" - sets the password every spectator needs. The default is 0. The same command with a 1 suffix covers the second instance; if that one is empty, tv_password is used.
Code: Select all
tv_password "something" - makes the match show up as watchable in the game UI, so people watching through the UI do not have to type the password. Default false.
Code: Select all
tv_advertise_watchable 1
- is the broadcast delay in seconds, and 105 is the default. Lower it for a scrim where the delay matters, raise it for a match you want hard to snipe.
Code: Select all
tv_delay 105 - holds the map change until the broadcast finishes. Default true.
Code: Select all
tv_delaymapchange 1 - caps spectator bandwidth per client, and 0 means unlimited. This is the knob to touch when spectators report stutter on a slow uplink.
Code: Select all
tv_maxrate 0 - caps the number of connected spectators. Default 128.
Code: Select all
tv_maxclients 128 - is the port for the first instance and
Code: Select all
tv_port 27020is the second. These are the ports to forward when nobody can connect.Code: Select all
tv_port1 27021 - is the connection timeout in seconds.
Code: Select all
tv_timeout 20 - decides whether spectators are sent to relay proxies. Valve's entry reads 0=never, 1=if appropriate, 2=always, and the default is 1.
Code: Select all
tv_dispatchmode 1
- is the password relay proxies use. Default 0.
Code: Select all
tv_relaypassword "something" - relays voice data. Valve's default is true. The current build dump words it as a 0=off, 1=on switch.
Code: Select all
tv_relayvoice 1 - relays team radio commands to the broadcast. Default false.
Code: Select all
tv_relayradio 1 - relays text chat to GOTV, and the build dump gives it three states: 0=off, 1=say, 2=say+say_team.
Code: Select all
tv_relaytextchat 2 - ,
Code: Select all
tv_relayandCode: Select all
tv_retrycover connecting to a relay and retrying after a network timeout. tv_autoretry defaults to true.Code: Select all
tv_autoretry 1
- records every game as a SourceTV demo automatically. Default false.
Code: Select all
tv_autorecord 1 - starts a recording on demand and
Code: Select all
tv_recordends it.Code: Select all
tv_stoprecord - prints server status,
Code: Select all
tv_statuslists the connected spectators andCode: Select all
tv_clientsturns on debug output.Code: Select all
tv_debug 1 - lets a production cameraman run the interactive caster client on a given SteamID. Valve's entry shows the placeholder form of the ID.
Code: Select all
tv_allow_camera_man_steamid 7650123456XXX - pushes the match out through Steam, with
Code: Select all
tv_broadcast 1pointing at the broadcast relay. Both default to off and localhost:8080 respectively.Code: Select all
tv_broadcast_url
Valve's page is dated. It carries the note "Retrieved October 2, 2023 Build: 9832 (revision 8384867)" and warns that the list was assembled from incremental Cvarlist runs, so commands starting with special characters would be missing. The build dump names its own build: 11162119, October 22 2026, with 1,246 console commands and 4,337 convars, of which 1,457 are cheat-flagged.
Two checkable differences:
- tv_relaytextchat is in the current dump but not in Valve's October 2023 list. Treat the three-state reading as the current one.
- tv_snapshotrate has no entry in the current dump at all. Grepping the saved page returns zero occurrences, so there is nothing to set there and no default to quote.
- Nobody can connect. Check tv_enable is 1, then check that port 27020 is open on the host firewall. The default port is easy to forget because it is not 27015.
- Spectators see a stale or delayed picture. tv_delay is 105 seconds by default. Lower it deliberately and expect the anti-sniping tradeoff.
- The stream stutters on a slow uplink. Raise tv_maxrate rather than lowering it, and confirm tv_maxclients is not already at 128.
- Relay clients never arrive. tv_dispatchmode 1 only dispatches when appropriate. Set 2 to force it, and confirm tv_relaypassword matches on both ends.
- Recordings never appear. tv_autorecord is false by default, so a server that was never configured records nothing.
Is SourceTV the same as GOTV?
They are the same feature. Valve's descriptions use both names, and tv_advertise_watchable is described as making the match watchable via the game UI, which is the GOTV path.
Do I need a second server?
No. SourceTV runs inside the game server. A second box is only useful as a relay when the spectator load would otherwise eat the game server's bandwidth, and that is what tv_dispatchmode and the relay commands are for.
Can I run two broadcasts?
Yes. The 1-suffixed commands cover a second instance, with its own port at 27021 and its own enable flag.
Will spectators hear team voice chat?
Only if tv_relayvoice is on. It defaults to true, and the build dump describes it as a 0=off, 1=on switch.
What happens to a demo I record?
tv_record starts a SourceTV demo and tv_stoprecord ends it. The wiki does not state where the file lands on the server, so check your server's demo directory rather than assuming a path.
Sources
Valve Developer Community: List of Counter-Strike 2 console commands and variables (snapshot, October 2 2023, build 9832)
s2v.app: Counter-Strike 2 Console Commands and ConVars, full list (build 11162119, October 22 2026)