Status indicators that depend solely on red for errors and green for success exclude color-blind users. Bar charts using only color to distinguish categories become meaningless when users can't differentiate hues.
This mistake violates WCAG success criterion 1.4.1. Information must be perceivable through multiple channels.
Add redundant cues: icons accompanying status messages, patterns or textures in charts, text labels on graphs, shape variations for different categories.
When you indicate an error, combine red coloring with an X icon and descriptive text. This benefits everyone, not just users with color vision deficiencies.
Designers love minimalism, but transparency often sacrifices usability. Buttons with 40% opacity look sleek but become unreadable. Ghost buttons frequently fail contrast requirements on both the outline and text.
Placeholder text presents a special problem. Many browsers render it at low opacity by default. Users mistake faint placeholder text for already-filled content or miss it entirely.
Set minimum opacity levels. Button backgrounds should sit at 100% opacity. If you want lighter buttons, use lighter solid colors that still meet contrast ratios rather than transparency. Style placeholder text explicitly to ensure adequate contrast—aim for at least 4.5:1 like any other text.
Interactive states need contrast too. Hover effects that lighten text can push it below acceptable ratios.
Visited links that change from blue to purple might blend into certain backgrounds. Disabled buttons styled with excessive fading become invisible.
Users need to identify interactive elements in all states. A button that passes contrast when idle but fails on hover creates confusion.
Test every interactive state. Maintain minimum contrast ratios across default, hover, focus, active, and disabled appearances.
Use our contrast checker to test your hover color before implementing it. Enter your base and hover colors side-by-side to ensure both states pass.
Using Background Images Behind Text
Placing text directly over photographs creates unpredictable contrast. Even carefully chosen images have areas where text disappears. Visual noise from textures, patterns, and varying brightness makes reading difficult regardless of technical contrast ratios.
Apply solid or gradient overlays between images and text. Dark semi-transparent overlays (like black at 60% opacity) ensure white text remains readable across the entire image. Alternatively, confine text to solid color sections of your layout.
Calculate contrast against the darkest (for light text) or lightest (for dark text) area of the image after overlay application. If an image has bright spots that reduce contrast below standards, adjust your overlay or reposition content.
Colors that work beautifully in light mode often fail in dark mode. Pure black backgrounds create excessive contrast with white text, causing eye strain.
Auto-generated dark modes on some operating systems invert colors unpredictably, breaking carefully planned palettes.
Dark mode isn't simply inverted light mode. It requires intentional color selection. Use dark grays (like #1a1a1a) rather than pure black. Reduce white text to off-white (#e0e0e0) to lower intensity.

Establish separate color tokens for light and dark themes. Review both modes during design and development. Check that interactive elements, borders, and subtle UI components maintain adequate contrast in both contexts.
Non-text interface elements need 3:1 contrast against adjacent colors. Form field borders, icon outlines, and dividing lines frequently slip below this threshold. Designers choose subtle grays for visual hierarchy without realizing they've created accessibility barriers.
Icons with thin strokes become nearly invisible at low contrast. Input field borders that blend into backgrounds make forms difficult to complete. Inactive but visible UI elements need sufficient contrast so users can perceive them, even if they can't interact.
Audit all UI components, not just text. Form inputs, buttons, icons, focus indicators, and dividers all require attention. Use stroke weights of at least 2px for icons and ensure borders meet the 3:1 minimum.