Tailwind CSS v4 default palette
Tailwind stone-900: #1C1917
In Tailwind CSS v4, stone-900 is defined as --color-stone-900: oklch(21.6% 0.006 56.043), which is #1C1917 in hex and rgb(28, 25, 23): a very dark gray with a faint brown tint. In Tailwind v3, stone-900 was #1C1917.
In OKLCH, stone-900 has a lightness of 21.6%, chroma 0.006 and hue 56.0°.
The value fits inside sRGB, so the hex #1C1917 represents it without loss on any screen.
In v3, stone-900 was #1C1917. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
Tailwind stone is a warm gray with a slight brown-yellow tint, suited to editorial and earthy designs.
Color codes for stone-900
| Tailwind v4 token | --color-stone-900 |
|---|---|
| OKLCH (source value) | oklch(21.6% 0.006 56.043) |
| HEX | #1C1917 |
| RGB | rgb(28, 25, 23) |
| HSL | hsl(24, 10%, 10%) |
| HWB | hwb(24 9% 89%) |
| CMYK (naive, no ICC profile) | cmyk(0%, 11%, 18%, 89%) |
| Decimal | 1,841,431 |
| Tailwind v3 hex | #1C1917 |
| Utility classes | bg-stone-900, text-stone-900, border-stone-900 |
Tailwind stone scale
Contrast and accessibility
On stone-900, white text has a contrast ratio of 17.48:1 and passes AAA at any text size; black text reaches 1.20: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-900 | 1.20:1 | Fail | Fail | Fail | Fail | 0.0 |
| White text on stone-900 | 17.48:1 | Pass | Pass | Pass | Pass | −106.6 |
| Stone-900 text on white | 17.48:1 | Pass | Pass | Pass | Pass | 104.3 |
| Stone-900 text on black | 1.20:1 | Fail | Fail | Fail | Fail | 0.0 |
Tints and shades
Each step mixes var(--color-stone-900) with white (tints) or black (shades) in gamma-encoded sRGB, the same result as color-mix(in srgb, var(--color-stone-900), white 25%) in CSS.
Tints (mixed with white)
- 5%
#272523 - 15%
#3e3c3a - 25%
#555351 - 35%
#6b6a68 - 45%
#82817f - 55%
#999897 - 65%
#b0afae - 75%
#c6c6c5 - 85%
#dddddc - 95%
#f4f4f3
Shades (mixed with black)
- 5%
#1b1816 - 15%
#181514 - 25%
#151311 - 35%
#12100f - 45%
#0f0e0d - 55%
#0d0b0a - 65%
#0a0908 - 75%
#070606 - 85%
#040403 - 95%
#010101
Color harmonies
Rotating the hue in OKLCH while keeping lightness and chroma, stone-900's complementary color is #171A1C (close to midnightblue), its analogous colors are #1C1918 and #1B1917, and its triadic partners are #171B19 and #1A191C. For text on top, white gives the higher contrast.
| Harmony | Rotation | Color |
|---|---|---|
| Complementary | +180° | #171a1c |
| Analogous | −30°, +30° | #1c1918#1b1917 |
| Triadic | +120°, +240° | #171b19#1a191c |
| Split-complementary | +150°, +210° | #171a1b#181a1d |
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-900 is close to neutral: its OKLCH chroma is only 0.006, so its temperature comes from context. The faint 24° 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.
Nearest CSS named colors
| Color | HEX | ΔE OK |
|---|---|---|
| midnightblue | #191970 | 16.5 |
| darkslategray | #2f4f4f | 19.2 |
| navy | #000080 | 20.1 |
Nearest Tailwind v4 colors
| Color | HEX | ΔE OK |
|---|---|---|
| taupe-900 | #1d1816 | 0.4 |
| zinc-900 | #18181b | 1.2 |
| neutral-900 | #171717 | 1.3 |
Code snippets
<div class="bg-stone-900 text-white">...</div>
<p class="text-stone-900 border-stone-900">...</p>.element {
color: var(--color-stone-900);
background-color: oklch(21.6% 0.006 56.043);
border-color: #1c1917;
outline-color: rgb(28 25 23);
}import SwiftUI
extension Color {
static let stone900 = Color(red: 0.110, green: 0.098, blue: 0.090)
}import androidx.compose.ui.graphics.Color
val Stone900 = Color(0xFF1C1917)import 'package:flutter/material.dart';
const stone900 = Color(0xFF1C1917);<!-- res/values/colors.xml -->
<color name="stone_900">#1C1917</color>Frequently asked questions
- What is the hex code for Tailwind stone-900?
- In Tailwind CSS v4, stone-900 is oklch(21.6% 0.006 56.043), which converts to #1C1917 (rgb(28, 25, 23)) in sRGB. In Tailwind v3 the same name was #1C1917.
- What is the difference between stone-900 in Tailwind v3 and v4?
- v3 used the hex #1C1917; v4 redefined the palette in OKLCH as oklch(21.6% 0.006 56.043). In v3, stone-900 was #1C1917. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
- How do I use stone-900 in plain CSS?
- Tailwind v4 defines every palette color as a theme variable, so in CSS you write var(--color-stone-900). By default Tailwind only emits the variables your project uses; @theme static emits all of them.
- Can you use white text on stone-900?
- White text on stone-900 has a contrast ratio of 17.48:1, which passes both AA and AAA under WCAG 2.2. Black text reaches 1.20:1 and fails AA even for large text. In APCA terms that is Lc −106.6 for white and Lc 0.0 for black.
- Which CSS named color is closest to stone-900?
- The closest is midnightblue (#191970) at ΔE OK 16.5, followed by darkslategray and navy.
Last reviewed by Arielton Oberek.