web design uiOctober 30, 20267 min read

Color de los mensajes de error: por qué falla #FF0000 y los 8 rojos que debes usar

El rojo puro es el primer color de error que todo el mundo elige y el equivocado para texto. Las cuatro correcciones, los ocho colores de error en claro y oscuro, y el código para pasarle a tu desarrollador.

By Boone
XLinkedIn
Error Message Color: Why #FF0000 Fails and the 8 Reds to Use Instead

El color correcto para el texto de error es un rojo más oscuro, no #FF0000. El rojo puro se ve estridente y aun así se lee mal en los tamaños pequeños que usan los mensajes de error, y vibra en pantallas oscuras. Aquí tienes las cuatro correcciones, los ocho colores para modo claro y oscuro, y el código para pasarle a tu desarrollador.

Por qué falla el rojo puro

Nadie elige #FF0000 para el texto de error. Simplemente aparece. Es el rojo de la fila superior de todo selector de color, la palabra clave red en CSS, la primera muestra en un archivo de diseño nuevo. Así que acaba en la única línea de la pantalla que tiene que leerse bien a la primera.

El rojo puro es brillante y saturado, así que parece fuerte, pero no es oscuro. Su luminosidad se acerca a la de un gris medio. Ponlo pequeño sobre blanco y las letras pierden sus bordes.

La solución no es otro tono. Es el mismo rojo, oscurecido hasta que el texto tenga peso.

Corrección 1: oscurece el rojo para el texto

Correo

mia@brainy.ink

Introduce un correo electrónico válido.

✕ #FF0000 sobre blanco: difícil de leer

Correo

mia@brainy.ink

Introduce un correo electrónico válido.

✓ #B3261E sobre blanco: fácil de leer

Mismo campo, mismo mensaje, dos rojos. El correcto es el color de error del tema claro de Material 3, y es el que capta tu mirada, aunque el de la izquierda sea el rojo "más rojo".

Usa el rojo oscuro para todo texto de error: el mensaje bajo un campo, una etiqueta que se vuelve roja, un "Obligatorio" en línea. Mantén #FF0000 fuera del texto por completo. Si el rojo de tu marca se parece al rojo puro, resérvalo para ilustraciones y tipografía grande de display, donde el tamaño hace el trabajo que la oscuridad hace en el texto pequeño.

Corrección 2: tiñe el banner, no lo pintes

El pago falló. Prueba con otra tarjeta.

✕ Blanco sobre #FF0000: grita y aun así se lee mal

El pago falló. Prueba con otra tarjeta.

✓ #410E0B sobre #F6CBC8: fácil de leer

Una barra roja sólida con texto blanco es lo más estridente de la página y aun así es difícil de leer, porque el blanco sobre #FF0000 tiene el mismo contraste débil que #FF0000 sobre blanco. Los colores cambiaron de lugar, el problema no.

Un contenedor rojo suave con texto rojo oscuro dice "error" con su color y deja que las palabras se lean. La urgencia viene del icono y del mensaje. El contenedor de Material es un #F9DEDC más pálido; nosotros usamos un paso más profundo, #F6CBC8, porque el rosa más pálido se desvanece junto a una interfaz oscura.

Corrección 3: suavízalo en pantallas oscuras

Correo

mia@brainy.ink

Introduce un correo electrónico válido.

✕ #FF0000 sobre oscuro: vibra

Correo

mia@brainy.ink

Introduce un correo electrónico válido.

✓ #F2B8B5 sobre oscuro: calmado y claro

El modo oscuro invierte el consejo. El rojo puro sobre casi negro supera el mínimo de contraste, así que un verificador no lo marcará, pero un rojo saturado sobre gris oscuro vibra en sus bordes. El tema oscuro de Material usa un rojo de error claro y suave, #F2B8B5, que mantiene con el fondo oscuro la misma relación que #B3261E tiene con el blanco.

Esta es la regla general para temas oscuros: los colores saturados que funcionan sobre blanco se vuelven más claros y suaves sobre oscuro. Nuestro artículo sobre diseño de modo oscuro cubre el resto de la paleta.

Corrección 4: compruébalo en escala de grises

Correo

mia@brainy.ink

✕ Solo borde: ¿cuál campo está mal?

Correo

mia@brainy.ink

Introduce un correo electrónico válido.

✓ Icono y palabras: sigue siendo evidente

Ambos campos en escala de grises, tal como los ve una prueba de daltonismo.

El rojo puro y un gris medio tienen casi la misma luminosidad, así que un campo cuya única señal de error es un borde rojo se ve, en escala de grises, como cualquier otro campo. Pon tu pantalla en escala de grises una vez antes de lanzar un formulario (Ajustes del Sistema, Accesibilidad, Pantalla, Filtros de color en un Mac; el mismo filtro está en los ajustes de pantalla de accesibilidad de iOS y Android).

Todo estado de error necesita tres cosas:

  • Un color: el rojo más oscuro sobre claro, el rojo más suave sobre oscuro.
  • Una forma: un icono delante del mensaje, visible sin color.
  • Palabras: qué salió mal y qué hacer. "Introduce un correo válido" es mejor que "Entrada no válida".

Esto es WCAG 1.4.1, uso del color: el color puede apoyar un mensaje, nunca ser la única forma de darlo.

Los 8 colores de error, claro y oscuro

Toca cualquier chip para copiar su código.

Tema claro. Toca un color para copiar su código.
Tema oscuro. Toca un color para copiar su código.
RolClaroOscuroÚsalo para
Error#B3261E#F2B8B5Texto de error, bordes de error, el icono de error
Sobre error#FFFFFF#601410Texto sobre un relleno de error sólido, como un botón Eliminar
Contenedor de error#F6CBC8#8C1D18Banners, toasts y cuadros de alerta en línea
Sobre contenedor de error#410E0B#F9DEDCTexto e iconos dentro de esos contenedores

Pásale esto a tu desarrollador

Los mismos ocho colores como propiedades personalizadas de CSS, con los valores oscuros activándose según el tema del sistema:

css
:root { --color-error: #B3261E; --color-on-error: #FFFFFF; --color-error-container: #F6CBC8; --color-on-error-container: #410E0B; } @media (prefers-color-scheme: dark) { :root { --color-error: #F2B8B5; --color-on-error: #601410; --color-error-container: #8C1D18; --color-on-error-container: #F9DEDC; } } .field--invalid { border-color: var(--color-error); } .field__error { color: var(--color-error); } .alert--error { background: var(--color-error-container); color: var(--color-on-error-container); }

En Material, estos roles ya existen como colorScheme.error, onError, errorContainer y onErrorContainer; el único cambio respecto al valor por defecto es el contenedor claro más profundo. En cualquier otro lugar, vale la pena robarse los cuatro nombres: evitan que la siguiente persona busque #FF0000.

Los números de contraste

WCAG 2 pide al menos 4.5 a 1 para texto de cuerpo.

ParContraste
Texto #FF0000 sobre blanco4.0 a 1, bajo el mínimo
Texto #B3261E sobre blanco6.5 a 1
Texto blanco sobre #FF00004.0 a 1, bajo el mínimo
Texto #410E0B sobre #F6CBC811.1 a 1
Texto #F2B8B5 sobre oscuro #14121810.9 a 1
Texto #FF0000 sobre oscuro #1412184.7 a 1, pasa y aun así vibra

La última fila es la razón por la que un verificador no basta. El rojo puro sobre oscuro técnicamente pasa y sigue siendo la elección equivocada.

FAQ

¿De qué color deben ser los mensajes de error?

Un rojo oscuro que se lea fácil en tamaños pequeños, como #B3261E sobre fondo blanco. Combínalo con un icono y un mensaje que diga cómo solucionar el problema.

¿Es accesible #FF0000 para texto de error?

No. El rojo puro sobre blanco tiene un contraste de alrededor de 4.0 a 1, por debajo del 4.5 a 1 que WCAG pide para texto de cuerpo, y los mensajes de error suelen ser pequeños.

¿Cuál es el color de error en Material Design 3?

El rol de error del tema claro es #B3261E con #FFFFFF encima; el contenedor de error es #F9DEDC con texto #410E0B. En el tema oscuro el rol de error es #F2B8B5 y el contenedor es #8C1D18.

¿De qué color deben ser los errores en modo oscuro?

Un rojo más claro y suave, como #F2B8B5. El rojo puro pasa la prueba de contraste sobre fondos oscuros, pero vibra y es incómodo de leer.

¿Se puede mostrar un error solo con color?

No. Alrededor de uno de cada doce hombres tiene alguna forma de daltonismo, y WCAG 1.4.1 exige que el color nunca sea la única señal. Añade un icono y palabras.

Fuentes

Want error states, forms and every other state designed as one system? Our team designs and builds product UI that holds up in light and dark.

Get Started

More from Brainy Papers

Keep reading