← Drag the line or use arrow keys to see colors change →
Original Colors (Less Accessible)
Tuned Colors (More Accessible)

CM-Colors

You pick the colors. We make them accessible.

(Our color wizard can work miracles, but even magic has limits - don't expect us to make neon yellow on white look good!)

Install

Tiny Changes, Huge Impact

Changes so subtle you won't notice them. Impact so significant your users will thank you.

Hard to Read

Beautiful dusty blue that fails accessibility

#5f7887 on #e6f0f5 - FAIL

See the Magic in Action

Real examples showing the subtle but powerful improvements

Side by side comparison showing before and after color accessibility improvements with WCAG compliance indicators

The Magic One-Liner

from cm_colors import ColorPair

# Your beautiful but inaccessible colors
pair = ColorPair('#5f7887', '#e6f0f5')
print(f"Original: {pair.wcag_level}")  # FAIL

# ✨ The magic happens here ✨
tuned_color, success = pair.tune_colors()
print(f"Tuned: {tuned_color}")        # #5c6f7b
print(f"Accessible: {success}")       # True

CM-Colors

You pick the colors. We make them accessible.

(Our color wizard can work miracles, but even magic has limits - don't expect us to make neon yellow on white look good!)

Install

Tiny Changes, Huge Impact

Changes so subtle you won't notice them. Impact so significant your users will thank you.

Easy to Read

Barely noticeable change, now accessible

#5c6f7b on #e6f0f5 - AA ✓

See the Magic in Action

Real examples showing the subtle but powerful improvements

Side by side comparison showing before and after color accessibility improvements with WCAG compliance indicators

The Magic One-Liner

from cm_colors import ColorPair

# Your beautiful but inaccessible colors
pair = ColorPair('#5f7887', '#e6f0f5')
print(f"Original: {pair.wcag_level}")  # FAIL

# ✨ The magic happens here ✨
tuned_color, success = pair.tune_colors()
print(f"Tuned: {tuned_color}")        # #5c6f7b
print(f"Accessible: {success}")       # True