RAL Classic color

RAL 7004 Signal grey #9EA0A1

RAL 7004 Signal grey is shown here as #9EA0A1, a widely published sRGB approximation of the printed swatch. It is a gray in the neutral family. In OKLCH it sits at lightness 0.704 with chroma 0.003, too low for hue to matter. The nearest CSS named color is darkgray (#A9A9A9), ΔE2000 3.0 away.

Relative luminance
0.3498
OKLCH L · C · h
0.704 · 0.003 · 228.8
Best text
Black 7.99:1
Hue family
Neutral

#9EA0A1 color codes

HEX
#9EA0A1
RGB
rgb(158, 160, 161)
HSL
hsl(200, 2%, 63%)
OKLCH
oklch(0.704 0.003 228.8)
OKLab
oklab(0.704 -0.002 -0.002)
CIELAB (D65)
L* 65.74, a* -0.52, b* -0.77
XYZ (D65)
X 33.10, Y 34.98, Z 38.72
CMYK (naive)
cmyk(2%, 1%, 0%, 37%)

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.

RAL and RAL Classic are trademarks of RAL gGmbH, which this site is not affiliated with. The sRGB value is an approximation of the printed swatch; check a physical RAL color card before you specify a paint.

Legibility

Contrast: is #9EA0A1 accessible?

Black text on it reaches 7.99:1, passing AAA. White text fails at 2.62: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

    7.99:1

    • AA passes
    • AA large passes
    • AAA passes
    • APCA Lc +52
  • White text on it

    2.62:1

    • AA fails
    • AA large fails
    • AAA fails
    • APCA Lc −56
  • As text on black

    7.99:1

    • AA passes
    • AA large passes
    • AAA passes
    • APCA Lc −50
  • As text on white

    2.62:1

    • AA fails
    • AA large fails
    • AAA fails
    • APCA Lc +51

Nearest versions that pass 4.5:1

  • For text on white

    #747677 4.56:1

    Darkening its OKLCH lightness from 0.70 to 0.56 reaches 4.56:1 on white, keeping the hue.

  • For text on black

    #9EA0A1 7.99:1

    It already reaches 7.99:1 on black, so no change is needed.

Checking another pair? Use the Contrast Checker.

Studio

Adjust #9EA0A1 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 #9EA0A1

Eleven OKLCH lightness steps at this hue, each with its contrast against white and black. #9EA0A1 sits at step 400.

  1. 50#F4F5F6
    White
    1.09
    Black
    19.23
  2. 100#EAEBEC
    White
    1.19
    Black
    17.59
  3. 200#D6D8D9
    White
    1.43
    Black
    14.68
  4. 300#BCBEBF
    White
    1.86
    Black
    11.25
  5. 400This color#9EA0A1
    White
    2.62
    Black
    7.99
  6. 500#848687
    White
    3.65
    Black
    5.74
  7. 600#6D6F70
    White
    5.05
    Black
    4.15
  8. 700#575859
    White
    7.12
    Black
    2.94
  9. 800#3E4041
    White
    10.42
    Black
    2.01
  10. 900#28292A
    White
    14.57
    Black
    1.44
  11. 950#151617
    White
    18.11
    Black
    1.15

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

Gamut

How vivid #9EA0A1 can get

A gray has no hue, so no gamut holds a more vivid version of #9EA0A1: more chroma would make it another color.

0.00.20.40.60.80.20.40.60.8 460480500520540560580600620
  • sRGB
  • Display P3
  • Rec. 2020
  • Dominant wavelength
OKLCH chroma
0.003
sRGB edge
No hue
Display P3 edge
No hue
Rec. 2020 edge
No hue
Dominant wavelength
None, near white
Excitation purity
1%
Chromaticity
x 0.3099, y 0.3275

Mixing

Mixing #9EA0A1

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%#CFD0D0
  • OKLab50%#CDCECF
  • OKLCH50%#CDCECF

Black #000000

  • sRGB50%#4F5051
  • OKLab50%#3A3B3C
  • OKLCH50%#3A3B3C
In CSS
/* A gradient and a mix, worked out in OKLCH */
background: linear-gradient(in oklch, #9ea0a1, white);
color: color-mix(in oklch, #9ea0a1 50%, white);

In use

#9EA0A1 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:17.99:1 Passes
  • Link and body-size textText, 4.5:12.62:1 Fails
  • Large headingLarge text, 3:12.62:1 Fails
  • Icons, borders and focus ringsNon-text, 3:12.62:1 Fails

For text on this page, the nearest shade that passes is #747677 4.56:1

Dark page

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

Color vision

How #9EA0A1 looks with color blindness

As a neutral it barely changes under any simulation, ΔE2000 1.4 at most.

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

    #9FA0A1 ΔE2000 0.5

    Imperceptible

    Reads as gray

  • Deuteranopia

    No working green (medium-wavelength) cones

    #9F9FA1 ΔE2000 1.4

    Very close

    Reads as gray

  • Tritanopia

    No working blue (short-wavelength) cones

    #9DA0A0 ΔE2000 0.9

    Imperceptible

    Reads as gray

  • Achromatopsia

    No cone color vision; lightness only

    #A0A0A0 ΔE2000 1.1

    Very close

    Reads as gray

Pairing check

A near-neutral has no complementary hue to pair with, so tell it apart from neighboring grays by lightness contrast alone.

Harmony

Color harmonies for #9EA0A1

A neutral has no hue to rotate, so every harmony collapses back to the same gray. Pair it with an accent color instead.

Or pair it by lightness: steps of its own scale as text on it, and what each can carry.

Build a lightness scale in Harmony Studio
  • Step 950 #151617 · 6.89:1

    Body text, AA

  • Step 700 #575859 · 2.71:1

    Decoration only, under 3:1

  • Step 300 #BCBEBF · 1.40:1

    Decoration only, under 3:1

Code

Design tokens

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

CSS custom property

:root {
  --color-ral-7004: #9ea0a1;
}

Tailwind config

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        'ral-7004': '#9ea0a1',
      },
    },
  },
};

Tailwind v4 theme

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

@theme {
  --color-ral-7004: oklch(0.704 0.003 228.8);
}

Design token (W3C DTCG)

{
  "color": {
    "ral-7004": {
      "$type": "color",
      "$value": {
        "colorSpace": "srgb",
        "components": [0.6196, 0.6275, 0.6314],
        "hex": "#9ea0a1"
      },
      "$description": "RAL 7004 Signal grey (approximate sRGB)"
    }
  }
}

SwiftUI color

import SwiftUI

enum Palette {
    static let ral7004 = Color(.sRGB, red: 0.620, green: 0.627, blue: 0.631, opacity: 1)
}

Jetpack Compose color

import androidx.compose.ui.graphics.Color

object Palette {
    val Ral7004 = Color(0xFF9EA0A1)
}

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 #9EA0A1 in the tools

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