19 min read

Steam Game Server Login Token (GSLT): Complete Setup Guide for Every Game

You set up your dedicated server, configured the ports, started everything up — and then players cannot connect, get a SteamAuthError, or your server simply does not appear in the community server list. In almost every case, the problem comes down to one thing: the Game Server Login Token.

Game Servers · Steam · GSLT · CS2 · Rust · Valheim · ARK · 2026

Steam Game Server Login Token (GSLT): Complete Setup Guide for Every Game

You set up your dedicated server, configured the ports, started everything up — and then players cannot connect, get a SteamAuthError, or your server simply does not appear in the community server list. In almost every case, the problem comes down to one thing: the Game Server Login Token. This guide explains exactly what GSLT is, why it matters, how to create one for any Steam game, how to add it to your server config, and how to solve every common error that comes from missing or broken tokens.

📖 14 min read 🎮 CS2 · TF2 · Rust · Valheim · ARK 🔑 GSLT token setup 🛠️ SteamAuthError fix 🌐 CGNAT solution

What Is a Game Server Login Token and Why Do You Need One?

A Game Server Login Token (GSLT) is a unique authentication token that ties your dedicated game server to a specific Steam account. When your server starts with a valid GSLT, it authenticates with Steam's master servers under your account identity. This does several things at once: it registers your server in the public server browser, it allows players who favourited your server to find it even if your IP address changes, and it shifts accountability from IP address level to account level.

Before GSLTs existed, Valve banned servers by IP address. This was a problem: a single malicious user on a shared hosting machine could get the entire machine's IP banned, affecting every other server on that host. With GSLT, the ban follows the account that generated the token, not the machine's IP. Your server is your responsibility.

📋 Server list visibility Without a valid GSLT, your server either does not appear in the community server list at all, or ranks so low it is effectively invisible. A valid token gets you proper listing.
📌 Persistent server identity Players who add your server to favourites can still join it after you change your IP or move to a different machine. The token provides a stable identity that survives IP changes.
🛡️ Account-level moderation Valve can revoke individual tokens for policy violations without banning the IP. You are responsible for what runs on your server — running blacklisted plugins can get your tokens banned.
VAC and anti-cheat Authenticated servers get proper VAC (Valve Anti-Cheat) integration. Anonymous servers (no GSLT) may have limited anti-cheat functionality depending on the game.

Account Requirements Before You Start

Steam enforces specific requirements before your account can create GSLTs. Check all of these before trying to generate a token:

RequirementHow to check / fix
Account is not limited Limited accounts have never made a purchase on Steam. Buy any game or add funds to your wallet to remove the limited status.
Phone number registered Go to Steam → Settings → Account Security → Add phone number. A verified phone is required to generate any GSLT.
Account is not community banned Community bans prevent token creation. There is no workaround — use a different Steam account.
You own the game You must own the game in your Steam library to create a GSLT for its server. Free-to-play games (TF2, CS2 in some regions) are typically an exception — check by attempting to create the token.
Maximum 1000 tokens One account can hold up to 1000 GSLTs. Each server needs a unique token, so one account can handle up to 1000 simultaneously running servers.

How to Create a GSLT Token (Step by Step)

1

Open the Steam Game Server Account Management page

Navigate to steamcommunity.com/dev/managegameservers and log in with your Steam account if prompted.

2

Enter the App ID of your game

In the "App ID of the base game" field, enter the App ID for the game you are hosting. Use the table below to find the correct ID. Note: always use the base game App ID, not the dedicated server App ID.

3

Enter a memo to identify this token

The memo field is just for your own reference. Use something that helps you identify which server this token belongs to, such as "CS2-Main" or "Rust-Weekend-Server". This is especially helpful if you manage multiple servers.

4

Click Create and copy the token

After clicking Create, the page reloads and shows your new token — a long alphanumeric string. Copy it immediately and store it somewhere safe. You will paste this into your server's config file or startup command. The token is shown on this page, but treating it as a secret is good practice.

5

Create a separate token for each server

Repeat this process for every server you run. Each server must have its own unique token. Running two servers with the same token causes Steam error code 6 and disconnects all players from both servers.

App IDs for Popular Steam Game Servers

GameApp ID (for GSLT)Server download AppIDGSLT required?
Counter-Strike 2 730 730 (same) Yes — required to appear in server browser
Team Fortress 2 440 232250 Strongly recommended — affects ranking in list
Garry's Mod 4000 4020 Yes — required since May 2020, servers without GSLT rank poorly
Left 4 Dead 2 222860 222860 (same) Recommended
Insurgency: Sandstorm 581320 581330 Recommended for public listing
Don't Starve Together 322330 343050 Yes — required for public server listing
Rust 252490 258550 Optional — but servers without it rank lower in community list
ARK: Survival Evolved 346110 376030 Recommended for public listing
ARK: Survival Ascended 2399830 2430930 Recommended for public listing
Palworld 1623730 2394010 Optional but improves discoverability
Valheim N/A — Valheim does not use GSLT Not applicable — use SteamAppID env variable instead
Always use the base game App ID, not the dedicated server App ID

For example: Garry's Mod's dedicated server downloads using AppID 4020, but the GSLT must be created with AppID 4000 (the base game). Using the wrong App ID when creating the token results in an authentication failure when the server starts. The table above lists the correct App IDs for each game.

Adding the Token to Your Server: Game-by-Game Guide

Counter-Strike 2

CS2 uses the Source engine's sv_setsteamaccount command. Add the token either in the startup command or in your server config file.

CS2 — startup command (recommended)
./cs2.sh -dedicated \
  -maxplayers 10 \
  -port 27015 \
  +hostname "My CS2 Server" \
  +map de_dust2 \
  +game_type 0 \
  +game_mode 1 \
  +sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
CS2 — server.cfg (alternative)
hostname "My CS2 Server"
sv_password ""
sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
mp_timelimit 45
mp_roundtime 2

CS2 server binds to UDP port 27015 by default. Players connect as: connect YOUR-IP:27015 in the developer console.

Team Fortress 2

TF2 — srcds startup command
./srcds_run \
  -game tf \
  -port 27015 \
  -maxplayers 24 \
  +map cp_dustbowl \
  +sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
TF2 — server.cfg
hostname "My TF2 Server"
sv_password ""
sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
mp_timelimit 30

Garry's Mod

Garry's Mod — srcds startup command
./srcds_run \
  -game garrysmod \
  -port 27015 \
  -maxplayers 32 \
  +gamemode sandbox \
  +map gm_construct \
  +sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
Garry's Mod — server.cfg
hostname "My Garry's Mod Server"
sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"
sv_password ""
// Without a valid GSLT, your server suffers severe ranking penalty in server list
// since the May 2020 mandatory GSLT update

Left 4 Dead 2

Left 4 Dead 2 — srcds startup command
./srcds_run \
  -game left4dead2 \
  -port 27015 \
  -maxplayers 8 \
  +map c1m1_hotel \
  +sv_setsteamaccount "YOUR_GSLT_TOKEN_HERE"

Rust

Rust's server software accepts anonymous login from SteamCMD (AppID 258550), but adding a GSLT improves your server's ranking in the community list. The parameter syntax is different from Source engine games:

Rust — startup command
./RustDedicated \
  -batchmode \
  -nographics \
  +server.hostname "My Rust Server" \
  +server.port 28015 \
  +server.queryport 28016 \
  +server.maxplayers 100 \
  +server.worldsize 3000 \
  +server.seed 12345 \
  +server.gametoken "YOUR_GSLT_TOKEN_HERE" \
  +rcon.password "YourRconPassword" \
  +rcon.port 28017
Rust token uses +server.gametoken, not +sv_setsteamaccount

Rust is not a Source engine game, so it does not use the sv_setsteamaccount command. The correct parameter is +server.gametoken. Using the wrong parameter name means the token is silently ignored and your server runs without authentication.

Valheim

Valheim does not use GSLT at all. Instead, it uses the SteamAppID environment variable and connects to Steam using its own backend. There are two ways to expose a Valheim server: the Steam backend (requires port forwarding), or the crossplay backend (uses a relay server, no port forwarding needed).

Valheim — Linux startup script (Steam backend, port forwarding required)
#!/bin/bash
export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppID=892970

./valheim_server.x86_64 \
  -name "My Valheim Server" \
  -port 2456 \
  -world "MyWorld" \
  -password "YourPassword" \
  -public 1

export LD_LIBRARY_PATH=$templdpath
Valheim — with crossplay (relay backend, no port forwarding needed)
./valheim_server.x86_64 \
  -name "My Valheim Server" \
  -port 2456 \
  -world "MyWorld" \
  -password "YourPassword" \
  -public 1 \
  -crossplay

With -crossplay, Valheim routes connections through Iron Gate's relay servers. Players connect using a Join Code displayed in the server log. No port forwarding or GSLT is needed. This is the recommended approach for home servers behind CGNAT.

ARK: Survival Evolved and ARK: Survival Ascended

ARK: Survival Evolved — startup command
./ShooterGameServer \
  TheIsland?listen?SessionName="My ARK Server" \
  ?ServerPassword=YourPassword \
  ?ServerAdminPassword=YourAdminPassword \
  ?Port=7777 \
  ?QueryPort=27015 \
  ?MaxPlayers=30 \
  -server \
  -log
ARK — GameUserSettings.ini (in Saved/Config/LinuxServer/)
[SessionSettings]
SessionName=My ARK Server

[/Script/Engine.GameSession]
MaxPlayers=30

Don't Starve Together

Don't Starve Together — cluster_token.txt
# Place your GSLT token in ~/.klei/DoNotStarveTogether/MyCluster/cluster_token.txt
# The file should contain ONLY the token, nothing else:
YOUR_GSLT_TOKEN_HERE
Don't Starve Together — cluster.ini
[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty = true

[NETWORK]
cluster_name = My DST Server
cluster_description = A Don't Starve Together server
cluster_password = YourPassword
cluster_intention = cooperative

Palworld

Palworld — PalWorldSettings.ini
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(
  ServerPlayerMaxNum=32,
  ServerName="My Palworld Server",
  ServerDescription="Welcome",
  AdminPassword="YourAdminPassword",
  ServerPassword="YourServerPassword",
  PublicPort=8211,
  PublicIP="",
  RCONEnabled=true,
  RCONPort=25575
)
Palworld — startup (Linux)
./PalServer.sh \
  -port=8211 \
  -players=32 \
  -useperfthreads \
  -NoAsyncLoadingThread \
  -UseMultithreadForDS

Common Errors and How to Fix Them

SteamAuthError / "Steam Auth Failed" when connecting

This error appears in the server console or in the client's connection dialog when Steam cannot validate the server's identity. The causes in order of frequency:

CauseFix
No GSLT configured at all Add +sv_setsteamaccount YOUR_TOKEN to your startup command and restart the server.
Token expired (unused for 30+ days) Go to steamcommunity.com/dev/managegameservers, find the expired token, and click "Regenerate token". Update the token in your server config and restart.
Token invalidated by password change If you recently reset your Steam password, ALL your GSLTs are automatically regenerated and the old values are invalid. Go to the management page, copy the new token values, update your server configs, and restart.
Wrong App ID used when creating the token Delete the token, create a new one with the correct base game App ID from the table above. The GSLT page shows which App ID each token was created for — verify it matches your game.
Account became limited or community banned All tokens from a banned or limited account stop working. Create tokens on a different, eligible Steam account.

Steam error code 6 — players keep getting disconnected

Error code 6 in the server console (Connection to Steam servers lost. (Result = 6)) means the same GSLT is being used by two servers simultaneously. Steam kicks all clients from both servers when it detects duplicate token usage. The fix is always the same: create a new, unique GSLT for each server on the management page and restart both servers with their own tokens.

Server starts but does not appear in the community server list

Token errors are only one possible reason. Check in this order: Is the GSLT valid and correct in the config? Is the server publicly reachable on the required UDP port? Is sv_lan 0 set (for Source engine games — this must be 0 for internet-facing servers)? Is there a firewall rule blocking the port? If you are behind CGNAT, port forwarding may not work at all regardless of your router settings — see the CGNAT section below.

"Invalid or expired token" at server startup

The server refuses to start and logs this error when the token value in the config is wrong, expired, or belongs to the wrong game. Regenerate the token on the management page, verify you are using the correct base game App ID, copy the new token carefully (no extra spaces), and update your config. The server startup log prints the authentication result — check for "Logged into Steam" or a specific error code to confirm whether authentication succeeded.

Required Ports by Game

GameGame portQuery/RCON portProtocol
Counter-Strike 2 27015 27015 (query on same port) UDP
Team Fortress 2 27015 27015 UDP + TCP (RCON)
Garry's Mod 27015 27015 UDP + TCP (RCON)
Left 4 Dead 2 27015 27015 UDP
Rust 28015 28016 (query), 28017 (RCON) UDP
Valheim 2456 2457 (query), 2458 (Steam) UDP
ARK: Survival Evolved 7777 27015 (query), 32330 (RCON) UDP
Don't Starve Together 10999 10998 (secondary shard) UDP
Palworld 8211 25575 (RCON) UDP

The CGNAT Problem: When Port Forwarding Simply Does Not Work

A GSLT token is only half of the equation. For players to actually connect to your server, the game's UDP port must be reachable from the public internet. This is where CGNAT (Carrier-Grade NAT) stops many home server setups cold.

CGNAT means your ISP assigns you a private IP address shared with hundreds of other customers. You do not have your own public IP address. When you configure port forwarding on your router, it has no effect — the forwarding stops at your ISP's NAT layer, which does not know to forward traffic specifically to you.

The error pattern is consistent: everything looks correct locally, the GSLT is valid, the server starts successfully and logs "Logged into Steam" — but players outside your home network cannot connect. The server may appear in the list (because the GSLT registration works), but connection attempts time out.

How to check if you are behind CGNAT

Open a command prompt and run tracert 1.1.1.1 (Windows) or traceroute 1.1.1.1 (Linux/macOS). If you see one or more hops with IP addresses in the 100.64.x.x range before reaching the public internet, you are behind CGNAT. Alternatively, compare the IP shown on whatismyip.com with your router's WAN IP in its admin interface — if they differ, you are behind CGNAT.

The solution: a UDP tunnel

A UDP tunnel bypasses CGNAT entirely. Your machine establishes an outbound connection to a tunnel service, which gives you a public address. Players connect to that address, and traffic is forwarded through the outbound tunnel to your server. CGNAT is irrelevant because you are not relying on inbound connections — the tunnel was initiated from your side.

Localtonet supports raw UDP tunnels, which is essential for game servers. Most tunneling services (including Cloudflare Tunnel and ngrok) handle HTTP and TCP only — they cannot forward game server UDP traffic. Localtonet's UDP tunnel mode forwards the actual game protocol packets without modification.

1

Install Localtonet on your server machine

Linux
chmod +x localtonet
sudo mv localtonet /usr/local/bin/
sudo localtonet authtoken YOUR_TOKEN
2

Create a UDP tunnel for your game's port

In the Localtonet dashboard: Protocol = UDP, Local IP = 127.0.0.1, Local Port = your game's port. Examples:

GameLocal portProtocol
CS227015UDP
Rust28015UDP
Valheim2456UDP
ARK7777UDP
Palworld8211UDP

After creating the tunnel, Localtonet gives you a public address in the format address:public_port. This is the address your players will use to connect.

3

Install Localtonet as a service for auto-start

Linux
sudo localtonet --install-service --authtoken YOUR_TOKEN
sudo localtonet --start-service --authtoken YOUR_TOKEN

The tunnel now starts automatically on every boot. Share the Localtonet address with your players — it stays the same across restarts.

Keeping Your Tokens Working: Maintenance Notes

SituationWhat happens to your tokensAction required
Server unused for 30+ days Token expires automatically Go to management page, click Regenerate on expired tokens, update server config, restart server
You reset your Steam password ALL tokens are immediately invalidated and regenerated with new values Copy all new token values from management page and update every server config file
Steam Support resets your password Same as above — all tokens regenerated Same as above
A server using one of your tokens gets a plugin ban That token is banned; depending on severity, all tokens on your account may be banned Only run Valve-approved plugins. Read plugin documentation before installing.
You move to a different machine or IP Token is still valid — GSLT is not tied to an IP address No action needed. Move the token config to the new machine and restart.

Frequently Asked Questions

Can I use the same GSLT token on two different servers?

No. Each running server must have its own unique GSLT. If you run the same token on two servers simultaneously, Steam detects the conflict (error code 6) and disconnects players from both servers. You can move a token from one server to another (as long as the old server is stopped first), but you cannot run them at the same time with the same token. Create a separate token for each server you run.

Do I need to own the game to create a GSLT for it?

Yes for most games. Steam requires your account to own the game before you can create a login token for its server. TF2 and CS2 are free to play so this requirement is effectively waived for those titles. For Rust, ARK, Garry's Mod, and other paid games, you need the game in your library. Using a separate Steam account specifically for server administration (with the game purchased on that account) is a common and recommended practice — this way your main gaming account is not at risk if something goes wrong with a server token.

My server shows up in the server list but players get a timeout when trying to connect

This is the classic CGNAT symptom. The GSLT registration worked (so the server appears in the list), but actual game traffic cannot reach your machine because you do not have a reachable public IP. Check with a traceroute whether you are behind CGNAT. If you are, a UDP tunnel like Localtonet is the solution — it gives your server a public address that actually routes to your machine regardless of what your ISP does with NAT.

I changed my Steam password and now none of my servers authenticate

This is expected behavior. Steam automatically regenerates all GSLTs when you change your password, as a security measure to prevent someone who had temporary access to your account from continuing to use your server tokens. Your old token strings are now invalid. Go to the management page, copy the new token values (each token now has a new string), and update every server config file with the new values. Restart all servers. If you run many servers, this is a good reason to keep a spreadsheet of which token goes to which server.

CGNAT Blocking Your Game Server? A UDP Tunnel Solves It.

Localtonet supports raw UDP tunnels for game servers — CS2, Rust, ARK, Palworld, and more. Get a stable public address for your server in under two minutes, no port forwarding or static IP required.

Create Your Free Tunnel →

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support