Skip to main content
Accessibility

Color Contrast and Accessibility: A Designer's Guide to Inclusive Palettes

June 24, 20269 min readBy Crystal Reyes
Hand-drawn line art of two overlapping circles like a Venn diagram showing contrast, with an eye and a paint palette, green and gold pencil hatching

You've spent hours picking the perfect color palette. The soft grays feel modern. The muted pastels match the brand perfectly. The thin white text over that hero image? Gorgeous.

There's just one problem. Millions of people can't read it.

Color contrast accessibility isn't a niche concern. Roughly 1 in 12 men and 1 in 200 women have some form of color vision deficiency. Add in age-related vision changes, screen glare, and cheap monitors with poor calibration, and you're talking about a huge portion of your audience. If your text doesn't have enough contrast against its background, your beautiful design is failing the people it's supposed to serve.

The good news: designing for contrast doesn't mean designing ugly. It means designing with intention.

What Color Contrast Ratio Actually Means

Contrast ratio is a mathematical measurement of the difference in luminance (perceived brightness) between two colors. It's expressed as a ratio ranging from 1:1 (no contrast, like white on white) to 21:1 (maximum contrast, black on white).

The calculation uses the relative luminance of each color, accounting for how human eyes perceive different wavelengths of light. You don't need to do this math yourself. Tools handle it for you. But understanding what the numbers mean helps you make better decisions.

A ratio of 3:1 means the lighter color is three times more luminous than the darker one. A ratio of 7:1 means seven times more luminous. The higher the ratio, the easier the text is to read.

Here's what those ratios feel like in practice: 2:1 is hard to read for most people. 3:1 is legible if the text is large. 4.5:1 is comfortable for most readers at body text sizes. 7:1 is high contrast and easy to read even in challenging conditions. 21:1 is black on white, maximum readability.

WCAG Requirements You Need to Know

The Web Content Accessibility Guidelines (WCAG) set specific contrast ratio requirements. If you're building websites for nonprofits, churches, or any organization that values inclusion, these aren't suggestions. They're your baseline.

WCAG 2.1 Level AA (the standard most organizations should meet)

Normal text (under 18pt or 14pt bold): minimum contrast ratio of 4.5:1.

Large text (18pt and above, or 14pt bold and above): minimum contrast ratio of 3:1.

UI components and graphical objects (form borders, icons, chart segments): minimum contrast ratio of 3:1.

WCAG 2.1 Level AAA (enhanced, for organizations that want the highest standard)

Normal text: minimum contrast ratio of 7:1.

Large text: minimum contrast ratio of 4.5:1.

Most organizations target AA compliance. It's achievable without dramatic design compromises, and it covers the vast majority of users with vision challenges. If you want a deeper understanding of what WCAG 2.1 AA requires across all criteria, not just color, that guide walks through the full standard.

How to Check Your Contrast

You don't need to guess. Several free tools give you instant, precise feedback on your color choices.

WebAIM Contrast Checker

The go-to tool for quick checks. Visit webaim.org/resources/contrastchecker, enter your foreground and background colors, and get an instant pass/fail result for both AA and AAA standards. It also shows you how the colors look together and suggests adjustments if you fail.

Browser Developer Tools

Chrome, Firefox, and Edge all have built-in contrast checkers. In Chrome DevTools, inspect any text element, look at the color property, and click the color swatch. It shows the contrast ratio and a pass/fail indicator right there. This is the fastest way to audit a live website.

Colour Contrast Analyser (CCA)

A desktop app from TPGi (free to download) that lets you pick colors from anywhere on your screen. It's especially useful when working with designs in Figma, Sketch, or Illustrator where you need to check contrast outside the browser.

Figma and Design Tool Plugins

If you design in Figma, install the Stark plugin. It checks contrast ratios, simulates color blindness, and flags accessibility issues directly in your design files. Similar plugins exist for Sketch and Adobe XD. Catching contrast problems during design is far cheaper than fixing them after development.

The Most Common Contrast Failures

After auditing hundreds of websites, we see the same mistakes over and over. Here are the failures that trip up even experienced designers.

Light Gray Text on White Backgrounds

This is the most common contrast failure on the web. That #999999 gray on a white background? It has a contrast ratio of 2.85:1. It fails both AA and AAA for normal text. Bump it to #595959 (7:1 ratio) and you meet AAA without the design feeling heavy.

The temptation to use light gray for "secondary" text is strong. But secondary doesn't mean optional. If the text is on the page, someone needs to read it. If it doesn't need to be read, it shouldn't be on the page at all.

Colored Text on Colored Backgrounds

A medium blue on a dark blue background. Orange text on a red background. Green links on a green-tinted section. These combinations can look intentional in a mockup and become unreadable in production, especially on screens with different color profiles.

Always check the specific hex values, not just what they look like on your screen. Two colors that seem distinct to you might have a contrast ratio of 2:1.

Text Over Images Without Overlays

Hero images with text laid directly on top are accessibility landmines. The contrast depends entirely on which part of the image falls behind which word. A bright sky behind "Welcome" and a dark tree behind "to Our Church" creates inconsistent readability across a single heading.

The fix is a semi-transparent overlay between the image and the text. A dark overlay with white text or a light overlay with dark text gives you consistent contrast regardless of the image content. Alternatively, place text in a solid-color box on top of the image.

Placeholder Text in Forms

Default placeholder text (#AAAAAA on white) fails contrast requirements almost universally. This is a tricky one because some designers argue placeholders aren't "real" content. But WCAG disagrees. If the text conveys information (like "Enter your email"), it needs to meet contrast standards.

Better approach: use visible labels above your form fields instead of relying on placeholder text. This solves the contrast problem and the usability problem of placeholders disappearing once someone starts typing.

Designing Accessible Palettes from the Start

The easiest way to avoid contrast problems is to build accessibility into your color selection process from day one. Not as an afterthought. Not as a checkbox before launch. As a starting point.

Start with Contrast, Not Aesthetics

Pick your primary text color and background color first. Make sure they pass AA (ideally AAA) before you touch anything else. Then build your accent colors, brand colors, and decorative palette around that foundation.

This is the opposite of how most designers work, but it saves enormous time. Starting with a pair that fails and trying to "fix" it later usually means compromising either the design or the accessibility.

Create a Contrast Matrix

For every color in your palette, check its contrast ratio against every background it might appear on. Create a simple grid: colors down the left, backgrounds across the top, with the contrast ratio in each cell. Mark which combinations pass AA, which pass AAA, and which fail.

This matrix becomes a reference your entire team can use. Developers know which text colors are safe on which backgrounds. Content editors know which color combinations to avoid. Nobody has to guess.

Define Accessible and Inaccessible Pairs

Not every color in your palette needs to work as text. Some colors are purely decorative (backgrounds, dividers, illustrations) and don't need to meet text contrast requirements. Be explicit about which colors can be used for text and which can't. Document it in your style guide.

When Brand Colors Fail (and How to Fix Them)

This is the conversation nobody wants to have. The client's brand blue has a contrast ratio of 2.8:1 against white. Their signature orange? 2.3:1. The brand guidelines that marketing spent six months developing? Not accessible.

Here's how to handle it without a brand crisis.

Darken or Lighten Strategically

Often, shifting a color just 10% to 15% darker (for light backgrounds) or lighter (for dark backgrounds) brings it into compliance while keeping it recognizably "on brand." The human eye is less precise than a hex code. A blue that shifts from #4A90D9 to #2D6EB5 still reads as "the brand blue" to everyone except a designer with a color picker.

Reserve Failing Colors for Non-Text Uses

If the signature orange can't meet contrast requirements as text, use it for borders, backgrounds, icons (with text labels), and decorative elements instead. Use a darker version of the same hue for any text that needs to be orange.

Pair Strategically

A brand color that fails on white might pass on a very light tint of itself. Putting light blue text on a dark navy background might give you the brand feeling you want while meeting contrast requirements comfortably.

Dark Mode Considerations

Dark mode is everywhere now, and it introduces its own contrast challenges.

White text on black (#FFFFFF on #000000) has a 21:1 contrast ratio. That sounds great, but maximum contrast on dark backgrounds can cause eye strain and a "halation" effect where light text appears to bleed into the dark background. This is especially pronounced for people with astigmatism, which affects roughly 30% of the population.

Better practice: use an off-white text (like #E0E0E0) on a dark gray background (like #1A1A1A or #121212). This gives you a contrast ratio around 13:1 to 15:1, well above AA requirements, while being much more comfortable to read for extended periods.

For accent colors in dark mode, remember that colors behave differently on dark backgrounds. A yellow that pops against white may wash out against black. Test every color in both modes, not just your primary text.

Color Alone Can't Convey Meaning

This rule trips up even accessibility-aware designers. WCAG requires that color is never the only way to communicate information. If something is red to indicate an error, it also needs text (like "Error: this field is required") or an icon (like a warning symbol).

Common violations include:

  • Form fields that only turn red when invalid, with no error message
  • Charts and graphs that rely on color alone to distinguish data series
  • Links that are only distinguished from body text by color (add an underline)
  • Status indicators that use only green/yellow/red dots (add text labels)

This isn't just about color blindness. Think about someone printing your page in black and white. Think about someone using a monochrome e-ink display. If the meaning disappears without color, the design needs another layer of communication.

Tools Every Designer Should Know

Beyond the contrast checkers mentioned earlier, these tools help you build accessible color systems from the start.

Stark (Figma, Sketch, Adobe XD plugin): contrast checking, color blindness simulation, and accessibility suggestions integrated directly into your design tool. The free tier covers contrast checking. The paid tier adds more simulation types and team features.

Colour Contrast Analyser (desktop app, free): the TPGi tool mentioned above. Essential for checking contrast in any application, not just browsers.

Adobe Color Accessibility Tools (web, free): Adobe's color wheel tool includes an accessibility checker that evaluates your entire palette for contrast conflicts and color blindness issues.

Coolors Contrast Checker (web, free): a fast, visual tool for checking two colors against each other with live preview text.

axe DevTools (browser extension, free): a broader accessibility testing tool that catches contrast failures along with dozens of other accessibility issues on live websites.

Making It Part of Your Process

Color contrast accessibility isn't a phase of the project. It's a lens you apply at every stage. During brand development, check your palette against WCAG before it's finalized. During design, use plugins to test every text and background combination. During development, run automated tests that catch contrast failures. During content updates, train your team to check new images, graphics, and text against your approved contrast pairs.

The organizations that get this right don't treat accessibility as a burden. They treat it as a design constraint that makes their work better. Because a palette that works for people with low vision, color blindness, and bright screens also works better for everyone else.

Good contrast isn't a compromise. It's good design.

Enjoying this article?

Get more like it delivered to your inbox. Practical web tips for nonprofits, churches, and community organizations.

Unsubscribe at any time. We value your privacy.

Continue Reading