web design uiOctober 30, 20267 min read

Placeholder vs etiqueta: por qué el texto de ayuda no es una etiqueta, y la especificación de campo que debes usar

El texto gris dentro de un campo desaparece en cuanto alguien escribe. Por qué un placeholder no puede reemplazar a una etiqueta, dónde van las pistas, el color de borde que aprueba y la especificación exacta para tu desarrollador.

By Boone
XLinkedIn
Placeholder vs Label: Why Placeholder Text Is Not a Label, and the Field Spec to Use

Un placeholder no es una etiqueta. Desaparece en cuanto alguien escribe, y con él se va la única pista de para qué servía el campo. Pon una etiqueta real sobre cada campo, las pistas debajo, un borde visible alrededor, y usa el placeholder solo para un ejemplo. Aquí va el porqué y la especificación exacta.

Qué sale mal cuando el placeholder es la etiqueta

Correo

Antes de escribir: se ve limpio

mia@brainy.ink

✕ Después de escribir: ¿para qué era este campo?

El campo de la izquierda se ve ordenado, y por eso les encanta a los diseñadores. El de la derecha es el mismo campo dos segundos después. La palabra "Correo" ya no está, así que la persona no tiene una etiqueta que consultar, y en un formulario largo no sabe qué respuesta corresponde a qué campo.

Es un problema de memoria, no de gusto. La investigación de Nielsen Norman Group sobre los placeholders en campos de formulario encontró que el texto que desaparece sobrecarga la memoria a corto plazo y dificulta revisar las respuestas antes de enviar. Nuestra guía más amplia de buenas prácticas de diseño de formularios cubre el formulario entero; este paper profundiza en la decisión que causa la mayoría de los problemas.

Hay un segundo problema. El texto del placeholder es gris por defecto, y ese gris suele ser demasiado tenue. El gris habitual #8E8E93 tiene un contraste de aproximadamente 3,3 a 1 sobre blanco, por debajo del 4,5 a 1 que WCAG pide para el texto. Así que la única pista que diste además es difícil de leer.

Solución 1: una etiqueta real, sobre el campo

Correo

mia@brainy.ink

✓ Etiqueta arriba: sigue ahí después de escribir

Correo de trabajo

nombre@empresa.com

✓ Placeholder solo como ejemplo

Una etiqueta está fuera del campo, así que escribir nunca la toca. Ponla sobre el campo, alineada a la izquierda, a 15 px en semibold. Arriba es mejor que al lado porque funciona en todos los anchos, incluido un móvil, y el ojo baja por el formulario en una línea recta.

No ocultes la etiqueta para ahorrar espacio. Si un diseño no tiene sitio para etiquetas, el diseño está mal, no la regla. Las etiquetas flotantes que se encogen a la esquina al enfocar son un compromiso: mantienen la etiqueta, pero son pequeñas, necesitan una sincronización cuidadosa y son más difíciles de construir de forma accesible que una etiqueta simple arriba.

Una etiqueta real es además lo que anuncian los lectores de pantalla. En HTML, conéctala al campo para que al tocar la etiqueta se enfoque el input:

html
<label for="email">Email</label> <input id="email" name="email" type="email" autocomplete="email" placeholder="name@company.com" />

Solución 2: las pistas van bajo el campo

Contraseña

••••••••

Al menos 8 caracteres.

✓ Pista bajo el campo: se queda mientras se escribe

Al menos 8 caracteres

✕ Pista como placeholder: desaparece con la primera tecla

Lo más útil que puede decir un campo, como un formato o una regla, es lo que la gente necesita mientras escribe. Por eso no puede vivir en el placeholder, donde desaparece con la primera pulsación. Muévelo bajo el campo, a 13 px en un gris más discreto, donde se queda visible todo el tiempo.

Los errores usan el mismo espacio. Cuando algo sale mal, la línea de la pista puede convertirse en el mensaje de error, lo que mantiene el diseño estable. Nuestro paper sobre el color de los mensajes de error cubre cómo debe verse ese mensaje.

Solución 3: un borde que la gente pueda ver

Correo

mia@brainy.ink

✕ Borde #E5E5E5: un fantasma

Correo

mia@brainy.ink

✓ Borde #79747E: fácil de encontrar

Un campo es un control, y un control tiene que poder encontrarse. El borde gris fantasma de la izquierda es un favorito de los archivos de diseño, porque se ve ligero. En una pantalla real casi desaparece, y la gente no sabe dónde tocar.

WCAG 1.4.11 pide que la información visual necesaria para identificar un componente de interfaz tenga al menos 3 a 1 contra el color que tiene al lado. #E5E5E5 sobre blanco es aproximadamente 1,3 a 1, lo que suspende. #79747E, que es el color de contorno de Material 3, es aproximadamente 4,6 a 1, lo que aprueba con holgura. Usa 1,5 px para que aguante también en pantallas de baja densidad.

Ojo con la diferencia respecto a los divisores. Un gris claro como #E5E5EA está bien entre filas de una lista, porque un divisor solo tiene que notarse. El borde de un campo tiene que verse. Hablamos de los grises de divisores y superficies en color de fondo del modo claro.

Solución 4: pide el teclado correcto

Un campo que sabe para qué sirve puede abrir el teclado que ayuda, tanto en iPhone como en Android. Un campo de correo que se abre con la tecla @ lista ahorra un toque y evita un error de escritura. En HTML es un solo atributo:

CampoTipo de inputQué abre el teléfono
Correotype="email"Teclado con @ y .
Teléfonotype="tel"Teclado numérico
Sitio webtype="url"Teclado con / y .com
Tarjeta o códigoinputmode="numeric"Teclado numérico, sin spinner
Búsquedatype="search"Tecla de búsqueda en el teclado

Combínalo con valores de autocomplete como email y name, para que el teléfono pueda rellenar el campo solo.

La especificación del campo

ParteValor
EtiquetaSobre el campo, 15 px, semibold
Campo48 px de alto, radio de 12 px
Borde1,5 px en #79747E
Texto16 px, nunca menos
PistaBajo el campo, 13 px
PlaceholderUn ejemplo, o nada
El borde que debes usar, y los dos grises que debes evitar como borde. Toca un color para copiar su código.

El texto de 16 px importa en iPhone: Safari hace zoom en la página cuando alguien toca un campo con texto más pequeño, lo que parece un error.

css
.field label { font: 600 15px/1.3 system-ui; display: block; margin-bottom: 6px; } .field input { height: 48px; padding: 0 14px; font-size: 16px; border: 1.5px solid #79747E; border-radius: 12px; } .field input::placeholder { color: #8E8E93; } .field .hint { font-size: 13px; margin-top: 6px; }

Los 48 px de alto dan un área táctil cómoda, y el radio de 12 px es una elección, no una regla: ajústalo a tu sistema y mantenlo igual en todos los campos.

FAQ

¿Debo usar un placeholder en lugar de una etiqueta?

No. Un placeholder desaparece cuando alguien escribe, así que el campo pierde su nombre. Pon una etiqueta visible sobre el campo y reserva el placeholder para un formato de ejemplo, o déjalo vacío.

¿Es accesible el texto del placeholder?

Rara vez por defecto. El texto del placeholder suele ser un gris claro con poco contraste, desaparece al escribir, y algunas herramientas de asistencia no lo tratan como una etiqueta. Una etiqueta real conectada al input es la opción accesible.

¿Dónde debe ir la etiqueta: arriba o dentro del campo?

Arriba, alineada a la izquierda. Funciona en cualquier ancho de pantalla, se queda visible mientras se escribe y el ojo sigue una línea recta por el formulario.

¿Qué debo poner en un placeholder?

Un ejemplo del formato, como nombre@empresa.com, o nada en absoluto. Nunca pongas ahí la instrucción que la gente necesita mientras escribe. Eso va en una pista bajo el campo.

¿De qué color debe ser el borde de un input?

Lo bastante oscuro para alcanzar al menos 3 a 1 contra la página, como exige WCAG 1.4.11. #79747E, el color de contorno de Material 3, es aproximadamente 4,6 a 1 sobre blanco. Un #E5E5E5 pálido es aproximadamente 1,3 a 1 y suspende.

¿Las etiquetas flotantes arreglan el problema del placeholder?

En parte. Mantienen una etiqueta visible al encogerla sobre el texto, pero el tamaño pequeño, la animación y el trabajo de accesibilidad hacen que una etiqueta simple sobre el campo sea la opción por defecto más segura.

Fuentes

  • Nielsen Norman Group, Placeholders in Form Fields Are Harmful (Katie Sherwin, 2014): el texto del placeholder desaparece al escribir, sobrecarga la memoria a corto plazo y dificulta revisar las respuestas.
  • WCAG 2.1, 1.4.11 Non-text Contrast (3 a 1 para componentes de interfaz) y 1.4.3 Contrast (Minimum).
  • Ratios sobre blanco, calculados con la fórmula de luminancia relativa de WCAG: #E5E5E5 1,26 a 1, #79747E 4,55 a 1, gris de placeholder #8E8E93 3,26 a 1. #79747E es el Outline de Material 3 (NeutralVariant50), leído de androidx Compose ColorLightTokens.
  • MDN, the input element, type attribute: type="email" abre un teclado de correo en los teléfonos.
  • Los tamaños de campo de la tabla de especificación (etiqueta de 15 px, alto de 48 px, radio de 12 px, pista de 13 px) son recomendación propia, no un valor de plataforma.
  • Publicado por primera vez como carrusel en UX Brainy.

Want every form in your product to feel this easy to fill in? Our team designs and builds product UI with the field details decided once.

Get Started

More from Brainy Papers

Keep reading