Modhold
Skyrim SE
Freev1.1.3

CHROMA - A Racemenu Color Addon

An SKSE Plugin that adds 300 hair colors and over 122 skin colors to Racemenu at runtime. Compatible with everything - even mods that alter races. TOML files allow you to add your own colors without writing a plugin or mod. Colors carry into saves as well as exported racemenu presets.

ColdSun21Pass @ColdSun
0Unique downloads
3.2kDownloads
13kViews
0Vouches
–no scores yetScore
C H R O M A

More hair colors. More skin tones. Make them your own.

Editable color palettes for RaceMenu | Skyrim SE, AE, and VR

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Author's Note

I wanted the 300 hair colors from Tailor's wig palette available when making a character in RaceMenu. I also wanted more skin tones, with choices that suit each race and a separate set of unusual colors for anyone making something a little different.

Chroma brings those palettes into the existing Hair Color and Skin Tone sliders. If a color you want is missing, you can add it yourself in a text file. There is no plugin to rebuild and no race patch to maintain every time you add another shade.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Overview

Chroma adds hair and skin color presets to RaceMenu from editable TOML libraries.

The supplied libraries contain 300 hair colors and 122 skin colors. The skin library includes 22 colors from Realistic Natural Skin Tones, 80 new natural tones spread across eight races, and 20 shared fantasy colors.

Each supported race gets its own assigned natural additions, followed by the fantasy palette. A Nord receives the Nord additions, a Redguard receives the Redguard additions, and each elf race has its own selection. Both sexes receive the same Chroma additions.

No ESP, ESM, or ESL. Chroma is an SKSE DLL and two color libraries. It uses no plugin slots.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Features

Hair Colors
  • 300 colors - the original names, RGB values, family grouping, and order are preserved.
  • Natural and colorful shades - Black, Dark Brown, Brown, Light Brown, Red, Blonde, Ash, Silver, Frost, Midnight, Moss, Tide, Plum, and Rose.
  • Uses the existing Hair Color slider - choose a color in RaceMenu as you normally would.
  • Room for your own palette - add more colors or make a separate TOML with just the shades you want.
Skin Colors
  • Ten new natural tones per race - Breton, Dark Elf, High Elf, Imperial, Nord, Orc, Redguard, and Wood Elf.
  • 22 original Realistic Natural Skin Tones colors - names and RGB values are retained, with Chroma-specific race assignments.
  • 20 shared fantasy tones - blues, greens, pinks, purples, and more, placed after the natural additions for every supported race.
  • Race-specific additions - natural tones assigned to another race do not appear among your character's Chroma additions.
  • Both sexes - no separate male and female palette files to maintain.
Simple to Use
  • Ready to use - install Chroma and open RaceMenu. Editing the files is optional.
  • Existing presets stay - Chroma adds to the race data produced by your load order. It does not replace your original colors.
  • Duplicate checks - matching existing presets are skipped, and duplicate color IDs are reported in the log.
  • Loads at startup - edit a library, restart Skyrim, and the new choices are available.
  • No extra menu - no MCM or separate color-selection interface to learn.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A Palette for Each Race

The natural expansion takes its starting point from Skyrim's own skin palettes. The new shades explore different undertones within those palettes:
  • Breton - soft ivory, almond, neutral beige, and muted rosy tan.
  • Nord - cool ivory, pale pink, heather, windworn rose, and light tan.
  • Imperial - olive, golden sand, ochre, copper, and umber.
  • Redguard - sienna, chestnut, bronze, cacao, and deep brown.
  • High Elf - ivory gold, citrine, olive gold, and bronze.
  • Wood Elf - bark, amber, cedar, and muted olive-brown.
  • Dark Elf - ash, slate, charcoal, blue-gray, and violet-gray.
  • Orc - sage, lichen, jade, moss, and gray-green.
For something less conventional, the fantasy palette includes colors such as Glacier Blue, Rose Pink, Twilight Violet, Emerald, Moon Silver, and Living Obsidian.

Skin coverage: Chroma 1.0 supports the eight base races listed above. It does not add skin tones to Argonians, Khajiit, vampire race variants, Astrid's special race, or custom race records. Hair has its own target list, which also includes several vampire variants and Astrid.

Existing colors: Race grouping applies to Chroma's additions. Vanilla colors and colors already supplied by other mods remain available. Chroma does not remove or reclassify them.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RequirementsUse versions of these requirements that match your Skyrim executable. Chroma is built for SE, AE, and VR using CommonLibSSE-NG.

Installation

  1. Install the requirements above.
  2. Install Chroma with your mod manager and enable it. In MO2, enable it in the left pane; there is no ESP to activate in the right pane.
  3. Launch Skyrim through SKSE.
  4. Open RaceMenu and use the Hair Color and Skin Tone sliders.


The original presets appear first. Chroma's natural additions follow them, with its fantasy skin colors at the end. Matching colors already present in your race's palette are skipped, so slider totals can differ between load orders.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Adding Your Own Colors

The supplied libraries are:

SKSE/Plugins/Chroma/Hair/Chroma Hair.toml

SKSE/Plugins/Chroma/Skin/Chroma Skin.toml


You can edit those files directly. For personal additions, I recommend creating separate TOMLs in the same folders so an update to Chroma does not overwrite your work. In a mod manager, these paths start inside the mod's folder. For a manual installation, they start inside Skyrim's Data folder.

Use a plain text editor, save with the .toml extension, and place the file directly in Hair or Skin. Chroma does not scan subfolders.

Example 1: Add Two Hair Colors

Create SKSE/Plugins/Chroma/Hair/My Hair Colors.toml and paste:

schema_version = 1

kind = "hair"

races = ["Skyrim.esm|013741", "Skyrim.esm|013746"]

[[colors]]

id = "myhair.copper_ember"

name = "Copper Ember"

rgb = "#784B39"

family = "Red"

[[colors]]

id = "myhair.dusky_plum"

name = "Dusky Plum"

rgb = "#63435F"

family = "Plum"


This adds both colors to Breton and Nord, for both sexes. Every color in a hair file uses the race list at the top of that file.

The family field is an optional label for organizing the file. It does not create a category in RaceMenu or automatically sort the colors. Entries retain their written order. If you edit Chroma Hair.toml itself, place your new entry beside the family you want it to follow.

Example 2: Give Different Races Their Own Skin Colors

Create SKSE/Plugins/Chroma/Skin/My Natural Skin.toml and paste:

schema_version = 3

kind = "skin"

section = "race"

races = ["Skyrim.esm|013746"]

[[colors]]

id = "myskin.nord_cool_rose"

name = "Nord Cool Rose"

rgb = "#D2ACAF"

[[colors]]

id = "myskin.dunmer_smoke"

name = "Dunmer Smoke"

rgb = "#697581"

races = ["Skyrim.esm|013742"]


Nord Cool Rose uses the file's default race list, so only Nords receive it. Dunmer Smoke has its own race list, so only Dark Elves receive that color. A race list inside a skin color entry replaces the file's default list for that entry.

Example 3: Add Shared Fantasy Skin Colors

Create SKSE/Plugins/Chroma/Skin/My Fantasy Skin.toml and paste:

schema_version = 3

kind = "skin"

section = "fantasy"

races = [

    "Skyrim.esm|013741",

    "Skyrim.esm|013742",

    "Skyrim.esm|013743",

    "Skyrim.esm|013744",

    "Skyrim.esm|013746",

    "Skyrim.esm|013747",

    "Skyrim.esm|013748",

    "Skyrim.esm|013749"

]

[[colors]]

id = "myskin.starlight_blue"

name = "Starlight Blue"

rgb = "#569BC4"

[[colors]]

id = "myskin.dusk_orchid"

name = "Dusk Orchid"

rgb = "#B983AD"


All eight supported races receive these colors in the fantasy group, after their natural additions. The race list controls who gets the colors; section = "fantasy" controls where they appear.

Race Reference

Breton    = Skyrim.esm|013741

Dark Elf  = Skyrim.esm|013742

High Elf  = Skyrim.esm|013743

Imperial  = Skyrim.esm|013744

Nord      = Skyrim.esm|013746

Orc      = Skyrim.esm|013747

Redguard  = Skyrim.esm|013748

Wood Elf  = Skyrim.esm|013749


Race references use a plugin filename, a vertical bar, and the race's local hexadecimal FormID. They are not EditorIDs or load-order-prefixed FormIDs. Hair libraries can target other installed races, but skin libraries are restricted to the eight entries above.

A Few Things to Remember
  • Give every color a unique ID. Use a prefix of your own, such as myhair or myskin. IDs can contain letters, numbers, periods, underscores, and hyphens. Reusing an ID causes the conflicting entries to be rejected.
  • Write RGB as a quoted hex color. For example, rgb = "#784B39". Keep the hash and all six hex digits inside the quotes.
  • Repeat the color block, not the file header. Add another [[colors]] block for each new entry. Keep schema_version, kind, and the file's default settings at the top.
  • Set skin race targets explicitly when editing the supplied file. Chroma Skin.toml defaults to all eight supported races. Add a races line to your new entry if it should belong to only one race.
  • Use the fantasy section for unusual skin tones. In Chroma Skin.toml, adding section = "fantasy" inside a color entry puts that entry in the final fantasy group. Its race list still controls availability.
  • Restart Skyrim after editing. Reopening RaceMenu alone will not reload the TOMLs.
Skin textures, hair meshes, shaders, and lighting all affect how a tint looks in-game. A hex color is a starting point, so expect to adjust a shade after seeing it on your character.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Compatibility and Saving

Chroma adds presets to the race data already loaded by Skyrim. It does not write race overrides into an ESP, remove existing presets, or recolor every NPC. A race overhaul or a patch such as Synthesis can still contribute its own colors, and those choices remain available.

If another installed mod supplies matching color presets, Chroma skips those matches instead of adding them again.

Hair selections use the SKSE co-save. Chroma saves the player's selected Chroma hair RGB in the matching .skse file and restores it when loading. Keep that file with your save and keep Chroma installed when relying on those hair selections. Skin uses Skyrim's normal saved tint data.

Before removing Chroma, switch to a hair color supplied by the base game or another mod you are keeping, then save. Removing Chroma removes its additional slider choices on the next launch.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
For Mod Authors

You can distribute additional Chroma palettes as TOML files. Put them directly under SKSE/Plugins/Chroma/Hair/ or SKSE/Plugins/Chroma/Skin/ in your mod, use distinctive filenames and IDs, and list Chroma as a requirement. A palette pack does not need its own ESP.

The source code and the supplied libraries are available on GitHub. The README covers the supported schema versions and configuration fields.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Troubleshooting

The extra colors are not showing up

Make sure Chroma is enabled in your mod manager and Skyrim was launched through SKSE. Check that the DLL and libraries are installed under SKSE/Plugins, then fully restart the game. Also confirm that your character uses one of the supported race records.

My custom file is being ignored

Check that it ends in .toml rather than .toml.txt, sits directly in the Hair or Skin folder, and has the matching kind value. A malformed file is rejected as a whole. Look in Documents/My Games/Skyrim Special Edition/SKSE/Chroma.log for the filename and error.

I see fewer colors than the library contains

The 122 skin colors are the total library, not the number added to every race. Each supported race gets its assigned natural colors plus the 20 shared fantasy colors. Matching existing presets are skipped. RaceMenu's sliders also count from zero, so the displayed final position is one less than the number of choices.

My Nord still has a color that looks like it belongs to another race

Chroma limits its own natural additions by race. It preserves the original presets and any colors already added by your load order. Check the winning race record or generated patch if you want to change those existing choices.

I renamed or copied a supplied TOML and now colors are missing

Every loaded color ID must be unique. If both copies remain in an active palette folder, their matching IDs are rejected. Move backups outside the Hair and Skin folders, or give genuinely new colors their own IDs.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Credits
  • ColdSun - Chroma, the Tailor hair palette, and the CS_Assets hair race reference.
  • Asherz - the original Realistic Natural Skin Tones colors.
  • Expired - RaceMenu.
  • The SKSE, CommonLibSSE-NG, and toml++ contributors - the tools and libraries Chroma is built on.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Created by ColdSun

Developed by an engineer with 35 years of experience in the field

DLL digitally signed as Heath Brown through Microsoft's Azure signing service

Source Code

Built with C++ | CommonLibSSE-NG | SKSE