Steamworks Rich Presence Setup
This section explains how to configure Rich Presence localization in Steamworks so that Rich Presence text can be displayed correctly in the Steam client.
Rich Presence in Steam always relies on localized text templates defined in Steamworks and cannot display raw text sent directly from code.
Navigating to Rich Presence Localization Settings
Rich Presence localization is configured in the Steamworks dashboard for your application.
To access Rich Presence localization settings:
- Open the Steamworks dashboard and select your application
- Open the application checklist and navigate to Edit Steamworks Settings
- Open the Community section and Select Rich Presence
Uploading a Rich Presence Localization File
Steam Rich Presence does not display text sent directly from code.
All Rich Presence text shown in the Steam client is generated by Steam itself using localized text templates uploaded in Steamworks.
Without a localization file, Rich Presence will not be displayed at all, even if presence keys are set correctly from the game.
To enable Rich Presence:
- Create a Rich Presence localization file
- Upload it in the Rich Presence Localization section of Steamworks
- Save the changes
- Publish the changes at the application level
Rich Presence becomes available only after the localization file has been uploaded, saved, and published.
What the Localization File Does
The localization file defines text templates, not final text.
These templates describe how Rich Presence should look, while the actual values are provided by the game at runtime.
Steam combines:
- A localization token (selected via
steam_display) - One or more placeholder values (set as regular presence keys)
to construct the final Rich Presence text shown to players.
Localization File Structure
Rich Presence localization uses a strict text-based format defined by Steam.
At a high level, the file contains:
- A single root block
- One or more language sections
- A list of localization tokens inside each language
Example structure:
"lang"
{
"english"
{
"tokens"
{
"#Status_Default" "%status%"
"#Status_InGame" "Playing %mode%"
"#Status_InLobby" "In Lobby"
}
}
}
How this structure is interpreted:
- Each entry starting with
#is a localization token - A localization token represents one possible Rich Presence layout
- The text associated with a token is a template, not final text
- Placeholders are values wrapped in
%characters (for example%status%or%mode%) and are replaced at runtime with values provided by the game.
The game never displays these strings directly. It only selects which localization token to use via steam_display and supplies values for the placeholders.
Localization Tokens and Placeholders
Localization tokens:
- Always start with the
#prefix - Represent a selectable Rich Presence template
Placeholders:
- Are written inside the localization template
- Are replaced at runtime with values provided by the game
Important rules:
- Localization tokens are never displayed directly
- Presence keys other than
steam_displayare never shown on their own - All visible text always comes from the localization file
How the Game Uses Localization
At runtime, the game sets Rich Presence values using the Steam API.
This always includes:
- Setting one or more presence keys that represent dynamic values
- Setting the
steam_displaykey to select which localization token to use
If steam_display is not set, Rich Presence will not appear at all.
Steam then:
- Looks up the selected localization token
- Replaces all placeholders using the provided presence values
- Displays the final text in the Steam client
The application never controls the final rendered string directly.
Updating Localization Files
Updating the Rich Presence localization file:
- Does not require uploading a new game build
- Does require saving and publishing changes in Steamworks
If changes are uploaded but not published, Rich Presence will continue using the previous configuration.
Official Steamworks Documentation
For a full description of Rich Presence behavior and advanced features, refer to the official Steamworks documentation.
Common Configuration Mistakes
- No localization file uploaded
- Localization file uploaded but not published
steam_displaykey not set at runtime- Localization tokens missing the
#prefix - Tokens defined but never referenced by
steam_display - Placeholders defined but corresponding presence keys not set