--- title: "How to Find a Player's SteamID (Live and From Logs)" excerpt: "Pull a player's SteamID live with status and amx_who, extract it from server logs, understand the non-Steam cases, and use it to ban with persistence." category: "administration" tags: "steamid, logs" image: "" read_time: "8 min read" ---
Almost every moderation action on a CS 1.6 server starts with one thing: the offender's SteamID. You need it to ban the person rather than a name they can change or an IP they share with an ISP. This covers getting the ID while they are connected, digging it out of the logs after they leave, the non-Steam wrinkles, and turning the ID into a ban that survives a restart.
The fastest method. In the server console or over RCON:
status
Each connected player prints a block like:
# userid name unique team # 12 "Nova" STEAM_0:1:12345678 CT 45 67ms
The unique column is the SteamID (STEAM_0:x:yyyyyyyy), and the leading #12 is the userid — the transient slot number you use for kick and RCON commands during this session. The SteamID is the stable identity; the userid resets every map.
With AMX Mod X, an admin can run in chat or console:
amx_who
It lists every player with their name, SteamID (authid), current access flags and immunity. This is the admin-friendly version of status and it also tells you at a glance who else on the server has admin. It reads identities from configs/users.ini, the same file that defines your admin flags.
Server logs live in cstrike/logs/ as dated L*.log files, and every connect line carries the SteamID. Grep for the name or the action:
cd /home/steam/hlds/cstrike/logs grep -i "nova" L*.log
Connect and kill lines embed the ID in angle brackets:
"Nova<12><STEAM_0:1:12345678><CT>" killed "Ghost<9>..."
The three fields in the brackets are name, userid, and SteamID. Even if you missed the player live, the log has their ID as long as logging is on (log on, mp_logdetail 3 — see essential cvars).
SteamIDs are only trustworthy on a server that validates them. On a non-Steam server running Reunion or dproto, IDs depend on the client:
STEAM_ID_PENDING before resolving.0 vs 1 in STEAM_0:X: is the auth server digit and is part of the ID — do not "normalize" it away when banning.On a mixed server, treat the SteamID as the identity but keep the IP as a secondary signal for repeat offenders whose IDs you cannot trust.
Once you have the SteamID, ban it. With AMX Mod X the clean way is a command that writes the ban and boots them in one step:
amx_ban 30 "Nova" cheating // ban a connected player, 30 minutes amx_addban "STEAM_0:1:12345678" 0 cheating // ban by ID, 0 = permanent
At the engine level the same is done with banid, and the crucial second step is persistence:
banid 0 STEAM_0:1:12345678 writeid
writeid is what saves the ban to banned.cfg so it survives a restart; a banid without it evaporates on the next map or reboot. For IP bans the pair is addip / writeip, and listid / listip show the current lists. A menu-driven ban manager or the admin menu wraps all of this so you never fat-finger a raw banid.
banid without writeid (or addip without writeip). The ban was never written to disk.amx_ban says no such player — the player already disconnected; use amx_addban with the SteamID from the logs instead.#12) as if it were stable. It is a per-session slot; always ban the SteamID.SteamIdHashSalt and configuration; an IP ban may be the only reliable lever.log on and mp_logdetail 3 before you need it.Run status and confirm you can read the SteamID of everyone on the server. After banning, check the list persisted:
listid
The banned SteamID should appear. Restart the server and run listid again — if it is still there, writeid did its job and the ban is permanent. If it vanished, you skipped the write step.