Tailwind CSS v3.4 color family

Tailwind gray 11 shades, 50 to 950

Gray is one of the 22 color families in Tailwind CSS v3.4, with eleven shades from 50 to 950. Its 500 shade, #6B7280, is a near-neutral gray, with OKLCH chroma 0.023. Lightness runs from 0.985 at 50 to 0.130 at 950.

500 shade
#6B7280
OKLCH hue at 500
—
Body text on white
500 to 950
Body text on black
50 to 400

Tailwind CSS 4.3.3

gray: current colors

11 shades with exact official OKLCH values. Use bg-gray-500, text-gray-500 or border-gray-500 in Tailwind. Wide-gamut colors are preserved; these are not the v3 hex values.

ColorExact OKLCHCSS variable
gray-50oklch(98.5% 0.002 247.839)--color-gray-50
gray-100oklch(96.7% 0.003 264.542)--color-gray-100
gray-200oklch(92.8% 0.006 264.531)--color-gray-200
gray-300oklch(87.2% 0.01 258.338)--color-gray-300
gray-400oklch(70.7% 0.022 261.325)--color-gray-400
gray-500oklch(55.1% 0.027 264.364)--color-gray-500
gray-600oklch(44.6% 0.03 256.802)--color-gray-600
gray-700oklch(37.3% 0.034 259.733)--color-gray-700
gray-800oklch(27.8% 0.033 256.848)--color-gray-800
gray-900oklch(21% 0.034 264.665)--color-gray-900
gray-950oklch(13% 0.028 261.692)--color-gray-950

Source: Tailwind CSS 4.3.3 theme.css (MIT). Values are pinned to this release. Older v3 reference values below are kept separately for existing projects.

Scale

Every shade, 50 to 950

Each shade has a page of its own. Under each, white and black text on it; a bold figure passes 4.5:1.

  1. 50#F9FAFB
    White
    1.04
    Black
    20.09
  2. 100#F3F4F6
    White
    1.10
    Black
    19.08
  3. 200#E5E7EB
    White
    1.23
    Black
    16.96
  4. 300#D1D5DB
    White
    1.47
    Black
    14.25
  5. 400#9CA3AF
    White
    2.53
    Black
    8.27
  6. 500#6B7280
    White
    4.83
    Black
    4.34
  7. 600#4B5563
    White
    7.55
    Black
    2.77
  8. 700#374151
    White
    10.30
    Black
    2.03
  9. 800#1F2937
    White
    14.67
    Black
    1.43
  10. 900#111827
    White
    17.73
    Black
    1.18
  11. 950#030712
    White
    20.13
    Black
    1.04

Values

Hex, RGB and OKLCH values

The Tailwind CSS v3.4 values, with the contrast of white and black text on each shade.

ShadeHEXRGBOKLCHWhite textBlack text
gray-50#F9FAFBrgb(249, 250, 251)oklch(0.985 0.002 247.8)1.0420.09
gray-100#F3F4F6rgb(243, 244, 246)oklch(0.967 0.003 264.5)1.1019.08
gray-200#E5E7EBrgb(229, 231, 235)oklch(0.928 0.006 264.5)1.2316.96
gray-300#D1D5DBrgb(209, 213, 219)oklch(0.872 0.009 258.3)1.4714.25
gray-400#9CA3AFrgb(156, 163, 175)oklch(0.714 0.019 261.3)2.538.27
gray-500#6B7280rgb(107, 114, 128)oklch(0.551 0.023 264.4)4.834.34
gray-600#4B5563rgb(75, 85, 99)oklch(0.446 0.026 256.8)7.552.77
gray-700#374151rgb(55, 65, 81)oklch(0.373 0.031 259.7)10.302.03
gray-800#1F2937rgb(31, 41, 55)oklch(0.278 0.030 256.8)14.671.43
gray-900#111827rgb(17, 24, 39)oklch(0.210 0.032 264.7)17.731.18
gray-950#030712rgb(3, 7, 18)oklch(0.130 0.027 261.7)20.131.04

Legibility

Which shades pass on each other

Every shade as text on every other shade. 48 of 110 pairings pass 4.5:1 for body text, and 14 more pass 3:1 for large text.

Text shade, then background shade50100200300400500600700800900950
50same shade1.051.181.412.424.627.239.8614.0416.9719.26
1001.05same shade1.121.332.304.396.869.3613.3316.1118.29
2001.181.12same shade1.192.053.906.108.3211.8514.3216.26
3001.411.331.19same shade1.723.285.126.999.9612.0313.66
4002.422.302.051.72same shade1.902.974.055.786.987.93
5004.624.393.903.281.90same shade1.562.133.033.664.16
6007.236.866.105.122.971.56same shade1.361.942.342.66
7009.869.368.326.994.052.131.36same shade1.421.721.95
80014.0413.3311.859.965.783.031.941.42same shade1.201.37
90016.9716.1114.3212.036.983.662.341.721.20same shade1.13
95019.2618.2916.2613.667.934.162.661.951.371.13same shade

Rows are the text shade, columns the background. A bold figure on a tinted cell passes 4.5:1 for body text; a plain one passes 3:1 for large text only; a faint one fails.

Color vision

The scale with color blindness

The same eleven shades as seen with each color vision deficiency. Lightness keeps a ramp in order even where its hue collapses.

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

What each type sees
  • Typical vision

    Closest neighbors: 50 and 100, ΔE2000 1.3

  • Protanopia

    Closest neighbors: 50 and 100, ΔE2000 1.4

  • Deuteranopia

    Closest neighbors: 50 and 100, ΔE2000 1.3

  • Tritanopia

    Closest neighbors: 50 and 100, ΔE2000 1.4

  • Achromatopsia

    Closest neighbors: 50 and 100, ΔE2000 1.2

Code

Design tokens

The whole family in six formats, ready to paste.

CSS custom properties

:root {
  --color-gray-50: #f9fafb;
  --color-gray-100: #f3f4f6;
  --color-gray-200: #e5e7eb;
  --color-gray-300: #d1d5db;
  --color-gray-400: #9ca3af;
  --color-gray-500: #6b7280;
  --color-gray-600: #4b5563;
  --color-gray-700: #374151;
  --color-gray-800: #1f2937;
  --color-gray-900: #111827;
  --color-gray-950: #030712;
}

Tailwind config

// tailwind.config.js — gray is built in; this pins the v3.4 values.
module.exports = {
  theme: {
    extend: {
      colors: {
        gray: {
          50: '#f9fafb',
          100: '#f3f4f6',
          200: '#e5e7eb',
          300: '#d1d5db',
          400: '#9ca3af',
          500: '#6b7280',
          600: '#4b5563',
          700: '#374151',
          800: '#1f2937',
          900: '#111827',
          950: '#030712',
        },
      },
    },
  },
};

Tailwind v4 theme

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

@theme {
  /* v4 has its own gray; these pin the v3 values. */
  --color-gray-50: oklch(0.985 0.002 247.8);
  --color-gray-100: oklch(0.967 0.003 264.5);
  --color-gray-200: oklch(0.928 0.006 264.5);
  --color-gray-300: oklch(0.872 0.009 258.3);
  --color-gray-400: oklch(0.714 0.019 261.3);
  --color-gray-500: oklch(0.551 0.023 264.4);
  --color-gray-600: oklch(0.446 0.026 256.8);
  --color-gray-700: oklch(0.373 0.031 259.7);
  --color-gray-800: oklch(0.278 0.030 256.8);
  --color-gray-900: oklch(0.210 0.032 264.7);
  --color-gray-950: oklch(0.130 0.027 261.7);
}

Design tokens (W3C DTCG)

{
  "color": {
    "gray": {
      "50": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.9765, 0.9804, 0.9843],
          "hex": "#f9fafb"
        }
      },
      "100": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.9529, 0.9569, 0.9647],
          "hex": "#f3f4f6"
        }
      },
      "200": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.898, 0.9059, 0.9216],
          "hex": "#e5e7eb"
        }
      },
      "300": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.8196, 0.8353, 0.8588],
          "hex": "#d1d5db"
        }
      },
      "400": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.6118, 0.6392, 0.6863],
          "hex": "#9ca3af"
        }
      },
      "500": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.4196, 0.4471, 0.502],
          "hex": "#6b7280"
        }
      },
      "600": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.2941, 0.3333, 0.3882],
          "hex": "#4b5563"
        }
      },
      "700": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.2157, 0.2549, 0.3176],
          "hex": "#374151"
        }
      },
      "800": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.1216, 0.1608, 0.2157],
          "hex": "#1f2937"
        }
      },
      "900": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.0667, 0.0941, 0.1529],
          "hex": "#111827"
        }
      },
      "950": {
        "$type": "color",
        "$value": {
          "colorSpace": "srgb",
          "components": [0.0118, 0.0275, 0.0706],
          "hex": "#030712"
        }
      }
    }
  }
}

SwiftUI colors

import SwiftUI

enum Palette {
    static let gray50 = Color(.sRGB, red: 0.976, green: 0.980, blue: 0.984, opacity: 1)
    static let gray100 = Color(.sRGB, red: 0.953, green: 0.957, blue: 0.965, opacity: 1)
    static let gray200 = Color(.sRGB, red: 0.898, green: 0.906, blue: 0.922, opacity: 1)
    static let gray300 = Color(.sRGB, red: 0.820, green: 0.835, blue: 0.859, opacity: 1)
    static let gray400 = Color(.sRGB, red: 0.612, green: 0.639, blue: 0.686, opacity: 1)
    static let gray500 = Color(.sRGB, red: 0.420, green: 0.447, blue: 0.502, opacity: 1)
    static let gray600 = Color(.sRGB, red: 0.294, green: 0.333, blue: 0.388, opacity: 1)
    static let gray700 = Color(.sRGB, red: 0.216, green: 0.255, blue: 0.318, opacity: 1)
    static let gray800 = Color(.sRGB, red: 0.122, green: 0.161, blue: 0.216, opacity: 1)
    static let gray900 = Color(.sRGB, red: 0.067, green: 0.094, blue: 0.153, opacity: 1)
    static let gray950 = Color(.sRGB, red: 0.012, green: 0.027, blue: 0.071, opacity: 1)
}

Jetpack Compose colors

import androidx.compose.ui.graphics.Color

object Palette {
    val Gray50 = Color(0xFFF9FAFB)
    val Gray100 = Color(0xFFF3F4F6)
    val Gray200 = Color(0xFFE5E7EB)
    val Gray300 = Color(0xFFD1D5DB)
    val Gray400 = Color(0xFF9CA3AF)
    val Gray500 = Color(0xFF6B7280)
    val Gray600 = Color(0xFF4B5563)
    val Gray700 = Color(0xFF374151)
    val Gray800 = Color(0xFF1F2937)
    val Gray900 = Color(0xFF111827)
    val Gray950 = Color(0xFF030712)
}

Families

Other Tailwind families

The rest of the Tailwind CSS v3.4 palette, in the order Tailwind lists it.