Tailwind CSS v4 default palette
Tailwind red-50: #FEF2F2
In Tailwind CSS v4, red-50 is defined as --color-red-50: oklch(97.1% 0.013 17.38), which is #FEF2F2 in hex and rgb(254, 242, 242): an off-white with a pink tint. In Tailwind v3, red-50 was #FEF2F2.
In OKLCH, red-50 has a lightness of 97.1%, chroma 0.013 and hue 17.4°.
The value fits inside sRGB, so the hex #FEF2F2 represents it without loss on any screen.
In v3, red-50 was #FEF2F2. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
Tailwind red is the default choice for errors and destructive actions; the 600 and 700 shades are the usual picks for text and buttons on white.
Color codes for red-50
| Tailwind v4 token | --color-red-50 |
|---|---|
| OKLCH (source value) | oklch(97.1% 0.013 17.38) |
| HEX | #FEF2F2 |
| RGB | rgb(254, 242, 242) |
| HSL | hsl(0, 86%, 97%) |
| HWB | hwb(0 95% 0%) |
| CMYK (naive, no ICC profile) | cmyk(0%, 5%, 5%, 0%) |
| Decimal | 16,708,338 |
| Tailwind v3 hex | #FEF2F2 |
| Utility classes | bg-red-50, text-red-50, border-red-50 |
Tailwind red scale
Contrast and accessibility
On red-50, black text has a contrast ratio of 19.19:1 and passes AAA at any text size; white text reaches 1.09: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 red-50 | 19.19:1 | Pass | Pass | Pass | Pass | 99.8 |
| White text on red-50 | 1.09:1 | Fail | Fail | Fail | Fail | 0.0 |
| Red-50 text on white | 1.09:1 | Fail | Fail | Fail | Fail | 0.0 |
| Red-50 text on black | 19.19:1 | Pass | Pass | Pass | Pass | −101.0 |
Tints and shades
Each step mixes var(--color-red-50) with white (tints) or black (shades) in gamma-encoded sRGB, the same result as color-mix(in srgb, var(--color-red-50), white 25%) in CSS.
Tints (mixed with white)
- 5%
#fef3f3 - 15%
#fef4f4 - 25%
#fef5f5 - 35%
#fef7f7 - 45%
#fef8f8 - 55%
#fff9f9 - 65%
#fffafa - 75%
#fffcfc - 85%
#fffdfd - 95%
#fffefe
Shades (mixed with black)
- 5%
#f1e6e6 - 15%
#d8cece - 25%
#bfb6b6 - 35%
#a59d9d - 45%
#8c8585 - 55%
#726d6d - 65%
#595555 - 75%
#403d3d - 85%
#262424 - 95%
#0d0c0c
Color harmonies
Rotating the hue in OKLCH while keeping lightness and chroma, red-50's complementary color is #ECF8F8 (close to aliceblue), its analogous colors are #FDF2F7 and #FDF3EE, and its triadic partners are #F1F8EF and #F0F6FE. For text on top, black gives the higher contrast.
| Harmony | Rotation | Color |
|---|---|---|
| Complementary | +180° | #ecf8f8 |
| Analogous | −30°, +30° | #fdf2f7#fdf3ee |
| Triadic | +120°, +240° | #f1f8ef#f0f6fe |
| Split-complementary | +150°, +210° | #eef8f4#edf7fc |
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 red-50 is close to neutral: its OKLCH chroma is only 0.013, so its temperature comes from context. The faint 0° 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 |
|---|---|---|
| lavenderblush | #fff0f5 | 0.8 |
| seashell | #fff5ee | 1.1 |
| whitesmoke | #f5f5f5 | 1.3 |
Nearest Tailwind v4 colors
| Color | HEX | ΔE OK |
|---|---|---|
| rose-50 | #fff1f2 | 0.3 |
| pink-50 | #fdf2f8 | 0.8 |
| neutral-100 | #f5f5f5 | 1.3 |
Code snippets
<div class="bg-red-50 text-black">...</div>
<p class="text-red-50 border-red-50">...</p>.element {
color: var(--color-red-50);
background-color: oklch(97.1% 0.013 17.38);
border-color: #fef2f2;
outline-color: rgb(254 242 242);
}import SwiftUI
extension Color {
static let red50 = Color(red: 0.996, green: 0.949, blue: 0.949)
}import androidx.compose.ui.graphics.Color
val Red50 = Color(0xFFFEF2F2)import 'package:flutter/material.dart';
const red50 = Color(0xFFFEF2F2);<!-- res/values/colors.xml -->
<color name="red_50">#FEF2F2</color>Frequently asked questions
- What is the hex code for Tailwind red-50?
- In Tailwind CSS v4, red-50 is oklch(97.1% 0.013 17.38), which converts to #FEF2F2 (rgb(254, 242, 242)) in sRGB. In Tailwind v3 the same name was #FEF2F2.
- What is the difference between red-50 in Tailwind v3 and v4?
- v3 used the hex #FEF2F2; v4 redefined the palette in OKLCH as oklch(97.1% 0.013 17.38). In v3, red-50 was #FEF2F2. The v4 value is ΔE OK 0.0 away, below the point where most people can tell them apart.
- How do I use red-50 in plain CSS?
- Tailwind v4 defines every palette color as a theme variable, so in CSS you write var(--color-red-50). By default Tailwind only emits the variables your project uses; @theme static emits all of them.
- Can you use white text on red-50?
- White text on red-50 has a contrast ratio of 1.09:1, which fails AA even for large text under WCAG 2.2. Black text reaches 19.19:1 and passes both AA and AAA. In APCA terms that is Lc 0.0 for white and Lc 99.8 for black.
- Which CSS named color is closest to red-50?
- The closest is lavenderblush (#FFF0F5) at ΔE OK 0.8, followed by seashell and whitesmoke.
Last reviewed by Arielton Oberek.