Regions
Photon Cloud provides you with global connectivity to allow low latency gaming all around the world. This is done by hosting servers in various regions.
As the available regions may change over the lifetime of a project, clients get the current list of regions from our Photon Name Servers.
Each region is completely separate from the others and consists of a Master Server (for matchmaking) and Game Servers (hosting rooms).

The list of available regions differs per product (Fusion, Quantum, Chat etc.). With the Region Allowlist, you can further define which regions should be available for your clients.
Below is the list of regions for this product.
Contents
- Available Regions
- How To Choose A Region
- How To Select A Region At Runtime
- Using The Chinese Mainland Region
Available Regions
Photon Cloud has servers in several regions, distributed across multiple hosting centers over the world.
Each Photon Cloud region is identified by a "region token".
List of available regions and tokens:
Region | Hosted in | Token |
---|---|---|
Asia | Singapore | asia |
Australia | Melbourne | au |
Canada, East | Montreal | cae |
Chinese Mainland1 (See Instructions) | Shanghai | cn |
Europe | Amsterdam | eu |
India | Chennai | in |
Japan | Tokyo | jp |
South Africa | Johannesburg | za |
South America | Sao Paulo | sa |
South Korea | Seoul | kr |
Turkey | Istanbul | tr |
USA, East | Washington D.C. | us |
USA, West | San José | usw |
USA, South Central | Dallas | ussc |
Dashboard Regions Filtering
You can filter the list of available Photon Cloud regions per application on the fly directly from the dashboard.

Go to the dashboard and then click "Manage" for a chosen application and then click "Edit". You will find an input field where you can enter the list of allowed regions as follows:
- the allowlist should be a string of region tokens separated by semicolons. e.g. "eu;us".
- region tokens are case insensitive and are defined here.
- undefined or unrecognized region tokens will be ignored from the list.
- empty ("") or malformed string (e.g. ";;;") means empty list.
- empty list means all available regions are allowed.
Once you confirm and save, the NameServer will return only the filtered list of regions. Thus, clients should select from that list. Take into consideration that dashboard updates propagation can take up to 10 minutes.
How To Choose A Region
Users in the US have the lowest latency if connected to the Photon Cloud US region. Easy.
But what if you have users from all over the world?
You can
- a) let the game client ping the different Photon Cloud regions and pre-select the one with the best ping, read our how-to
- b) distribute client builds tied to a region, so users from different regions connect to different Photon Cloud regions or
- c) let the user choose a matching region from within your game`s UI.
Alternatively, you can d) let all users connect to the same region if the higher latency is acceptable for your gameplay, e.g. with any "not-so-realtime" games.
All Photon Cloud apps are working in all available regions without any extra charge. See pricing.
Photon Cloud's dashboard lets you monitor the usage of your game in each region and easily upgrade or downgrade your subscription plan. Go to your dashboard.
How To Select A Region At Runtime
If you are not using the Best Region
option, you may want to let your players choose which region to connect.
This can help to lower the ping between players if they are connecting to a common near region or just want to join a session with friends that are playing on a specific region.
The region selection can only be done when Photon Bolt is not running and must be executed before you initialize the PhotonPlatform
.
We dispose of a list of available regions predefined in the UdpKit.Platform.Photon.PhotonRegion
class, that you can use for listing the regions.
In the following snippet, we show how you can change the target region in runtime:
public class Menu : Bolt.GlobalEventListener
{
// Target Region
private static int currRegion = 0;
// List of available Regions
private PhotonRegion.Regions[] availableRegions = new PhotonRegion.Regions[]
{
PhotonRegion.Regions.US,
PhotonRegion.Regions.USW,
PhotonRegion.Regions.JP,
PhotonRegion.Regions.EU,
PhotonRegion.Regions.SA
};
private void UpdateRegion()
{
if (BoltNetwork.IsRunning == false)
{
// Get the current Region based on the index
var targetRegion = PhotonRegion.GetRegion(availableRegions[currRegion]);
// Update the target region
BoltRuntimeSettings.instance.UpdateBestRegion(targetRegion);
// Log the update
Debug.LogFormat("Update region to {0}", targetRegion.Name);
// Next time we use the next region
currRegion++;
// Go back to 0
if (currRegion == availableRegions.Length)
{
currRegion = 0;
}
// IMPORTANT
// Initialize the Photon Platform again
// this will update the internal cached region
BoltLauncher.SetUdpPlatform(new PhotonPlatform());
}
else
{
BoltLog.Error("Bolt is running, you can't change region while runnning");
}
}
}
As you can see, every time we call UpdateRegion()
, it will pick the next region on the list availableRegions
, and use the method BoltRuntimeSettings.instance.UpdateBestRegion
to update the region to be used.
Keep in mind, that you need to reinitialize the platform, as the region is cached, and will not change if you don't recreate it.
Using The Chinese Mainland Region
The Photon Name Server has to be local to China, as the firewall might block the traffic otherwise. The Chinese Photon Name Server is "ns.photonengine.cn".
Connecting with clients from outside of China mainland will most likely not produce good results. Also, connecting from the Photon servers to servers outside of China mainland (e.g. for Custom Authentication, WebHooks, WebRPCs) might not be reliable.
Also, for legal reasons, you need a separate build for China and we recommend using a separate AppId with it. For example, use a compile condition (of your choice) to change the AppId and the Photon Name Server depending on the build.
Follow the instructions corresponding to your client SDK to make a special build for the Chinese market.