Midnight Blue Is #191970
Midnight blue is dark enough to substitute for black while retaining a colour cast. Using it instead of #000000 for body text is a long-standing typographic practice — pure black on pure white is harsher than most screens need.
Every Format
| Format | Value |
|---|---|
| HEX | #191970 |
| RGB | rgb(25, 25, 112) |
| HSL | hsl(240, 64%, 27%) |
| CMYK | 78%, 78%, 0%, 56% |
| Nearest Tailwind | indigo-900 (#312e81) |
Contrast and Accessibility
| Combination | Ratio | WCAG |
|---|---|---|
| Midnight Blue text on white | 14.85:1 | AAA |
| Midnight Blue text on black | 1.41:1 | fails |
| White text on midnight blue | 14.85:1 | AAA |
A Ramp Built From It
| Step | Hex |
|---|---|
| 100 | #0d0d38 |
| 200 | #11114b |
| 300 | #15155d |
| 400 | #191970 |
| 500 | #3f3f88 |
| 600 | #6666a0 |
| 700 | #8c8cb8 |
Harmonies
| Relationship | Hex |
|---|---|
| Base | #191970 |
| Complementary | #717119 |
| Triadic | #711919 and #197119 |
Print Reproduction
The CMYK values above are a mathematical conversion, not a press-ready specification. Screen colours are emitted light and print colours are reflected ink, and the screen gamut is larger — highly saturated values simply do not exist in CMYK.
For brand-critical work, specify a Pantone reference and let the printer match it rather than trusting a CMYK conversion.
A Full Ramp From This Colour
Design systems settle on a 50–900 scale because it covers backgrounds, borders, text and states without anyone reaching outside the palette. Mixing toward white and black rather than adjusting HSL lightness keeps more of the hue's character:
| Step | Colour | Contrast on white | Safe for |
|---|---|---|---|
| 50 | #F5F9FF | 1.06:1 | backgrounds and fills |
| 100 | #EBF3FE | 1.12:1 | backgrounds and fills |
| 200 | #CEE0FD | 1.34:1 | backgrounds and fills |
| 300 | #B1CDFB | 1.62:1 | backgrounds and fills |
| 400 | #76A8F9 | 2.40:1 | backgrounds and fills |
| 500 | #3B82F6 | 3.68:1 | large text, borders |
| 600 | #326FD1 | 4.85:1 | body text on white |
| 700 | #295BAC | 6.59:1 | body text on white |
| 800 | #204887 | 8.98:1 | body text on white |
| 900 | #183462 | 12.31:1 | body text on white |
Adjusting It
Base colour in HSL is hsl(217, 91%, 60%). Two useful moves:
``css
/* +10% lightness, same hue */
--lighter: #6da2f8;
/* −10% lightness */
--darker: #0b64f4;
``
Raising lightness also drops perceived saturation, so a lightened colour reads greyer than its numbers suggest. Adding 5–10% saturation alongside every 20% of lightness keeps the ramp looking like one hue rather than a fade to grey.