Tailwind CSS v4 default palette
Tailwind neutral-950: #0A0A0A
In Tailwind CSS v4, neutral-950 is defined as --color-neutral-950: oklch(14.5% 0 none), which is #0A0A0A in hex and rgb(10, 10, 10): a neutral near-black. In Tailwind v3, neutral-950 was #0A0A0A.
In OKLCH, neutral-950 has a lightness of 14.5% and zero chroma: a gray with no hue at all.
The value fits inside sRGB, so the hex #0A0A0A represents it without loss on any screen.
In v3, neutral-950 was #0A0A0A. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
Tailwind neutral is a true gray: its OKLCH chroma is zero in every shade, so it has no hue at all.
Color codes for neutral-950
| Tailwind v4 token | --color-neutral-950 |
|---|---|
| OKLCH (source value) | oklch(14.5% 0 none) |
| HEX | #0A0A0A |
| RGB | rgb(10, 10, 10) |
| HSL | hsl(0, 0%, 4%) |
| HWB | hwb(0 4% 96%) |
| CMYK (naive, no ICC profile) | cmyk(0%, 0%, 0%, 96%) |
| Decimal | 657,930 |
| Tailwind v3 hex | #0A0A0A |
| Utility classes | bg-neutral-950, text-neutral-950, border-neutral-950 |
Tailwind neutral scale
Contrast and accessibility
On neutral-950, white text has a contrast ratio of 19.79:1 and passes AAA at any text size; black text reaches 1.06: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 neutral-950 | 1.06:1 | Fail | Fail | Fail | Fail | 0.0 |
| White text on neutral-950 | 19.79:1 | Pass | Pass | Pass | Pass | −107.7 |
| Neutral-950 text on white | 19.79:1 | Pass | Pass | Pass | Pass | 105.8 |
| Neutral-950 text on black | 1.06:1 | Fail | Fail | Fail | Fail | 0.0 |
Tints and shades
Each step mixes var(--color-neutral-950) with white (tints) or black (shades) in gamma-encoded sRGB, the same result as color-mix(in srgb, var(--color-neutral-950), white 25%) in CSS.
Tints (mixed with white)
- 5%
#161616 - 15%
#2f2f2f - 25%
#474747 - 35%
#606060 - 45%
#787878 - 55%
#919191 - 65%
#a9a9a9 - 75%
#c2c2c2 - 85%
#dadada - 95%
#f3f3f3
Shades (mixed with black)
- 5%
#0a0a0a - 15%
#090909 - 25%
#080808 - 35%
#070707 - 45%
#060606 - 55%
#050505 - 65%
#040404 - 75%
#030303 - 85%
#020202 - 95%
#010101
Color harmonies
Rotating the hue in OKLCH while keeping lightness and chroma, neutral-950's complementary color is #0A0A0A (close to black), its analogous colors are #0A0A0A and #0A0A0A, and its triadic partners are #0A0A0A and #0A0A0A. For text on top, white gives the higher contrast.
| Harmony | Rotation | Color |
|---|---|---|
| Complementary | +180° | #0a0a0a |
| Analogous | −30°, +30° | #0a0a0a#0a0a0a |
| Triadic | +120°, +240° | #0a0a0a#0a0a0a |
| Split-complementary | +150°, +210° | #0a0a0a#0a0a0a |
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 neutral-950 is close to neutral: its OKLCH chroma is only 0.000, so its temperature comes from context. It has no perceptible hue.
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-neutral-950 text-white">...</div>
<p class="text-neutral-950 border-neutral-950">...</p>.element {
color: var(--color-neutral-950);
background-color: oklch(14.5% 0 none);
border-color: #0a0a0a;
outline-color: rgb(10 10 10);
}import SwiftUI
extension Color {
static let neutral950 = Color(red: 0.039, green: 0.039, blue: 0.039)
}import androidx.compose.ui.graphics.Color
val Neutral950 = Color(0xFF0A0A0A)import 'package:flutter/material.dart';
const neutral950 = Color(0xFF0A0A0A);<!-- res/values/colors.xml -->
<color name="neutral_950">#0A0A0A</color>Frequently asked questions
- What is the hex code for Tailwind neutral-950?
- In Tailwind CSS v4, neutral-950 is oklch(14.5% 0 none), which converts to #0A0A0A (rgb(10, 10, 10)) in sRGB. In Tailwind v3 the same name was #0A0A0A.
- What is the difference between neutral-950 in Tailwind v3 and v4?
- v3 used the hex #0A0A0A; v4 redefined the palette in OKLCH as oklch(14.5% 0 none). In v3, neutral-950 was #0A0A0A. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
- How do I use neutral-950 in plain CSS?
- Tailwind v4 defines every palette color as a theme variable, so in CSS you write var(--color-neutral-950). By default Tailwind only emits the variables your project uses; @theme static emits all of them.
- Can you use white text on neutral-950?
- White text on neutral-950 has a contrast ratio of 19.79:1, which passes both AA and AAA under WCAG 2.2. Black text reaches 1.06:1 and fails AA even for large text. In APCA terms that is Lc −107.7 for white and Lc 0.0 for black.
- Which CSS named color is closest to neutral-950?
- The closest is black (#000000) at ΔE OK 14.5, followed by midnightblue and navy.
Last reviewed by Arielton Oberek.