Count roles instead of swatches
Separate color families from individual tokens. One blue family may include ten shades but still function as a single brand accent. Conversely, success, warning, error, and information may require four semantic families even when used sparingly.
List the roles first: backgrounds, surfaces, text levels, borders, primary action, secondary action, links, focus, selected state, and system feedback. Add new colors only when an existing role cannot communicate the needed distinction.
Use neutrals for most of the interface
Well-structured neutrals carry layout, typography, borders, and elevation. This allows the brand accent to remain noticeable. When every card, icon, and heading uses a saturated hue, the interface loses hierarchy and important actions compete for attention.
A neutral scale should still be tested for contrast. Several adjacent grays may be visually redundant, so remove shades that do not produce a meaningful difference in real components.
Control accent proportions
A practical starting pattern is to let neutrals occupy most of the screen, use the primary accent for key actions and selection, and reserve secondary accents for limited emphasis. This is a proportion principle, not a strict percentage rule.
Preview a full page rather than equal swatches. Equal swatches exaggerate minor colors and hide how the palette behaves when one surface dominates.
Keep semantic colors consistent
Do not reuse the error red as a decorative brand accent in the same product. Users learn meaning through repetition; changing that meaning creates hesitation. The same applies to success green, warning amber, and informational colors.
Each semantic family needs readable foregrounds, subtle backgrounds, borders, and icon states. A single HEX value is rarely enough for all feedback components.
Expand carefully for data visualization
Charts may require more categorical colors, but every series should remain distinguishable through labels, line styles, markers, patterns, or direct annotation. Avoid importing a large rainbow palette into the rest of the interface.
Create a separate data palette with usage limits and test it for color-vision differences and adjacent contrast. Keep product UI tokens and chart tokens documented as related but distinct systems.
Count semantic jobs before counting swatches
A mature interface can contain dozens of raw shade values while still feeling simple because users experience a smaller set of consistent roles. Background, surface, text, primary action, border, focus, success, warning, and error may each draw from a larger raw palette. The important question is whether each role is predictable—not whether the stylesheet contains exactly five or ten HEX values.
- One background family and one surface family
- Primary and muted text
- One primary interactive color with state variations
- Border/focus values that remain visible on relevant surfaces
- Semantic feedback colors used consistently
- Extra categorical colors only when the product genuinely needs them
Expand the system with rules
When a product needs more colors, add them with a reason and a usage rule. A data-visualization series is different from a new button color. A marketing accent is different from an error token. Mapping raw colors into semantic roles with the Design Token Generator makes that distinction visible and easier to maintain.
Practical checklist
- Define roles before selecting shades
- Let neutrals carry most interface structure
- Reserve accents for meaningful emphasis
- Keep semantic meanings consistent
- Treat data visualization as a separate palette
This guide is maintained by the Colorrow Editorial Team. Suggestions and corrections can be sent to contact.colorrow@gmail.com.