Roblox Color Codes (BrickColor)

All 208 BrickColors with their code number, hex and RGB — the 128 in the Studio colour picker plus the 80 that only work if you type the name or number yourself. Tap any code to copy it.

208BrickColors total
128In the Studio picker
80Name or number only
4Names used twice

What a BrickColor actually is

A BrickColor is not a colour so much as a seat in a fixed list. Roblox inherited the idea from physical brick colours, and it works the way a paint catalogue works: there are exactly 208 entries, each with a name, a number and one specific RGB value, and you choose one of them rather than mixing your own. Ask for something outside the list and you do not get an error — you get the nearest entry, or, if the lookup fails entirely, Medium stone grey.

That fixed-list design is why the numbers look so strange. They are not sequential: the list starts at 1 and ends at 1032, with large gaps in between, because the numbering descends from an older colour catalogue whose retired shades left holes behind. There is no colour 4, no 7, no 8. Numbers in the 1000s are the ones Roblox added itself — Really red, New Yeller, Hot pink and the rest of the vivid set that the inherited palette had no equivalent for.

The practical consequence: the number is the identity, and the name is only a label. Four labels are attached to two different numbers each, so the number is the only thing you can rely on.

BrickColor vs Color3 — which one should you use?

These two get confused constantly, and the difference is simple once you see it: BrickColor is a list, Color3 is a range.

  • BrickColor gives you 208 choices. You reach them by name (BrickColor.new("Really red")) or by number (BrickColor.new(1004)). Every one is a colour someone chose deliberately, which is genuinely useful when you want a build to look coherent rather than hand-mixed.
  • Color3 gives you all 16,777,216 8-bit RGB values. You reach them with Color3.fromRGB(255, 0, 0) using 0–255 numbers, Color3.new(1, 0, 0) using 0–1 floats, or Color3.fromHex("#FF0000") straight from a hex code.

Parts store a Color3 internally. Setting BrickColor writes through to it, and reading BrickColor back snaps whatever is there to the nearest entry in the list. So a custom colour that you round-trip through BrickColor will come back different. If a designer hands you a brand hex code, set Color3 and leave BrickColor alone.

BrickColor is still the required type in a few places — Team.TeamColor, SpawnLocation.TeamColor, and older models and plugins that were written against it. Those are the cases where you genuinely need the list. Everywhere else, treat BrickColor as a palette you are choosing from and Color3 as what actually gets stored.

Converting between them is one property in each direction. myBrickColor.Color gives you the Color3, and BrickColor.new(someColor3) snaps back to the closest of the 208 — approximately, never exactly.

Using these codes in Studio

By hand. Select a part, find BrickColor in the Properties panel and click the swatch. You get the picker grid — that grid is exactly the 128 palette colours below, in that order. Hovering a square shows its name. The 80 colours in the second list do not appear there at all, which is the single most common reason people believe a colour "does not exist" when it does.

In a script. The first three lines all produce the same red — Really red, 1004. The fourth does not, and that catches people out:

  • part.BrickColor = BrickColor.new(1004) — by number, the reliable form
  • part.BrickColor = BrickColor.new("Really red") — by name
  • part.Color = Color3.fromRGB(255, 0, 0) — the modern equivalent
  • part.BrickColor = BrickColor.Red() — a shortcut constructor, but it returns Bright red (21), the muted #C4281C, not the vivid #FF0000 most people expect.

Those eight shortcut constructors are worth memorising precisely, because none of them returns what its name suggests and one is genuinely surprising: Red() gives Bright red, Yellow() gives Bright yellow, Blue() gives Bright blue, but Green() gives Dark green rather than Bright green. Gray() gives Medium stone grey, DarkGray() gives Dark stone grey, and White() and Black() give White and Black as you would hope.

Walking the palette. BrickColor.palette(n) takes the picker index, 0 to 127 — the palette number shown on each row below, not the BrickColor number. Looping it is how you cycle a build through every picker colour. BrickColor.random() returns one at random.

The traps worth knowing. Names are case-sensitive and space-sensitive: "really red" and "Really Red" both fail, and both fail silently into Medium stone grey. Several names are abbreviated in ways you would never guess — "Br. yellowish orange", "Lig. Yellowich orange" and "Med. reddish violet" are the real spellings, misspelling included. Copy the number instead and none of this can bite you.

The 128 colours in the Studio picker

In picker order — this is the grid you see when you click the BrickColor swatch in Properties. Each row shows its palette index alongside the BrickColor number.

The other 80 BrickColors

Every one of these is valid and renders correctly — they simply have no square in the picker, so the only way to use one is to type its name or number in a script or paste the number into the property field.

The four duplicate names

Deep orange, Gold, Lilac, Rust are each attached to two different BrickColors. Looking one up by name gives you the lower number every time, so BrickColor.new("Gold") is always 127 and there is no string that will get you 333. The same goes for Rust (216, never 345), Lilac (219, never 321) and Deep orange (1005, never 1017). If you want the higher-numbered one of a pair, the number is the only way to ask for it.

Where you still meet BrickColor

Roblox has been quietly moving away from BrickColor for years, but it has not removed it, and there are places where it is still the only type that will do:

  • Teams. Team.TeamColor is a BrickColor and nothing else. Two teams cannot share one, so the number of teams a place can have is capped by the list. This is also why team colours look slightly dated — they are drawn from the older entries.
  • Spawn points. SpawnLocation.TeamColor matches a spawn to a team. If the two BrickColors are not the same entry, players will not spawn there, and because a failed name lookup silently becomes Medium stone grey this is a classic invisible bug: the spawn looks right and simply never fires.
  • Older models and free-model code. Anything written before Color3 arrived sets BrickColor. It still works, which is exactly why so much of it is still around.

Everywhere else — parts, UI, lighting, particles, beams, trails — Color3 is the type the engine actually stores, and reaching for BrickColor just adds a rounding step.

Colour and material interact

The same code will not look the same on every part, and this trips up a lot of builds. On Neon, the colour becomes the glow, so darker entries look washed out and the vivid 1000-series ones are what you want. On Glass and ForceField, transparency does most of the work and the colour reads far weaker than the swatch suggests. Textured materials like Grass, Brick and Sand tint the texture rather than replacing it, so the result is always duller than the raw hex. If a colour looks wrong in-game but right in Properties, the material is almost always why — and a SurfaceAppearance child overrides part colour completely.

Picking colours that actually go together

The list is long enough that the hard part is not finding a colour, it is finding three that sit next to each other without looking accidental. A few things that consistently work:

Stay inside one family. The inherited entries (numbers under 400) were designed as a physical brick range, so they are muted and they harmonise with each other almost automatically. The 1000-series entries Roblox added — Really red, New Yeller, Lime green, Hot pink, Toothpaste — are fully saturated and were built to stand out. Mixing the two families is what makes a build look thrown together: Bright red (21) next to Really red (1004) reads as a mistake rather than a choice, because it is the same hue at two different intensities.

Use the greys as the base. Roblox gives you a proper neutral ramp — Institutional white (1001), Light stone grey (208), Medium stone grey (194), Dark stone grey (199) and Really black (1003). Building the bulk of a structure from those and spending your saturated colours only on the things you want players to look at is the single fastest way to make a place look deliberate. It is also why so many well-regarded showcases barely use colour at all.

Let one colour dominate. Roughly a 60 / 30 / 10 split — a base, a secondary, and an accent used sparingly — beats an even three-way split almost every time. The accent is where the 1000-series earns its keep.

Check it under your actual lighting. Colours are multiplied by the lighting, so a palette chosen at default midday will drift heavily once you change Lighting.Ambient, add a ColorCorrection effect or move to a night cycle. Pick colours in the lighting the player will see, not in the Properties swatch.

Snippets worth keeping

Colour a whole model at once. Loop the descendants rather than clicking each part:

for _, p in model:GetDescendants() do if p:IsA("BasePart") then p.BrickColor = BrickColor.new(1004) end end

Cycle every picker colour. Useful for previewing the palette on a real build instead of guessing from swatches — remember palette takes the picker index, 0 to 127, not the BrickColor number:

for i = 0, 127 do part.BrickColor = BrickColor.palette(i) task.wait(0.2) end

Read a colour back out. part.BrickColor.Name gives the name, part.BrickColor.Number the code, and part.BrickColor.Color the Color3. The .r, .g and .b properties are floats between 0 and 1, so multiply by 255 before comparing them with anything on this page.

Convert a hex code to a part colour. Skip BrickColor entirely — part.Color = Color3.fromHex("#FF66CC") is exact, where BrickColor.new(Color3.fromHex("#FF66CC")) snaps to whichever of the 208 happens to be nearest.

Roblox color code FAQ

How many BrickColors are there in Roblox?

There are 208. The Studio colour picker only shows 128 of them — that grid is BrickColor.palette(0) through BrickColor.palette(127). The other 80 are still valid and still render correctly, but you can only reach them by typing the name or the number in a script.

What is the difference between BrickColor and Color3?

BrickColor is a fixed list — you pick one of a few hundred named colours, and that is the whole range. Color3 is continuous: any of the 16.7 million 8-bit RGB values. BrickColor is the older system, kept for Team colours, SpawnLocation and older models. For anything new, set BrickColor.Color or use Color3.fromRGB directly.

How do I set a part’s colour with a BrickColor code?

Assign it: part.BrickColor = BrickColor.new(1004) using the number, or BrickColor.new("Really red") using the name. Both produce the same colour. The number is the safer of the two because four names are shared by two colours each.

Why does BrickColor.new() sometimes give me the wrong colour?

Four names are used twice: Deep orange, Gold, Lilac, Rust. When you look one up by name, Roblox returns the lower-numbered of the two, so BrickColor.new("Gold") gives 127 and never 333. Use the number when you mean a specific one. An unrecognised name or number does not error either — it silently falls back to Medium stone grey, which is why grey parts are the classic symptom of a typo.

Can I convert a BrickColor to a hex code?

Yes. Every BrickColor carries a Color3, so c.Color gives you the r, g and b floats between 0 and 1; multiply each by 255 and round to get the 0–255 values, then format them as two hex digits each. The hex and RGB columns on this page are those values already worked out.

Can I turn a hex code back into a BrickColor?

Only approximately. Use BrickColor.new(Color3.fromRGB(r, g, b)) and Roblox snaps to the nearest of the 208 colours, so the result is usually close but rarely exact. If you need the precise shade, skip BrickColor and set Color3 directly.

Do BrickColors still work on parts?

Yes, and they always have. Parts store a Color3 internally now, so setting BrickColor writes through to it and reading BrickColor back snaps to the nearest entry in the list. Round-tripping a custom colour through BrickColor will therefore change it.

What is Roblox’s default part colour?

Medium stone grey, BrickColor 194, hex #A3A2A5. It is also the fallback whenever a lookup fails, so a part that came out grey when you expected something else usually means the name or number was not recognised.

Where these numbers come from

Every row on this page is cross-checked against two sources rather than copied from another colour list. The 128 picker colours, their palette indices and their RGB values come from Roblox's own published BrickColor reference. The full 208-entry set — including the 80 with no picker slot — comes from the BrickColor enum used by Rojo and the rest of the Roblox tooling ecosystem. The two agree on the RGB of all 128 colours they share; they disagree on a single name, number 361, where we follow Roblox and call it Medium brown. Hex is computed from RGB, so the two columns cannot drift apart. More on how we verify everything we publish.

Building something? Grab decal IDs for textures, catalog item IDs for avatar parts, music IDs for sound, or read the make-a-game guide. The Roblox dictionary explains the jargon and admin commands covers the scripting side.