Skip to content

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.


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_display are 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_display key 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_display key 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