Tailwind CSS v4 default palette
Tailwind stone-400: #A6A09B
In Tailwind CSS v4, stone-400 is defined as --color-stone-400: oklch(70.9% 0.01 56.259), which is #A6A09B in hex and rgb(166, 160, 155): a light gray with a faint tan tint. In Tailwind v3, stone-400 was #A8A29E.
In OKLCH, stone-400 has a lightness of 70.9%, chroma 0.010 and hue 56.3°.
The value fits inside sRGB, so the hex #A6A09B represents it without loss on any screen.
In v3, stone-400 was #A8A29E. The v4 value is ΔE OK 0.7 away, below the point where most people can tell them apart; v4 is darker.
Tailwind stone is a warm gray with a slight brown-yellow tint, suited to editorial and earthy designs.
Color codes for stone-400
| Tailwind v4 token | --color-stone-400 |
|---|---|
| OKLCH (source value) | oklch(70.9% 0.01 56.259) |
| HEX | #A6A09B |
| RGB | rgb(166, 160, 155) |
| HSL | hsl(27, 6%, 63%) |
| HWB | hwb(27 61% 35%) |
| CMYK (naive, no ICC profile) | cmyk(0%, 4%, 7%, 35%) |
| Decimal | 10,920,091 |
| Tailwind v3 hex | #A8A29E |
| Utility classes | bg-stone-400, text-stone-400, border-stone-400 |
Tailwind stone scale
Contrast and accessibility
On stone-400, black text has a contrast ratio of 8.12:1 and passes AAA at any text size; white text reaches 2.58:1.
WCAG 2.2 contrast ratios (success criteria 1.4.3 and 1.4.6: AA needs 4.5:1 for normal text and 3:1 for large text, AAA needs 7:1 and 4.5:1). APCA Lc is the lightness contrast from the APCA-W3 0.0.98G model proposed for WCAG 3; a higher absolute value is more readable, and Lc 75 is its suggested minimum for body text.
| Pair | Ratio | AA | AA large | AAA | AAA large | APCA Lc |
|---|---|---|---|---|---|---|
| Black text on stone-400 | 8.12:1 | Pass | Pass | Pass | Pass | 53.5 |
| White text on stone-400 | 2.58:1 | Fail | Fail | Fail | Fail | −55.7 |
| Stone-400 text on white | 2.58:1 | Fail | Fail | Fail | Fail | 50.6 |
| Stone-400 text on black | 8.12:1 | Pass | Pass | Pass | Pass | −51.4 |
Tints and shades
Each step mixes var(--color-stone-400) with white (tints) or black (shades) in gamma-encoded sRGB, the same result as color-mix(in srgb, var(--color-stone-400), white 25%) in CSS.
Tints (mixed with white)
- 5%
#aaa5a0 - 15%
#b3aeaa - 25%
#bcb8b4 - 35%
#c5c1be - 45%
#cecbc8 - 55%
#d7d4d2 - 65%
#e0dedc - 75%
#e9e7e6 - 85%
#f2f1f0 - 95%
#fbfafa
Shades (mixed with black)
- 5%
#9e9893 - 15%
#8d8884 - 25%
#7d7874 - 35%
#6c6865 - 45%
#5b5855 - 55%
#4b4846 - 65%
#3a3836 - 75%
#2a2827 - 85%
#191817 - 95%
#080808
Color harmonies
Rotating the hue in OKLCH while keeping lightness and chroma, stone-400's complementary color is #9CA2A7 (close to darkgray), its analogous colors are #A79F9E and #A4A19A, and its triadic partners are #9BA3A1 and #A1A0A7. For text on top, black gives the higher contrast.
| Harmony | Rotation | Color |
|---|---|---|
| Complementary | +180° | #9ca2a7 |
| Analogous | −30°, +30° | #a79f9e#a4a19a |
| Triadic | +120°, +240° | #9ba3a1#a1a0a7 |
| Split-complementary | +150°, +210° | #9aa3a4#9ea1a8 |
Computed in OKLCH: the hue is rotated by 180° (complementary), ±30° (analogous), ±120° (triadic) and 180° ±30° (split-complementary) while lightness and chroma stay fixed. Results that fall outside sRGB are brought back with the CSS Color 4 gamut mapping algorithm. Because this uses OKLCH, the values differ from tools that rotate hue in HSL, but every color keeps the same perceived lightness.
Warm or cool?
Tailwind stone-400 is close to neutral: its OKLCH chroma is only 0.010, so its temperature comes from context. The faint 27° hue gives it a slightly warm cast.
Nearest named and Tailwind colors
Distance is ΔE OK, the Euclidean distance in OKLab multiplied by 100. Values under about 2 are hard to tell apart side by side.
Code snippets
<div class="bg-stone-400 text-black">...</div>
<p class="text-stone-400 border-stone-400">...</p>.element {
color: var(--color-stone-400);
background-color: oklch(70.9% 0.01 56.259);
border-color: #a6a09b;
outline-color: rgb(166 160 155);
}import SwiftUI
extension Color {
static let stone400 = Color(red: 0.651, green: 0.627, blue: 0.608)
}import androidx.compose.ui.graphics.Color
val Stone400 = Color(0xFFA6A09B)import 'package:flutter/material.dart';
const stone400 = Color(0xFFA6A09B);<!-- res/values/colors.xml -->
<color name="stone_400">#A6A09B</color>Frequently asked questions
- What is the hex code for Tailwind stone-400?
- In Tailwind CSS v4, stone-400 is oklch(70.9% 0.01 56.259), which converts to #A6A09B (rgb(166, 160, 155)) in sRGB. In Tailwind v3 the same name was #A8A29E.
- What is the difference between stone-400 in Tailwind v3 and v4?
- v3 used the hex #A8A29E; v4 redefined the palette in OKLCH as oklch(70.9% 0.01 56.259). In v3, stone-400 was #A8A29E. The v4 value is ΔE OK 0.7 away, below the point where most people can tell them apart; v4 is darker.
- How do I use stone-400 in plain CSS?
- Tailwind v4 defines every palette color as a theme variable, so in CSS you write var(--color-stone-400). By default Tailwind only emits the variables your project uses; @theme static emits all of them.
- Can you use white text on stone-400?
- White text on stone-400 has a contrast ratio of 2.58:1, which fails AA even for large text under WCAG 2.2. Black text reaches 8.12:1 and passes both AA and AAA. In APCA terms that is Lc −55.7 for white and Lc 53.5 for black.
- Which CSS named color is closest to stone-400?
- The closest is darkgray (#A9A9A9) at ΔE OK 2.8, followed by rosybrown and cadetblue.
Last reviewed by Arielton Oberek.