🇺🇸 United States · English ← Edition home
Roblox

Roblox Scoped User IDs: What Creators Need to Know About the Privacy Update

For readers in the United States

Author: Shivam Das · Independent coverage. Corrections / Contact

Roblox is changing how experiences identify players. Instead of relying on one platform-wide identifier in every game, its domain-scoped identity system is designed to give a player a different effective user ID in each experience or app. The goal is to make it harder to connect a person's activity across unrelated games using an ID alone.

Quick answer: Roblox's Player.User property and User data type give developers an identity value that carries its domain context. Returning players can keep their existing global ID in an experience, while players who first join after scoped IDs are enabled for that experience can receive an ID scoped to that domain. Roblox's documentation and rollout updates should be checked before treating the change as universally active: the company said in September that it was delaying the wider rollout while it worked through creator concerns about moderation and cross-game workflows.

Roblox Creator Hub example showing different effective user IDs for the same player in separate experiences
Roblox's documentation example shows how one player can have a different effective ID in separate experiences, while a returning player can retain an existing global ID in a game. Source: Roblox Creator Hub / Developer Forum.

What are Roblox Scoped User IDs?

A global Roblox User ID has traditionally been used to identify an account across the platform. That consistency is useful for developers, but it can also make it easier for systems to correlate the same player across different experiences when they share or process the identifier.

Scoped User IDs are designed to limit that cross-experience linkability. A player's effective ID is associated with a specific domain, such as an individual Roblox experience, a Roblox group, or an OAuth application. The same account can therefore have one effective ID in Game A and a different one in Game B. The identifier is meaningful only when paired with its domain context.

This is not the same as creating a new Roblox account for every game. A player still signs in with the same Roblox account, keeps their platform identity, and uses normal Roblox features. The change concerns the identifier exposed to a particular game or connected app.

How the scoped identity system works

Each experience has its own identity space

Imagine a player visits three experiences. In an experience they played before scoped IDs were enabled, the game may continue to see the player's existing global ID. In two other experiences where the player is treated as a post-rollout user, each game can see a different domain-scoped ID. Those IDs remain stable within their own domain, but an ID from one experience should not be treated as a universal account identifier in another.

Returning players are handled differently

Roblox's documentation explains that players who joined an experience before its scoped-ID rollout keep their original global ID in that experience. This is intended to protect existing player data, including saved progress, inventories, and leaderboard records. A player who first joins after the rollout for that experience can receive a scoped ID instead.

IDs need their domain context

A numeric ID alone is no longer a safe cross-game key. Roblox's User value includes the effective ID, domain type, and domain ID. When an identifier must move between systems or domains, developers should preserve that context rather than sending only the integer.

What is Player.User, and should developers use it?

Player.User is a read-only property that returns a User value representing the player's identity in the current experience. Roblox recommends using this property as the standard identity value in new game code. The User value exposes properties such as Id, DomainType, and DomainId.

A simple example is to read the identity when a player joins:

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
    local user = player.User

    print("Effective user ID:", user.Id)
    print("Domain type:", user.DomainType)
    print("Domain ID:", user.DomainId)
end)

For an in-experience operation, APIs that accept user IDs can also accept a User value. Roblox's documentation recommends passing player.User where supported, rather than extracting an integer and losing its context.

-- Recommended: pass the domain-aware User value
local Players = game:GetService("Players")
local target = Players:GetPlayerByUserId(player.User)

-- Numeric user IDs remain supported by APIs that accept them
local otherTarget = Players:GetPlayerByUserId(someUserId)

What should happen to DataStores and saved player progress?

For a DataStore key that is used only inside one experience, Roblox documents using the effective ID within that same domain. Existing players who joined before the rollout keep their previous ID in that experience, which is intended to preserve existing keys.

local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, playerData)

The important distinction is where the value will be read. A numeric effective ID is appropriate for a key that stays inside the same game domain. If another experience, an OAuth app, or an external moderation tool needs to interpret the identity, the domain context must travel with it.

Roblox provides User:ToString() and User.fromString() for serializing and restoring a domain-aware identity:

-- Store the complete domain-aware identity
local encodedUser = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encodedUser)

-- Restore it later
local restoredUser = User.fromString(encodedUser)

Using a bare integer from one domain to identify a player in another can point to the wrong account. Developers should audit external databases, analytics pipelines, support dashboards, and moderation tools for assumptions that every numeric User ID is globally meaningful.

What changes for cross-game progression and shared moderation?

Scoped IDs create a real design challenge for game groups that intentionally share player progress, gifts, inventories, or moderation decisions. If two experiences see different scoped IDs for the same Roblox account, they cannot safely match those records by comparing the numbers alone.

Roblox's original announcement described an account-linking flow in which a player can give permission for one experience to resolve their identity in another. The company also discussed improvements to the Ban API to support shared moderation across experiences. These are important safeguards: privacy controls should not accidentally make it impossible for creators to enforce legitimate safety decisions across a connected game universe.

Creators should not build their own hidden cross-game tracking workaround. Roblox explicitly warns against trying to identify or track players across experiences without consent through fingerprinting, device signals, or similar methods. Use supported account-linking and moderation tools when Roblox makes them available for the relevant workflow.

Is Roblox Scoped User ID rollout live in November 2026?

Roblox first announced early testing in June 2026 and initially outlined a broader rollout for October. On September 1, Roblox posted an update saying it had heard creator concerns about the implementation and its effect on moderation, was doing more outreach, and would share an updated solution and timeline in October.

As of November 5, 2026, Roblox's official documentation explains the domain-scoped identity model and the Player.User API, but the rollout status has not been presented consistently across every official documentation surface. The indexed Creator Hub guidance has continued to describe the broad rollout as not yet complete, while the current API documentation explains how domain-scoped values work. The safest interpretation for developers is that the API and migration guidance are available, but creators should confirm the latest rollout notice for their own experience before assuming every new player is already receiving a scoped ID.

In practical terms, do not announce that every Roblox game has fully switched over unless Roblox publishes a clear confirmation. Check the official announcement thread and the Creator Hub documentation for the latest rollout and migration instructions.

What Roblox developers should do now

  • Use Player.User in new code. Prefer the domain-aware User value for identity-related engine APIs that support it.
  • Keep in-game IDs in their own domain. Do not reuse a numeric ID from one experience as a global key in another.
  • Preserve domain context. Use ToString() and fromString() when an identity needs to cross system boundaries.
  • Audit integrations. Review analytics, external databases, support tools, ban lists, and account-linking workflows for global-ID assumptions.
  • Protect returning players' data. Test saved progress and migration behavior with accounts that joined before and after the rollout in a test experience.
  • Use consent-based linking. Do not attempt to recreate a cross-game identity graph through fingerprinting or device tracking.
  • Follow official rollout notices. Do not rely on an old October target date if Roblox has since changed the schedule.

Frequently asked questions

Does every Roblox game give a player a different User ID?

That is the purpose of Scoped User IDs for post-rollout users: the same player can have a different effective ID in each experience. Returning players in a game they joined before that game's rollout can keep their existing global ID there.

Will players need to create a new Roblox account?

No. Scoped IDs change how a game or app identifies a player in its own domain. Players continue using their existing Roblox accounts.

Will existing DataStore keys stop working?

Roblox says returning players keep their existing global ID within an experience they joined before the rollout, helping preserve existing DataStore keys. Developers should still test their own integrations and avoid assuming a numeric ID is portable between domains.

Is Player.User replacing Player.UserId?

Roblox recommends Player.User as the standard domain-aware identity value in new code. The numeric Player.UserId field continues to return the effective ID for that player in the current domain, so existing code that reads the numeric field does not automatically need a branching rewrite.

Can developers use scoped IDs to track someone across games?

No. The design is intended to reduce cross-game correlation. Roblox says tracking players across experiences without consent through fingerprinting, device signals, or similar methods violates its rules.

Where can developers find the official implementation details?

Use the Roblox Creator Hub pages for Users and scoped user IDs, the User data type reference, and the official Scoped User IDs announcement.

Official sources

By Shivam Das

Back to top