Skip to content
ColorArchive
Typography Guide
Search intent: color typography hierarchy design

Color and Typography Hierarchy: Using Color to Structure Text

A practical guide to using color in typographic systems — from text color selection and link color logic to accent headings and the role of near-black text in establishing reading comfort.

TypographyUI/UXSystems
Key points
Near-black text at lightness 12–18% is more readable for long-form content than pure black (#000000). Pure black creates the harshest contrast on white, causing eye fatigue. Slightly warm or cool near-black aligns with your palette's temperature while reducing visual strain across extended reading.
Use color to create a three-level typographic hierarchy: dark neutral for body, mid-tone neutral for secondary text, and one palette accent for links and interactive elements. This approach avoids relying solely on font size or weight to create distinction.
Colored headings work best for short-form marketing content. For multi-level document hierarchies (H2, H3, H4), color alone cannot create enough distinction — size, weight, and spacing must do the structural work, with color reserved for the top level only.

Choosing a text color that works with your palette

Body text color is the largest single color area in most interfaces. The warmth or coolness of your near-black text shifts the entire page's perceived temperature — a warm near-black (HSL 30, 8%, 14%) reads warmer than a cool one (HSL 220, 8%, 14%) even when all other palette values are identical. Match the temperature of your text near-black to your palette's overall temperature. For warm palettes (ambers, corals, terracottas) use a warm near-black. For cool palettes (blues, teals, lavenders) use a cool near-black. For neutral palettes, pure near-black with zero chroma (lightness 12–16%, saturation 0%) reads as clean and intentional.

Building a typographic color system with four roles

A complete typographic color system needs exactly four roles: primary text (near-black at L:10–16%), secondary text (mid-tone neutral at L:40–52%), placeholder and disabled text (light neutral at L:60–70%), and accent/interactive text (one palette mid-saturation color at 4.5:1 minimum contrast). Primary text carries all body copy, headings, and labels. Secondary text carries metadata, captions, and helper text. Placeholder text carries form guidance and disabled states. Accent text carries links, CTAs, and interactive elements. Four roles is enough — adding a fifth or sixth introduces hierarchy confusion rather than resolving it.

Link colors that stay in the palette

Link color must satisfy two requirements simultaneously: distinguish from body text (signal interactivity) and remain part of the palette (avoid design friction). The most palette-compatible approach is to use your primary mid-saturation accent color at full saturation against a light background, ensuring 4.5:1 contrast. On dark backgrounds, the same hue at higher lightness (L:60–75%) achieves both contrast and palette coherence. Avoid pure blue (#0000FF) as a default link color — it almost certainly does not match your palette. A cobalt at HSL(220, 70%, 52%) achieves the universal 'link' signal while remaining a palette color.

Practical next step

Move from the guide into a concrete palette lane

Guides explain the use case. Collections prove the taste. Packs handle the export and implementation layer.

Related guides