Tailwind CSS v4 default palette
Tailwind blue-50: #EFF6FF
In Tailwind CSS v4, blue-50 is defined as --color-blue-50: oklch(97% 0.014 254.604), which is #EFF6FF in hex and rgb(239, 246, 255): an off-white with a sky blue tint. In Tailwind v3, blue-50 was #EFF6FF.
In OKLCH, blue-50 has a lightness of 97.0%, chroma 0.014 and hue 254.6°.
The value fits inside sRGB, so the hex #EFF6FF represents it without loss on any screen.
In v3, blue-50 was #EFF6FF. The v4 value is ΔE OK 0.1 away, below the point where most people can tell them apart.
Tailwind blue is the default for links, focus rings and primary buttons in many projects built on the framework.
Color codes for blue-50
| Tailwind v4 token | --color-blue-50 |
|---|---|
| OKLCH (source value) | oklch(97% 0.014 254.604) |
| HEX | #EFF6FF |
| RGB | rgb(239, 246, 255) |
| HSL | hsl(214, 100%, 97%) |
| HWB | hwb(214 94% 0%) |
| CMYK (naive, no ICC profile) | cmyk(6%, 4%, 0%, 0%) |
| Decimal | 15,726,335 |
| Tailwind v3 hex | #EFF6FF |
| Utility classes | bg-blue-50, text-blue-50, border-blue-50 |
Tailwind blue scale
Contrast and accessibility
On blue-50, black text has a contrast ratio of 19.29:1 and passes AAA at any text size; white text reaches 1.08: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 blue-50 | 19.29:1 | Pass | Pass | Pass | Pass | 100.2 |
| White text on blue-50 | 1.08:1 | Fail | Fail | Fail | Fail | 0.0 |
| Blue-50 text on white | 1.08:1 | Fail | Fail | Fail | Fail | 0.0 |
| Blue-50 text on black | 19.29:1 | Pass | Pass | Pass | Pass | −101.4 |
Tints and shades
Each step mixes var(--color-blue-50) with white (tints) or black (shades) in gamma-encoded sRGB, the same result as color-mix(in srgb, var(--color-blue-50), white 25%) in CSS.
Tints (mixed with white)
- 5%
#f0f6ff - 15%
#f1f7ff - 25%
#f3f8ff - 35%
#f5f9ff - 45%
#f6faff - 55%
#f8fbff - 65%
#f9fcff - 75%
#fbfdff - 85%
#fdfeff - 95%
#feffff
Shades (mixed with black)
- 5%
#e3eaf2 - 15%
#cbd1d9 - 25%
#b3b9bf - 35%
#9ba0a6 - 45%
#83878c - 55%
#6c6f73 - 65%
#545659 - 75%
#3c3e40 - 85%
#242526 - 95%
#0c0c0d
Color harmonies
Rotating the hue in OKLCH while keeping lightness and chroma, blue-50's complementary color is #FBF4EB (close to seashell), its analogous colors are #ECF7FC and #F4F4FF, and its triadic partners are #FEF2F2 and #F1F7EE. For text on top, black gives the higher contrast.
| Harmony | Rotation | Color |
|---|---|---|
| Complementary | +180° | #fbf4eb |
| Analogous | −30°, +30° | #ecf7fc#f4f4ff |
| Triadic | +120°, +240° | #fef2f2#f1f7ee |
| Split-complementary | +150°, +210° | #fef2ee#f6f6eb |
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 blue-50 is close to neutral: its OKLCH chroma is only 0.014, so its temperature comes from context. The faint 214° hue gives it a slightly cool 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 |
|---|---|---|
| aliceblue | #f0f8ff | 0.6 |
| ghostwhite | #f8f8ff | 1.4 |
| whitesmoke | #f5f5f5 | 1.4 |
Code snippets
<div class="bg-blue-50 text-black">...</div>
<p class="text-blue-50 border-blue-50">...</p>.element {
color: var(--color-blue-50);
background-color: oklch(97% 0.014 254.604);
border-color: #eff6ff;
outline-color: rgb(239 246 255);
}import SwiftUI
extension Color {
static let blue50 = Color(red: 0.937, green: 0.965, blue: 1.000)
}import androidx.compose.ui.graphics.Color
val Blue50 = Color(0xFFEFF6FF)import 'package:flutter/material.dart';
const blue50 = Color(0xFFEFF6FF);<!-- res/values/colors.xml -->
<color name="blue_50">#EFF6FF</color>Frequently asked questions
- What is the hex code for Tailwind blue-50?
- In Tailwind CSS v4, blue-50 is oklch(97% 0.014 254.604), which converts to #EFF6FF (rgb(239, 246, 255)) in sRGB. In Tailwind v3 the same name was #EFF6FF.
- What is the difference between blue-50 in Tailwind v3 and v4?
- v3 used the hex #EFF6FF; v4 redefined the palette in OKLCH as oklch(97% 0.014 254.604). In v3, blue-50 was #EFF6FF. The v4 value is ΔE OK 0.1 away, below the point where most people can tell them apart.
- How do I use blue-50 in plain CSS?
- Tailwind v4 defines every palette color as a theme variable, so in CSS you write var(--color-blue-50). By default Tailwind only emits the variables your project uses; @theme static emits all of them.
- Can you use white text on blue-50?
- White text on blue-50 has a contrast ratio of 1.08:1, which fails AA even for large text under WCAG 2.2. Black text reaches 19.29:1 and passes both AA and AAA. In APCA terms that is Lc 0.0 for white and Lc 100.2 for black.
- Which CSS named color is closest to blue-50?
- The closest is aliceblue (#F0F8FF) at ΔE OK 0.6, followed by ghostwhite and whitesmoke.
Last reviewed by Arielton Oberek.