A lightweight, memory-efficient tool to automatically idle your Steam games and collect hours, cards, and achievements — built with C# and SteamKit2.
by SyntX
|
Idle multiple Steam games simultaneously. Just list their AppIDs and let the tool handle the rest. |
Configurable idle limits (default: 10 hours) with automatic cooldown breaks (default: 30 minutes) to prevent infinite sessions. |
|
Log in once. Steam refresh tokens are saved securely and reused — no need to re-enter your password or Steam Guard codes for weeks. |
Automatically reconnects on network interruptions with exponential backoff (up to 5 attempts). No memory leaks, no infinite loops. |
|
Fetches and displays game names and achievement progress every 30 minutes. Track your collection in real-time. |
Receive chat messages, send replies, and configure automatic responses while idling. Chat log is saved to a text file. |
|
Choose between a full-featured graphical interface (Windows Forms) or a lightweight CLI version. |
Track idle duration per game with session statistics displayed every hour. Monitor your progress at a glance. |
Screenshots coming soon
- .NET 8.0 SDK or later
- A Steam account with games in your library
Grab the latest release from the Releases page. Pre-built binaries are available for Windows x64.
git clone https://github.com/SyntX34/SteamIdler.git
cd SteamIdler/SteamIdler
# Build CLI version
dotnet build CLI/SteamIdler.csproj -c Release
# Build GUI version
dotnet build GUI/SteamIdlerGUI.csproj -c Release
dotnet publish CLI/SteamIdler.csproj -c Release -r win-x64 --self-contained true -o ./publish/cli
dotnet publish GUI/SteamIdlerGUI.csproj -c Release -r win-x64 --self-contained true -o ./publish/gui
On first launch, a config.json file is created automatically. Edit it with your Steam credentials:
{
"username": "your_steam_username",
"password": "your_steam_password",
"refresh_token": "",
"auto_reply_message": "Hey! I'm currently idling Steam games and can't chat right now.",
"auto_reply_enabled": true,
"max_idle_hours": 10.0,
"cooldown_minutes": 30.0
}
| Setting | Default | Description |
|---|---|---|
username |
"" |
Your Steam account username |
password |
"" |
Your Steam account password |
refresh_token |
"" |
Automatically saved after first login for persistent sessions |
auto_reply_message |
"Hey! I'm currently idling..." |
Auto-reply message sent to friends who message you |
auto_reply_enabled |
true |
Enable or disable automatic chat replies |
max_idle_hours |
10.0 |
Maximum consecutive idle hours before a cooldown is triggered |
cooldown_minutes |
30.0 |
Cooldown duration in minutes after reaching max idle hours |
Create a games.txt file in the same folder as the executable. Add one Steam AppID per line. Lines starting with // are treated as comments.
730 // Counter-Strike 2
570 // Dota 2
440 // Team Fortress 2
252950 // Rocket League
While the CLI version is running, you can use these commands:
| Command | Description |
|---|---|
quit |
Stop idling and exit the program |
friends |
Display your Steam friends list with names, IDs, and statuses |
msg <SteamID64> <message> |
Send a direct chat message to a friend by their 64-bit Steam ID |
- Dashboard — Connect, stop, manage game list, and view a live log of all activity
- Friends — Browse your Steam friends list and double-click to start a chat
- Chat — Send and receive messages in real-time
- Settings — Update your credentials, auto-reply message, and manage saved session tokens
Steam Game Idler is designed to be lightweight:
- Single callback pump — Only one Steam client callback loop runs at any time
- Guarded reconnection — Prevents cascading reconnect tasks that could consume gigabytes of memory
- Max 5 reconnect attempts — Stops retrying after 5 failed attempts with exponential backoff
- Throttled logging — Repeated disconnect/connect messages are rate-limited to prevent log spam
- Proper resource cleanup — Old SteamClient objects and callback pumps are fully disposed before creating new ones
Steam's authentication system supports long-lived refresh tokens. When you log in with IsPersistentSession = true, the tool saves your refresh token to config.json. On subsequent launches, you can idle immediately without entering a password or Steam Guard code — the token is valid for weeks or longer.
If a token expires or is revoked, the tool automatically falls back to password-based authentication and saves a fresh token.
| Project | Target | Command |
|---|---|---|
| CLI | net8.0 |
dotnet build CLI/SteamIdler.csproj -c Release |
| GUI | net8.0-windows |
dotnet build GUI/SteamIdlerGUI.csproj -c Release |
- SteamKit2 — .NET Steam protocol library
- Newtonsoft.Json — JSON serialization
This project is open source under the MIT License. See the LICENSE file for details.
This tool is not affiliated with Valve Corporation or Steam. Use at your own risk. Idling Steam games for card drops and hours is allowed under Steam's terms of service, but automated interactions may be subject to Steam's API usage policies.