Fatskills
Practice. Master. Repeat.
Study Guide: Principles of UX / UI (Product Design): Color Theory and Accessibility (Contrast Ratios, WCAG 2.1 AA/AAA)
Source: https://www.fatskills.com/user-interface-design-user-experience-design/chapter/ux-ui-product-design-color-theory-and-accessibility-contrast-ratios-wcag-21-aaaaa

Principles of UX / UI (Product Design): Color Theory and Accessibility (Contrast Ratios, WCAG 2.1 AA/AAA)

By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.

⏱️ ~7 min read

Color Theory and Accessibility (Contrast Ratios, WCAG 2.1 AA/AAA)

Portfolio-Ready Study Guide: Color Theory & Accessibility (Contrast Ratios, WCAG 2.1 AA/AAA)

What This Is

Color isn’t just about aesthetics—it’s a functional tool that guides users, communicates hierarchy, and ensures inclusivity. Poor color choices can make text unreadable, buttons invisible, or forms frustrating, leading to drop-offs (e.g., a checkout button that blends into the background) or exclusion (e.g., a hospital portal where color-coded alerts are missed by color-blind users). Mastering contrast ratios and WCAG standards ensures your designs are usable, accessible, and legally compliant (many countries mandate WCAG AA for public-facing products).


Key Terms & Principles

  • Contrast Ratio: The difference in luminance (brightness) between text and its background. Measured from 1:1 (no contrast, e.g., white on white) to 21:1 (max contrast, e.g., black on white).
  • Example: A gray #777777 button on a white #FFFFFF background has a 4.5:1 ratio (WCAG AA compliant for normal text).

  • WCAG 2.1 AA/AAA:

  • AA (Minimum Standard): 4.5:1 for normal text, 3:1 for large text (18.66px+ bold or 24px+ regular).
  • AAA (Enhanced Standard): 7:1 for normal text, 4.5:1 for large text.
  • Example: A healthcare app’s error message (red #D32F2F on white #FFFFFF) must meet 4.5:1 to be AA compliant.

  • Hue, Saturation, Lightness (HSL): A color model that separates color into three properties:

  • Hue: The "color" (e.g., red, blue).
  • Saturation: Intensity (0% = gray, 100% = vivid).
  • Lightness: Brightness (0% = black, 100% = white).
  • Example: Adjusting a button’s lightness from 50% to 70% can improve contrast without changing its hue.

  • Color Blindness (Protanopia/Deuteranopia/Tritanopia):

  • Protanopia: Red-green confusion (1% of men).
  • Deuteranopia: Red-green confusion (6% of men).
  • Tritanopia: Blue-yellow confusion (rare).
  • Example: Avoid using red and green for "success/error" states—add icons (?/?) or patterns (stripes) for clarity.

  • Simultaneous Contrast: When two colors are placed side by side, they appear to shift in hue/saturation.

  • Example: A gray button on a blue background may look slightly purple due to this effect.

  • Von Restorff Effect (Isolation Effect): Items that stand out visually are more memorable.

  • Example: A bright yellow "Upgrade Now" button on a neutral dashboard draws attention.

  • Gestalt Principles (Proximity & Similarity):

  • Proximity: Items close together are perceived as related.
  • Similarity: Items with similar color/shape are grouped.
  • Example: A form with grouped fields (e.g., "Billing Address" in a light gray box) uses proximity and similarity to reduce cognitive load.

  • Semantic Color: Using color to convey meaning (e.g., red = error, green = success).

  • Example: A "Delete" button in red signals danger, while a "Save" button in blue feels neutral.

  • Accessible Color Palettes:

  • Primary Palette: 3–5 core colors (e.g., brand blue, gray, white).
  • Extended Palette: Tints/shades of primaries for states (hover, disabled).
  • Example: A design system with a base blue (#2196F3), a lighter tint (#BBDEFB) for backgrounds, and a darker shade (#0D47A1) for text links.

  • Figma’s Contrast Checker: A plugin/tool to test WCAG compliance in real time.

  • Example: Highlight text and background layers in Figma, then run the Stark or A11y plugin to check ratios.

  • Dark Mode Accessibility:

  • AA Standard: 7:1 for normal text (harder to achieve than light mode).
  • Example: A dark gray #121212 background with white #FFFFFF text (15.3:1) is AAA compliant.

Step-by-Step Process Flow

1. Audit Your Current Palette (Figma/Real Product)

  • Action: Open your design file and list all text/background color pairs.
  • Tool: Use Figma’s "Inspect" panel or a plugin like Stark to check contrast ratios.
  • Example: A dashboard with #666666 text on #F5F5F5 background fails WCAG AA (2.9:1).

2. Adjust Colors for Compliance

  • Action: For failing pairs, tweak lightness (HSL) or saturation to improve contrast.
  • Tool: Use Adobe Color’s Contrast Checker or WebAIM’s Contrast Checker.
  • Example: Change #666666 to #555555 (4.6:1) to pass AA.

3. Test for Color Blindness

  • Action: Simulate color blindness using Figma’s "Protanopia/Deuteranopia" view or Color Oracle (free tool).
  • Example: A red error message (#FF0000) on green (#00FF00) may look identical to a deuteranopic user—add an error icon ().

4. Create an Accessible Color System

  • Action: Build a Figma color style guide with:
  • Primary/secondary colors.
  • Text/background pairs (e.g., "Body Text" = #333333 on #FFFFFF).
  • State colors (hover, disabled, active).
  • Example: Primary: #2196F3 (AAA compliant on white) Error: #D32F2F (AA compliant on white) Success: #388E3C (AA compliant on white)

5. Validate with Real Users

  • Action: Conduct a guerrilla usability test with 3–5 users (including 1 color-blind participant if possible).
  • Task: Ask them to identify interactive elements (buttons, links) and read text.
  • Example: If users struggle to find the "Submit" button, increase its contrast or add a border.

6. Document Your Decisions

  • Action: Add a short case study to your portfolio explaining:
  • The problem (e.g., "Low contrast caused 20% drop-off in checkout").
  • Your process (e.g., "Used Stark to audit, adjusted HSL values, tested with users").
  • The result (e.g., "Improved readability, reduced errors by 15%").

Common Mistakes

Mistake Correction Rationale
Using color alone to convey meaning (e.g., red = error, green = success). Add icons, labels, or patterns (e.g.,-for error,-for success). 1 in 12 men are color-blind; redundancy ensures clarity.
Assuming "dark mode" is automatically accessible. Test dark mode contrast ratios (7:1 for AA). Dark backgrounds often require lighter text than expected.
Ignoring disabled states. Ensure disabled buttons have 3:1 contrast with their background. WCAG requires disabled elements to be perceivable (not just grayed out).
Overusing high-contrast colors. Reserve high contrast for critical actions (e.g., "Delete Account"). Too much contrast creates visual noise and reduces hierarchy.
Not testing on real devices. Check colors on multiple screens (e.g., iPhone vs. Android, OLED vs. LCD). Colors appear differently on various displays.

Design Interview / Portfolio Tips

What Interviewers Look For

  1. Problem-Solving: Can you diagnose and fix contrast issues?
  2. Example: "Show me a design where you improved accessibility."-Pull up a before/after Figma file with contrast ratios annotated.

  3. Design Systems Thinking: Do you consider scalability?

  4. Example: "How would you apply this to a design system?"-Mention color tokens (e.g., --color-text-primary) and documentation.

  5. User-Centricity: Do you test with real users?

  6. Example: "How do you validate your color choices?"-Reference usability tests or color-blind simulators.

Tricky Distinctions

  • WCAG AA vs. AAA:
  • AA = Minimum legal standard (4.5:1 for text).
  • AAA = Enhanced (7:1 for text), often impractical for large bodies of text.
  • Contrast Ratio vs. Readability:
  • A 4.5:1 ratio passes WCAG but may still be hard to read if the font is too small or thin.
  • Color Blindness vs. Low Vision:
  • Color blindness = Can’t distinguish hues.
  • Low vision = Needs high contrast, larger text, or screen readers.

Quick Check Questions

  1. Scenario: A stakeholder insists on using the brand’s light blue (#87CEEB) for body text on a white background. How do you respond?
  2. Answer: "This color has a 1.9:1 contrast ratio, failing WCAG AA. Let’s darken it to #5D9CEC (4.6:1) or use it only for large text (3:1 minimum)."

  3. Scenario: You’re designing a dark mode dashboard. The client wants to use pure black (#000000) for the background. What’s the risk?

  4. Answer: Pure black on OLED screens can cause halation (glow effect), making text harder to read. Use a dark gray (#121212) instead.

  5. Scenario: A user with deuteranopia can’t distinguish between your "Active" (green) and "Inactive" (red) tabs. How do you fix this?

  6. Answer: Add icons (?/?) or patterns (stripes/dots) to differentiate states. Test with a color-blind simulator.

Last-Minute Cram Sheet

  1. WCAG AA Contrast Ratios:
  2. Normal text: 4.5:1
  3. Large text (18.66px+ bold or 24px+): 3:1
  4. UI components (buttons, icons): 3:1

  5. WCAG AAA Contrast Ratios:

  6. Normal text: 7:1
  7. Large text: 4.5:1

  8. Color Blindness Types:

  9. Protanopia: Red-green (1% of men).
  10. Deuteranopia: Red-green (6% of men).
  11. Tritanopia: Blue-yellow (rare).

  12. Figma Shortcuts for Accessibility:

  13. Stark Plugin: Cmd/Ctrl + Shift + P-"Stark"-Check contrast.
  14. Color Blind Simulator: Cmd/Ctrl + Shift + P-"Protanopia/Deuteranopia."

  15. HSL Adjustments for Contrast:

  16. Increase lightness of text or decrease lightness of background.
  17. Avoid low-saturation colors (e.g., pastels) for text.

  18. Semantic Color Traps:

  19. Red-Error (use icons/labels).
  20. Green-Success (add-or "Saved").

  21. Dark Mode Tips:

  22. Background: #121212 (not pure black).
  23. Text: #E0E0E0 (not pure white).

  24. Design System Must-Haves:

  25. Color tokens (e.g., --color-text-primary).
  26. State variants (hover, disabled, active).

  27. Testing Tools:

  28. WebAIM Contrast Checker (free).
  29. Color Oracle (color blindness simulator).

  30. Portfolio Storytelling:

  31. Show before/after contrast fixes.
  32. Mention user testing (even guerrilla tests).
  33. Link to Figma prototypes with annotations.