Roblox's system design

0/2
☰
Roblox · system design

Roblox runs on its own hardware: matchmaking drops you into a game server in one of 24 edge data centers, core data centers (two in 2025, a third being added in 2026) run everything shared, and HashiCorp's Nomad, Consul and Vault sit under all of it.

+ The whole system in one paragraph

Roblox is a platform of games its users make. When you press Play, matchmaking picks the best live server, friends first, in one of 24 edge data centers near you, and that server runs the game for everyone in it. Shared things like Robux, publishing and safety live in core data centers, all on Roblox's own hardware.

123M
daily active users, Q2 2026 average — up 10% from Q2 2025[12]
45M+
users at the same moment — the record, Aug 23, 2025[10]
24
edge data centers that run the game servers (2025)[3]

In this lesson

2 chapters · ~8 min · a quick check in each

Everything is on this page — just scroll down ↓

Chapter 1 of 2

The whole system

1
Requirements

What it must do — and how well

Yellow = what playing must do; blue = how well. 'Herd' = millions joining one game at once: 21M+ in June 2025, 25M later that year.

ⓘ Details & sources

Yellow = what the system must do. Blue = how well it must do it.[4][6][7][8][3][2][1]

Press Play, land ina live server inseconds. No lobby.Put you with yourfriends, on a servernear you.One authority perserver: everyonesees the same world.Your progressfollows you to anyserver.Absorb herds: 21M+players rushing onegame.Never tell creatorsto slow theirupdates down.Goal: 99.99% useruptime, every month.Low latency at lowcost, on its ownhardware.
2
Architecture

Roblox, on one page

Games run on servers in 24 edge data centers near players; shared things — Robux, publishing, safety — live in core data centers. Under it all: HashiCorp's Nomad, Consul and Vault.

ⓘ Details & sources

Left: you and the edge, where games run. Middle: the core. Right: the HashiStack under everything. Click any piece; play a flow.[3][1][4][22][20]

Watch it happen:
Edge — where games runCore data centersHashiStackjoin1play21your server2at peaks3reportschat4save4reads4on a miss45registers5relies on5downloadpublishapproved assetsYouthe Roblox appGame serverruns one place · authorityCloud edge cellsrented for big peaksData storesyour saved progressSafety filterschat: 250K req/sServer indexlive, every few secMatchmakingscores, picks yoursDatabasesthe source of truthCaches1B req/s (2021)Core servicesweb, economy, recsNomadplaces containersConsulwho is where + KVVaultthe secretsAsset CDNmeshes, texturesCreatorsRoblox Studio
clientedge / CDNserviceworkercachedatabase dashed border = simplified model
12345
Step 1 of 5

You press Play. The join goes to matchmaking, in Roblox's core data centers, which scans a live index of every server of that experience.

4
Sequence

What happens when you press Play

Pressing Play: matchmaking skips servers that are full, private or reserved, scores the rest from a live index, and your app connects straight to the winner. No lobby.

ⓘ Details & sources

From click to inside the world, without a lobby — matchmaking's own steps, from Roblox's docs and engineering posts.[4][5][6][7][8]

Game serverServer index1. I'm running: place, players, loadYouMatchmaking2. Join this experienceMatchmakingServer index3. Every live server of this place?Matchmaking4. Filter out full ones; score the restMatchmakingYou5. Go to the top-scoring serverYouGame server6. ConnectGame serverYou7. Copy of the world, nearest parts firstGame serverData stores8. Load this player's saved dataYouGame server9. Inputs up, world updates down

9 steps. Follow the flow one step at a time — what happens first, and what comes next.

5
State machine

The life of a game server

Matchmaking fills a server to a preferred size below the creator's maximum. It shuts down when the last player leaves, an update replaces it, or a few other reasons.

ⓘ Details & sources

From Roblox's docs: how full a server gets, and every reason it shuts down.[4][50][5][16][51][52][23]

first playerpreferred sizeempty, updateafter ≤ 30 sStartedwhen no server has room1FillingPlay, friends, teleports2Full for Playpreferred size reached3Shutting down≤ 30 s to save4Goneplayers matched elsewhere5

5 steps. Follow the flow one step at a time — what happens first, and what comes next.

Curious? Go deeper+ 6 optional
3
Architecture

Before Play: finding a game, and your friends

A personalized Home feed, search and charts pick the game, ranked by 28 days of player behavior; matchmaking prefers servers with your friends. Big games split into places you teleport between.

ⓘ Details & sources

Left: how you pick a game. Middle: matchmaking and your friends. Right: the server you land on, and the places it can teleport you to. Dotted = not public.[47][48][15][49][6][5][16][54][4]

Watch it happen:
Home1search3Discover3ranks2Playyour friendsjoinevents4who's whereteleportYouopen the appHome feedRecommended for YouSearchsemantic, by intentChartstop and trendingPlay signals28 days of behaviorMatchmakingfriends weigh 15Friendslist + presenceGame serverone place of a gameAnother placesame game, new server
clientserviceworkerdatabase dashed border = simplified model
1234
Step 1 of 4

Every session starts on Home. Its 'Recommended for You' row works in two stages: retrieval picks a subset of games you might enjoy, ranking orders them for you.

6
Architecture

From Studio to every device

The place is saved as a version in the cloud; each mesh, image and sound is uploaded once, moderated, and served from a CDN in the quality each device can take.

ⓘ Details & sources

Top row: an asset's journey. Middle: a place's versions. Bottom: how both reach your device. Play the three flows.[22][23][24][21][34][25][19][18][20]

Watch it happen:
import1review2approved3publishlatest versionjoinsoriginalscachedassetsworldCreatorRoblox StudioAsset uploadmesh, image, audioModerationAI + humans · hoursAsset storeone ID per assetPlace versions.rblx in the cloudMatchmakingskips outdated serversCloud transcodingper device, on demandGame serverstreams nearby partsYour deviceHarmony picks qualityCDNcached copies
clientedge / CDNserviceworkerstorage dashed border = simplified model
123
Step 1 of 3

A creator imports a mesh, an image or a sound with Studio's Asset Manager or 3D Importer. Almost everything in Roblox is a cloud asset with its own ID.

7
Architecture

Where a Robux goes

You buy Robux through an app store or the web; a purchase in a game or the Marketplace splits them between creators, the game and Roblox. Dashed box = not public.

ⓘ Details & sources

Left: you buy Robux. Middle: you spend them. Right: who gets paid, and how creators cash out. Dashed box = Roblox doesn't publish how it's built.[30][26][28][27][11][31][55][56]

Watch it happen:
buy Robux1credit1spend2in a game2an item70%330%3platform30%+40% in-gamecash outPaymentsapp stores, webYoubuy, then spendRobux ledgerevery balancemodelA gamepasses, productsRobloxplatform shareMarketplaceavatar itemsGame creator70% of in-game salesDevEx$0.0038 per RobuxItem creator30% to 70% of a sale
clientservicedatabaseexternal dashed border = simplified model
123
Step 1 of 3

You buy Robux through an app store, a console, the web or a gift card. Apple and Google keep up to 30% of what you pay; in 2025, 29% of Roblox's revenue came through Apple's App Store and 15% through Google Play.

8
Sequence

Buying 100 gold, exactly once

Money and game data live in different systems. Roblox holds your Robux in escrow; the game grants the gold and records a unique PurchaseId, so a retry never pays out twice.

ⓘ Details & sources

A developer product (an item you can buy again and again), step by step, from Roblox's ProcessReceipt docs — the game makes sure you get the gold only once.[29][8][55][56]

YouRoblox backend1. Buy 100 goldRoblox backend2. Charge; hold the Robux in escrowRoblox backendGame server3. ProcessReceipt(PurchaseId)Game serverData store4. UpdateAsync(PurchaseId)Data storeGame server5. Granted before? Then skipGame serverData store6. Not yet: +100 gold, mark grantedGame serverRoblox backend7. PurchaseGrantedRoblox backendGame server8. No answer? Again when you rejoin

8 steps. Follow the flow one step at a time — what happens first, and what comes next.

9
Pipeline

One jacket, from a 3D tool to every screen

On Roblox an avatar is just a list of asset IDs. One jacket's trip from a creator's 3D tool to every screen: auto-rigged, moderated, sold, worn, built by the game server, fitted.

ⓘ Details & sources

How an avatar item is made, sold and worn — from Roblox's docs and engineering posts, 2022–2026.[39][45][28][34][41][42][40][43][44][20]

Model itBlender, Maya → Importer1autoAvatar Setuprig, skin, cage, face2uploadCheckedID, 80-Robux fee, moderation3publishOn saleMarketplace + inside games4RobuxBought30% creator · 40% game · 30% Roblox5equipWorna list of asset IDs6joinBuilt on joinby the game server7CDNFittedcages wrap any body8Face alive~50 FACS controls, on device9

9 steps. Follow the flow one step at a time — what happens first, and what comes next.

10
Architecture

One message, many safety layers

Every chat message passes several layers: an age check decides who can talk to whom, the game server has text filtered and translated for each reader, and slower systems watch for patterns.

ⓘ Details & sources

Top: what checks a message. Middle: text, then the slower watchers. Bottom: voice. Dashed box and dotted arrows = Roblox doesn't say how that part works.[37][32][33][34][35][36][38][12]

Watch it happen:
age group1message2check3translate4per reader5snapshotsflagsreportsvoiceaudiolistensSendertypes or talksAge checkface scan or IDGame serverTextChatServiceVoice servershow: not publicmodelVoice classifieracts within 15 sText filters750K+ req/s, Jul 2025Sentinel1-minute snapshotsTranslation~100 ms, 16 languagesHuman expertsreviews and appealsOther playerseach gets their version
clientserviceworker dashed border = simplified model
12345
Step 1 of 5

First, the age check: since January 2026 chat needs a face scan or an ID, which puts you in an age group. You chat with similar ages, and it's designed so under-16s can't chat with adults.

Quick check

Matchmaking's default weights: friends 15; the other seven signals add up to 14. What does that mean when you press Play?

Pick one — or just keep scrolling, it's not graded.

Keep going — it's free

Create your free account to unlock the rest of Roblox's system design, keep your progress and pick up right where you left off.

  1. 2Growth & failures
Questions & comments

Ask anything about this system, or share how you'd design it.

Log in to join the conversation