Harmony analysis that explains itself
11 harmony modes — from structured relationships like triadic, square tetrad, and rectangular tetrad to Smart, a proprietary engine that selects from 12 curated archetypes. Every issue comes with a one-click fix.
11 harmony modes
Choose a structured mode for precise relationships, or let Smart mode select the best archetype for your vibe. Free mode validates without imposing a model — it flags awkward hue gaps (50–120° apart) without requiring a specific pattern.
- Structured: complementary, analogous, triadic, square tetrad, rectangular tetrad, split-complementary, compound
- Tonal: monochromatic (single hue, varied S/L) and shades (single hue, varied lightness)
- Smart: archetype-driven generation with warm accent guarantee
- Free: unconstrained validation with hue gap warnings
+ Monochromatic, Shades, Free
Smart mode — 12 curated archetypes
Smart mode goes beyond hue relationships. It selects from 12 professionally designed archetypes based on your vibe — from Muted Editorial to Electric Neon — each defining OKLCH chroma and lightness ranges per color role. Then it applies one of 8 hue templates and enforces a lightness hierarchy across roles.
- Archetype selected by vibe: calm, bold, playful, premium, or technical
- Lightness hierarchy enforced — hero darkest, accents progressively lighter
- Warm accent guaranteed: reds (60%), oranges (30%), warm yellow (10%)
- 8 hue templates: complementary-pop, split-complement, analogous-warm, triadic, and more
12 curated archetypes — 6 shown
8 issue flags with auto-fix
Harmony analysis classifies each color as neutral, functional, or structural, then evaluates using Z-scores and OKLCH measurements. Every flagged issue includes a specific, one-click fix — shift a hue by 15°, reduce saturation toward the palette mean, or adjust lightness to meet contrast targets.
- offHarmonyModel: hue doesn't match mode targets (>20° tolerance)
- tooVibrant / underSaturated: saturation outliers by Z-score
- tooDark / tooLight: lightness outliers outside palette range
- lowContrast: text roles fail WCAG AA (4.5:1) against paired backgrounds
- colorCountMismatch: palette size doesn't match mode expectation
offHarmonyModel
Hue 35° from nearest target
tooVibrant
Saturation Z-score > 1.0
lowContrast
Text fails AA (4.5:1)
colorCountMismatch
3 colors, mode expects 4