web design ui

Halation

Halation hits when pure white text sits on pure black surfaces and creates a bright edge blur that makes letters look like they are vibrating. The human eye dilates in dark rooms to pull in more light then gets blasted by maximum luminance pixels. Light scatters inside the eyeball exactly like it used to scatter inside analog film emulsion. The result is not a crisp interface. It is eye strain that arrives after twelve minutes of night reading and sends users back to light mode or out of your product entirely. This is a biological limitation not a trend. Every designer who ships dark themes in 2026 needs to respect it or watch their analytics tank after sunset. The article on dark mode design calls this out as the reason pure white on pure black fails real users even when the contrast ratio passes every automated check. Your retinas do not care about WCAG numbers once the room lights go off. They care about not being stabbed by hot white pixels.

Halation is not poor contrast. You can clear 7 to 1 ratios with pure white on pure black and still trigger it. It is not monitor bloom or cheap OLED banding or a font weight problem. Those are separate issues you can solve with hardware or css tweaks. Halation lives in human vision. It is not solved by adding text shadows or lowering opacity across the board. Those create new muddiness. The only real fix is replacing the white with a tuned off white that respects how eyes behave at night. Call it what it is. Lazy inversion. Most dark modes are still built by flipping light mode colors in a single pass then wondering why users complain of headaches. That shortcut never worked for Twitter in 2019 and it will not work for your SaaS dashboard in 2026.

Concrete example. Instagram shipped system dark mode in late 2019 and used straight #FFFFFF text on #000000 for comment threads and stories. Bedtime scrollers roasted them in reviews. Headaches fatigue burning eyes. The team fixed it in 2020 by switching body text to #E2E2E5 against a #0F0F11 surface. Session times at night jumped. Linear launched in 2022 with zero tolerance for the mistake. Their dark theme tokens map text.primary to #D9D9E0 on a base of #0F0F11 and raised surfaces step up to #1F1F23. Open Linear at 2 a.m. next to a 2021 era competitor still using pure black and white. The difference feels physical. One invites four hour design sprints. The other makes you flinch. VS Code themes tell the same story. The default Dark+ theme uses #D4D4D4 for editor text. Popular community themes that still ship #FFFFFF get one star reviews from developers who code past midnight. GitHub learned too. Their 2021 dark mode rollout picked #C9D1D9 for primary text on #0D1117 after extensive night testing. Every one of these teams measured real user behavior not just pretty mockups. They all converged on the same 85 to 92 percent luminance range because eyes do not lie. Figma did it right from the start in 2022. Their dark canvas sits at #1A1A1A with text at #EDEDED. No halation no complaints just calm productivity at all hours.

Drop pure white for every piece of body text small labels form fields and navigation items the moment you enter dark mode. Map your semantic token color.text.primary in the dark theme to #E8E8EA or #F0F0F5 depending on brand temperature. Use it religiously in mobile apps news readers documentation internal tools and anything people open after 8 p.m. Test at 30 percent screen brightness in a pitch black room. If the text stays crisp without glowing you cleared the bar. Reserve full #FFFFFF for 60 pixel plus headlines or hero icons where the drama of the glow works in your favor. Never use pure white on body copy in cool toned brands. Those amplify the scatter. Skip the softer white only when designing for bright retail displays or cinema projection systems where ambient light changes the entire equation. Update the token once enforce it everywhere and the entire product stays consistent when new components ship six months later. Ignore this rule and your dark mode becomes a half finished prototype that leaks user trust every night.

Halation turns promising dark themes into usability disasters so kill it with tuned off white text and your interface will finally feel calm at 2 a.m.

Related terms

Keep exploring