Tailwind CSS v3 color

Tailwind slate-900 #0F172A

Tailwind CSS v3's slate-900 is #0F172A. It is a very dark grayish blue in the blue family. In OKLCH it sits at lightness 0.208, chroma 0.040 and hue 265.8°. The nearest CSS named color is black (#000000), ΔE2000 12.1 away.

Relative luminance
0.0088
OKLCH L · C · h
0.208 · 0.040 · 265.8
Best text
White 17.85:1
Hue family
Blue

#0F172A color codes

HEX
#0F172A
RGB
rgb(15, 23, 42)
HSL
hsl(222, 47%, 11%)
OKLCH
oklch(0.208 0.040 265.8)
OKLab
oklab(0.208 -0.003 -0.040)
CIELAB (D65)
L* 7.96, a* 3.32, b* -14.07
XYZ (D65)
X 0.92, Y 0.88, Z 2.31
CMYK (naive)
cmyk(64%, 45%, 0%, 84%)

CIELAB and XYZ use the D65 white point; CSS lab() uses D50, so paste the OKLCH or HEX value into stylesheets. CMYK here is a plain formula with no press profile.

Legibility

Contrast: is #0F172A accessible?

White text on it reaches 17.85:1, passing AAA. Black text fails at 1.17:1.

WCAG 2 gives the same ratio whichever color is the text; APCA does not, so its Lc changes sign and size with polarity.

Open the Contrast System
  • Black text on it

    1.17:1

    • AA fails
    • AA large fails
    • AAA fails
    • APCA Lc 0

    Text is here, unreadable at 1.17:1

  • White text on it

    17.85:1

    • AA passes
    • AA large passes
    • AAA passes
    • APCA Lc −106
  • As text on black

    1.17:1

    • AA fails
    • AA large fails
    • AAA fails
    • APCA Lc 0

    Text is here, unreadable at 1.17:1

  • As text on white

    17.85:1

    • AA passes
    • AA large passes
    • AAA passes
    • APCA Lc +104

Nearest versions that pass 4.5:1

  • For text on white

    #0F172A 17.85:1

    It already reaches 17.85:1 on white, so no change is needed.

  • For text on black

    #6A758D 4.54:1

    Lightening its OKLCH lightness from 0.21 to 0.56 reaches 4.54:1 on black, keeping the hue.

Checking another pair? Use the Contrast Checker.

Studio

Adjust #0F172A live

Move lightness, chroma and hue in OKLCH, or drag on the map. The map is every lightness and chroma at the current hue: sRGB inside the solid area, Display P3 out to the dashed line.

The studio needs JavaScript.

Scale

Shades and tints of #0F172A

Eleven OKLCH lightness steps at this hue, each with its contrast against white and black. #0F172A sits at step 950.

  1. 50#F1F5FF
    White
    1.09
    Black
    19.24
  2. 100#E2EBFF
    White
    1.19
    Black
    17.56
  3. 200#CDD8EF
    White
    1.43
    Black
    14.66
  4. 300#B2BED7
    White
    1.86
    Black
    11.23
  5. 400#96A2BB
    White
    2.56
    Black
    8.18
  6. 500#7B869F
    White
    3.65
    Black
    5.75
  7. 600#646F86
    White
    5.04
    Black
    4.15
  8. 700#4E586E
    White
    7.13
    Black
    2.94
  9. 800#364054
    White
    10.40
    Black
    2.01
  10. 900#21293A
    White
    14.55
    Black
    1.44
  11. 950This color#0F172A
    White
    17.85
    Black
    1.17

Under each step, white and black text on it; a bold figure passes 4.5:1.

Tailwind CSS v3 slate scale

The real Tailwind palette, for comparison with the computed ramp above.

  1. 50#F8FAFC
    White
    1.04
    Black
    20.07
  2. 100#F1F5F9
    White
    1.09
    Black
    19.16
  3. 200#E2E8F0
    White
    1.23
    Black
    17.03
  4. 300#CBD5E1
    White
    1.48
    Black
    14.14
  5. 400#94A3B8
    White
    2.56
    Black
    8.19
  6. 500#64748B
    White
    4.75
    Black
    4.41
  7. 600#475569
    White
    7.57
    Black
    2.77
  8. 700#334155
    White
    10.35
    Black
    2.02
  9. 800#1E293B
    White
    14.62
    Black
    1.43
  10. 900This color#0F172A
    White
    17.85
    Black
    1.17
  11. 950#020617
    White
    20.17
    Black
    1.04

Gamut

How vivid #0F172A can get

At its lightness and hue, sRGB reaches OKLCH chroma 0.142; #0F172A uses 28% of it. Display P3 reaches no further at this hue.

0.00.20.40.60.80.20.40.60.8 460480500520540560580600620
  • sRGB
  • Display P3
  • Rec. 2020
  • Dominant wavelength
OKLCH chroma
0.040
sRGB edge
0.142
Display P3 edge
0.142
Rec. 2020 edge
0.151
Dominant wavelength
473 nm
Excitation purity
45%
Chromaticity
x 0.2239, y 0.2142
  • This color#0F172A
  • Most vivid in sRGB#030057
  • Most vivid in Display P3oklch(0.208 0.142 265.8)

On a screen without Display P3 the last tile shows the sRGB edge instead.

Use the wider color where screens show it
.accent {
  color: #0f172a;
}
@media (color-gamut: p3) {
  .accent { color: color(display-p3 0.0079 0 0.3264); }
}

Mixing

Mixing #0F172A

Each row is the same mix worked out in a different space, with the halfway color at its end. sRGB, which older CSS gradients use, can sag gray or dark in the middle; OKLab keeps the lightness steps even; OKLCH holds chroma and hue as it goes.

White #FFFFFF

  • sRGB50%#878B95
  • OKLab50%#7C818E
  • OKLCH50%#7C818E

Black #000000

  • sRGB50%#080C15
  • OKLab50%#02040A
  • OKLCH50%#02040A

Its complement #201601

  • sRGB50%#181716
  • OKLab50%#181818
  • OKLCH50%#260F18
In CSS
/* A gradient and a mix, worked out in OKLCH */
background: linear-gradient(in oklch, #0f172a, white);
color: color-mix(in oklch, #0f172a 50%, white);

In use

#0F172A in an interface

A button, a link, a heading, a focused field, an icon and a chart line in this color, on a light page and a dark one. Each check is a WCAG 2 contrast minimum: 1.4.3 for text, 1.4.11 for the rest.

Light page

  • Button labelText, 4.5:117.85:1 Passes
  • Link and body-size textText, 4.5:117.85:1 Passes
  • Large headingLarge text, 3:117.85:1 Passes
  • Icons, borders and focus ringsNon-text, 3:117.85:1 Passes

Dark page

  • Button labelText, 4.5:117.85:1 Passes
  • Link and body-size textText, 4.5:11.04:1 Fails
  • Large headingLarge text, 3:11.04:1 Fails
  • Icons, borders and focus ringsNon-text, 3:11.04:1 Fails

For text on this page, the nearest shade that passes is #717D95 4.52:1

Color vision

How #0F172A looks with color blindness

Tritanopia changes it most, ΔE2000 14.1; deuteranopia changes it least, 0.6.

Simulated with Machado et al. (2009) at full severity, in linear light.

Simulate a whole page What each type sees
  • Protanopia

    No working red (long-wavelength) cones

    #10192B ΔE2000 1.2

    Very close

    Reads as very dark grayish blue

  • Deuteranopia

    No working green (medium-wavelength) cones

    #0D162A ΔE2000 0.6

    Imperceptible

    Reads as very dark grayish blue

  • Tritanopia

    No working blue (short-wavelength) cones

    #041B1E ΔE2000 14.1

    Distinct

    Reads as very dark grayish teal

  • Achromatopsia

    No cone color vision; lightness only

    #171717 ΔE2000 11.2

    Distinct

    Reads as near-black

Pairing check

Checked against its complement, #201601. Their lightness contrast is only 1.00:1, so where hue collapses, add a label, icon or pattern.

VisionThe pairΔE2000Verdict
Normal vision#0F172A · #20160120.4Stays distinct
Protanopia#10192B · #1A160020.7Stays distinct
Deuteranopia#0D162A · #1D190223.0Stays distinct
Tritanopia#041B1E · #24131123.7Stays distinct
Achromatopsia#171717 · #1717170.0Easily confused

Harmony

Color harmonies for #0F172A

Its complement is #201601, a very dark grayish brown, on the warm side of the wheel.

Hue rotations in OKLCH, mapped into sRGB by trimming chroma so hue and lightness stay put.

Open the Harmony Studio
  • Base#0F172A
  • Complement#201601

Complementary

Open in Harmony Studio
  • −30°#031A27
  • Base#0F172A
  • +30°#191428
  • Base#0F172A
  • +120°#27100E
  • +240°#0B1D0C
  • Base#0F172A
  • +150°#251205
  • +210°#171A04

Split-complementary

Open in Harmony Studio

Code

Design tokens

Ready-to-paste tokens in six formats. Rename them to fit your system.

CSS custom property

:root {
  --color-slate-900: #0f172a;
}

Tailwind config

// tailwind.config.js — already built in as slate-900;
// pin the v3 value explicitly like this:
module.exports = {
  theme: {
    extend: {
      colors: {
        slate: { 900: '#0f172a' },
      },
    },
  },
};

Tailwind v4 theme

/* app.css — Tailwind CSS v4 */
@import "tailwindcss";

@theme {
  /* v4 has its own slate-900; this pins the v3 value. */
  --color-slate-900: oklch(0.208 0.040 265.8);
}

Design token (W3C DTCG)

{
  "color": {
    "slate-900": {
      "$type": "color",
      "$value": {
        "colorSpace": "srgb",
        "components": [0.0588, 0.0902, 0.1647],
        "hex": "#0f172a"
      },
      "$description": "Tailwind CSS v3 slate-900"
    }
  }
}

SwiftUI color

import SwiftUI

enum Palette {
    static let slate900 = Color(.sRGB, red: 0.059, green: 0.090, blue: 0.165, opacity: 1)
}

Jetpack Compose color

import androidx.compose.ui.graphics.Color

object Palette {
    val Slate900 = Color(0xFF0F172A)
}

Matches

The nearest match in each system

The closest CSS name, Tailwind shade, RAL Classic paint and Crayola crayon by ΔE2000; under 2 is hard to tell apart side by side. RAL and Crayola values approximate physical colors.

Tools

Open #0F172A in the tools

Each opens over this page. More colors live in the Color Library, and every color page is listed on the hub.