UX Design

Dark Mode as an Accessibility Feature

By EZUD Published · Updated

Dark Mode as an Accessibility Feature

Dark mode is usually marketed as a battery saver or an aesthetic preference. It is also an accessibility feature — one that benefits users with photosensitivity, migraines, certain types of low vision, and anyone using a screen in a dark environment. Implementing it well requires more than inverting your color palette.

Who Benefits from Dark Mode

Photosensitive users. Bright screens trigger migraines, eye strain, and discomfort for people with photophobia, a common symptom of conditions including migraine disorder, traumatic brain injury, and certain eye diseases.

Users with certain low-vision conditions. Some forms of macular degeneration, cataracts, and glaucoma make bright backgrounds painful or create excessive glare. Dark mode reduces the total amount of light emitted.

Users with astigmatism. Roughly 33% of the US population has some degree of astigmatism. For these users, bright white backgrounds cause a halation effect — light bleeds around text edges, making it harder to read. Dark backgrounds reduce halation. However, pure black backgrounds with pure white text can cause the reverse problem (see contrast section below).

Everyone in low-light environments. A bright screen in a dark room causes pupil constriction that makes it harder to see the screen content. Dark mode reduces the luminance gap between the screen and the environment.

Contrast Considerations in Dark Mode

Dark mode does not mean “white text on black background.” Pure white (#FFFFFF) on pure black (#000000) produces 21:1 contrast — technically maximum, but it creates halation for users with astigmatism and can feel harsh for extended reading.

  • Background: Dark gray rather than pure black. #121212 (Material Design recommendation) or #1A1A1A.
  • Text: Off-white rather than pure white. #E0E0E0 or #D4D4D4.
  • Result: Contrast ratio of approximately 13-15:1 — well above WCAG AA (4.5:1) while avoiding halation.

For complete contrast guidance, see our color contrast standards guide.

Surface Elevation

In dark mode, lighter surfaces appear “closer” to the user. Use slightly lighter grays for elevated components (cards, modals, dropdowns) rather than adding drop shadows, which are nearly invisible on dark backgrounds.

Material Design uses overlay opacity to communicate elevation:

ElevationOverlay OpacityResulting Surface Color (on #121212)
0dp0%#121212
1dp5%#1E1E1E
4dp9%#242424
8dp12%#2C2C2C

Implementing Dark Mode Accessibly

Respect System Preferences

Use the prefers-color-scheme media query to detect the user’s OS-level preference:

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1A1A1A;
    --text: #E0E0E0;
    --surface: #242424;
  }
}

Provide a Manual Toggle

System preference detection is not enough. Users may want dark mode on your site but not OS-wide, or vice versa. Provide a toggle control that:

  • Is keyboard accessible and properly labeled for screen readers.
  • Persists the user’s choice across sessions (localStorage or a cookie).
  • Does not cause a full page flash when switching (use CSS custom properties for smooth transitions).

Audit Every Component

Dark mode is not a CSS filter. Review every component:

  • Images: Logos and illustrations designed for light backgrounds may need alternative versions or transparent backgrounds.
  • Shadows: Reduce or remove box shadows that become invisible on dark surfaces.
  • Borders: Borders that provided separation on light backgrounds may need to become lighter or more prominent.
  • Status colors: Red, green, yellow indicators need contrast checking against dark backgrounds — some fail. Pair colors with icons or text labels.
  • Charts and data visualizations: Recheck all data visualization colors against the dark background.

Test Contrast for Both Modes

Every foreground/background combination must meet WCAG AA contrast ratios in both light and dark modes. Maintain a contrast matrix for your design system that covers both themes.

Common Dark Mode Mistakes

Inverting colors programmatically. CSS filter: invert(1) ruins images, videos, and any carefully calibrated color. Build a proper dark theme with intentional color choices.

Forgetting focus indicators. A blue focus ring visible on a white background may vanish on a dark gray background. Test keyboard navigation in dark mode.

Ignoring the reading experience. Dark mode with poor typography settings compounds readability issues. Apply the same typography standards as light mode: minimum 16px body text, 1.5x line height, 45-75 character line length.

No user control. Forcing dark mode based on time of day or system setting without a manual override removes user agency.

Key Takeaways

  • Dark mode is a genuine accessibility feature for photosensitive users, certain low-vision conditions, and users with astigmatism.
  • Avoid pure black (#000000) backgrounds and pure white (#FFFFFF) text — use dark gray and off-white for comfortable contrast.
  • Detect system preference with prefers-color-scheme but always provide a manual toggle.
  • Audit every component, image, and data visualization in both light and dark themes.

Next Steps

Sources

Dark mode implementation guidance adapted from Material Design 3 dark theme specifications and W3C WAI contrast requirements.