How to Choose a Neutral and Gray Color Palette

Every palette needs colors that step back. Neutrals — grays, near-whites, muted earth tones — occupy the largest area of most interfaces and printed materials, yet they get picked last and picked carelessly. A gray that looks fine in isolation can clash the moment it sits next to your brand blue or warm orange, because every gray carries an undertone, and that undertone either supports your chromatic colors or fights them. Choosing neutrals deliberately is the difference between a palette that feels coherent and one that feels assembled from parts.

What makes a color “neutral”

A neutral is not the same as a pure gray. In the HSL or OKLCH color model, pure gray has zero saturation — equal parts red, green, and blue. But the grays used in real design almost always carry a small push of hue. That push is called the undertone, and it is what separates a clinical, sterile gray from one that feels warm, cool, or natural.

Three families cover nearly every neutral palette you will encounter:

The undertone is typically very low in saturation — 2 % to 8 % in HSL — but the human eye is remarkably sensitive to it. A 4 % blue undertone is invisible when you look at a single swatch, yet obviously cool when placed beside a warm beige. This is why you should always evaluate neutrals next to your chromatic palette, never in isolation.

Warm gray

95 #F5F0EB
60 #A89B8F
20 #3D3530
Cool gray

95 #EDF0F5
60 #8A95A5
20 #2B3038
True gray

95 #F0F0F0
60 #999999
20 #333333
The same lightness levels in warm, cool, and true gray. Undertone is barely visible in a single swatch but obvious when columns sit side by side — warm leans toward sand, cool leans toward slate.

Step 1: pick the undertone from your accent

Start with the chromatic color that dominates your palette — usually a primary brand or accent hue. The undertone of your neutrals should either match or complement that hue:

If you have not settled on an accent yet, cool grays with a blue undertone are the safest default for screens. Blue-tinted grays sit naturally under black text, pair with most hues, and match the slight blue cast of modern displays. Start with a cool base and shift only if your brand direction requires warmth.

Once you know the undertone, take a single mid-tone gray — around lightness 50 in OKLCH — and feed it into the Tint & Shade Generator. The tool builds a full 50–900 scale from one input, keeping the undertone consistent across every step. That scale becomes your neutral system.

Step 2: build the scale and check the gaps

A usable neutral palette is a tint-to-shade scale — a ladder from near-white to near-black with even perceptual spacing. You need at least seven steps to cover common use cases:

After generating the scale, check two things. First, even spacing: if the jump from 100 to 200 is barely noticeable but the jump from 400 to 500 is dramatic, the scale will feel unbalanced. Perceptually uniform models like OKLCH handle this better than HSL — the Color Code Converter can show you lightness values in both systems so you can spot unevenness. Second, contrast: steps 600 and above should pass WCAG AA (4.5:1) against your lightest background, and steps 200 and below should pass against your darkest surface. Run the pairs through the Contrast Checker before committing.

Step 3: add a dark-mode counterpart

If your product has a dark mode, you do not simply invert the scale. The background becomes step 900 or a custom near-black, and surfaces use 800 and 700 to communicate elevation — each layer slightly lighter than the one beneath it. Foreground text flips to steps 100–200. But the undertone stays the same: if your light-mode grays are warm, your dark-mode grays should be warm too. Mixing undertones across themes makes the switch feel jarring instead of seamless.

Generate a second scale from the same seed color in the Tint & Shade Generator, but this time note which steps you will use as backgrounds (800–900) and which as foreground (50–200). Verify contrast in both directions. Dark backgrounds are unforgiving — a gray that barely passed 4.5:1 on white often fails on #121212.

Step 4: proportion neutrals against accents

Neutrals should dominate the canvas. The 60-30-10 rule is a useful starting point: 60 % neutral, 30 % secondary (often a tinted neutral or a muted variant), 10 % accent. In practice, UI-heavy products push neutrals even higher — 70 % or more — because every button, card, and input field needs a restful background that does not compete with the content.

A common mistake is reaching for a mid-range gray (400–500) as a large background. Those middle steps are intended for small elements — icons, captions, borders. They carry enough contrast to read as “a color” rather than “space,” which makes them tiring at scale. Backgrounds should come from the extremes of the scale: 50–100 in light mode, 800–900 in dark mode. Reserve mid-tones for the elements that need to recede but still be visible.

50
bg
100
card
200
border
300
divider
400
disabled
500
placeholder
600
caption
700
body
800
heading
900
ink
A complete warm gray scale from 50 (page background) to 900 (highest-emphasis ink). Each step maps to a specific UI role — backgrounds live at the extremes, interactive and secondary elements live in the middle.

Pairing neutrals with your harmonic palette

Neutrals are not a standalone system — they interact with every chromatic color you use. A few rules keep the relationship clean:

Three mistakes that ruin neutral palettes

1. Picking grays from a color picker instead of generating a scale. Eyeballing hex codes produces steps with inconsistent undertones and uneven lightness gaps. Two steps might look almost identical while the next jump is enormous. Always build from a single seed — the Tint & Shade Generator ensures every step shares the undertone and the perceptual distance is regular.

2. Ignoring undertone shift across the scale. In HSL, adding white to a warm gray pushes it pinker; adding black pushes it muddier. By step 900, your original warm undertone can look dirty brown instead of charcoal. OKLCH preserves hue more faithfully across lightness changes, which is why modern tools use it. When you convert your scale to hex with the Color Code Converter, compare the undertone at 100 and 900 visually — they should still read as the same family.

3. Using pure black #000000 and pure white #FFFFFF as endpoints. Pure black on a screen is not “darker neutral” — it is the absence of light, and it creates harsh contrast with any gray step adjacent to it. Most design systems cap their scale at around #111 or #1A1A1A for darkest and #FAFAFA for lightest. The slight offset from absolute extremes keeps the transitions smooth and reduces eye strain.

Choosing the right neutral for your project

There is no single correct gray. The right choice depends on context:

Once you have chosen, commit. A neutral scale is a design decision, not a suggestion — use it for every gray in the product, from backgrounds to borders to placeholder text. The moment you introduce a second gray family (a cool divider on a warm card, a random #808080 from a library default), the palette starts looking unintended.

Exporting and maintaining the scale

After generating your neutral scale in the Tint & Shade Generator, export it as CSS custom properties: --neutral-50 through --neutral-900. This naming convention matches Tailwind, Material, and most token systems, so the scale drops into any framework without translation. For dark mode, create a second set or remap the same tokens — --surface: var(--neutral-900) in dark, --surface: var(--neutral-50) in light.

Revisit the scale when your brand color changes. A new accent hue might demand a new undertone, and a scale that harmonized with the old brand blue can clash with a new teal or coral. The rebuild is fast — drop the new seed into the generator, verify contrast, update the tokens — but skipping it leaves a subtle misfit that accumulates across every screen.

Try it yourself

Everything on ScanHue is free and runs in your browser: Photo Palette Extractor · Contrast Checker · Color Code Converter. How these guides are written and checked: editorial standards.