Overview
Rich Presence allows you to display detailed information about what players are doing in your game. Users can see this information in their Discord profile and friends list and use it to join their friends’ games with Game Invites.Prerequisites
Before you begin, make sure you have:- Set up the Discord Social SDK
- Connected to Discord with a valid client instance
Rich presence requires at minimum the
openid sdk.social_layer_presence scopes. Use Client::GetDefaultPresenceScopes in your authorization flow.Understanding rich presence
Rich Presence, known as “Activity” in the SDK and gateway events, represents the current activity of a user. It is not the same as Discord Activities, which are embedded games.While several
ActivityTypes are supported, games should use ActivityTypes::Playing. The SDK automatically associates the activity with your game, so the name field always shows your game’s name.Activity object contains:
| Field | Description | Purpose |
|---|---|---|
type | Activity type | What the player is doing (e.g., “Playing”) |
details | What the player is doing | Main description line (e.g., “Playing Capture the Flag”) |
state | Their current status | Secondary status line (e.g., “In a group”) |
party | Party information | Shows party size and capacity (e.g., “2 of 4”) |
timestamps | Activity duration | Shows elapsed or remaining time |
assets | Custom artwork | Game/map thumbnails and character icons |
secrets | Join/spectate tokens | Enables game invite functionality |
supportedPlatforms | Platform flags | Controls where join buttons appear |
Layout of rich presence in Discord
- Line 1 is powered by your Discord application’s name.
- Line 2 (
details) describes what the player is doing. You can include dynamic data like a match score. - Line 3 combines the
statefield (“In a group”) and thepartyfield (“(2 of 3)”).
For tips on designing Rich Presence, see the Rich Presence best practices guide.
Setting details and state
Setting timestamps
Show how long the player has been in their current activity or how long until the match ends:Uploading and setting assets
Upload custom art assets for your app in the Rich Presence settings in the Developer Portal. Assets should be 1024x1024. Up to 300 custom assets can be added.Asset keys are automatically lowercased when saved. Keep this in mind when referencing them in code.
Setting clickable URLs
Make thedetails, state, and asset image fields into clickable links:
Configuring status text
By default, rich presence displays your game’s name in the user’s status text. Override this:Setting party and join secret
Include party details and a join secret to enable Game Invites. See the [Managing Game Invites guide](/developers/discord-social-sdk/development-guides/managing-lobbiesSetting supported platforms
Control where join buttons appear in Discord:ActivityGamePlatforms enum in the SDK reference for all supported platform values.
Rich presence without authentication
Unlike most SDK features, rich presence can be set without full OAuth2 authentication. The SDK communicates directly with a running Discord desktop client via RPC. Requirements:- Discord desktop client must be running on the user’s machine
- Your application must have a valid Application ID
Next steps
Managing game invites
Allow players to invite friends to join their game session or party.
Managing lobbies
Bring players together in a shared lobby with invites, text chat, and voice communication.
Creating a unified friends list
Build a combined Discord and game friends list.
Change log
| Date | Changes |
|---|---|
| March 17, 2025 | Initial release |