El 97% de los sitios web tienen al menos un problema de accesibilidad, y los formularios son el elemento donde más fallos se concentran, según el informe anual de WebAIM sobre el millón de páginas más visitadas. La causa más repetida: etiquetas ausentes o mal asociadas que impiden a los lectores de pantalla interpretar qué información se pide en cada campo. Si tu web tiene formularios de contacto, registro o compra, esta guía te explica exactamente cómo hacerlos accesibles según WCAG 2.2 —el estándar vigente en 2026— con ejemplos de código reales que puedes aplicar directamente.
Desde nuestro estudio de diseño web en Madrid implementamos accesibilidad en formularios como parte del proceso estándar de desarrollo, no como un añadido posterior.
Tabla de Contenido
- 1. ¿Qué son los formularios web accesibles?
- 2. Pautas WCAG 2.2 aplicadas a formularios
- 3. Etiquetado correcto de campos: la base de todo
- 4. Ejemplos prácticos de formularios accesibles
- 5. Validación de datos y mensajes de error accesibles
- 6. Navegación por teclado en formularios
- 7. Checklist de validación: formularios accesibles WCAG 2.2
- 8. Conclusión: formularios accesibles como estándar, no como excepción
- 9. Preguntas frecuentes sobre formularios accesibles
¿Qué son los formularios web accesibles?
Un formulario web accesible es aquel que puede ser completado correctamente por cualquier usuario, independientemente de si usa ratón, teclado, lector de pantalla, control por voz u otra tecnología asistiva. Esto implica que cada campo tiene una etiqueta clara, los errores se comunican de forma comprensible y la navegación sigue un orden lógico.
Para que un formulario sea verdaderamente accesible debe cumplir cuatro condiciones:
- Perceptible: todos los campos, etiquetas e instrucciones son visibles o interpretables por tecnologías asistivas.
- Operable: el formulario completo es navegable y completable usando solo el teclado.
- Comprensible: las instrucciones son claras, los errores se describen con precisión y el usuario sabe cómo corregirlos.
- Robusto: el código es válido y compatible con lectores de pantalla actuales y futuros.
Pautas WCAG 2.2 aplicadas a formularios
Las WCAG 2.2, vigentes desde octubre de 2023, son el estándar que debes cumplir. Para formularios, los criterios clave son:
- 1.3.1 Info y relaciones: la información, estructura y relaciones transmitidas a través de la presentación deben poder determinarse por software (es decir, mediante código semántico).
- 1.3.5 Identificación del propósito del campo de entrada: los campos que recopilan datos del usuario deben tener su propósito identificable mediante código.
- 2.4.3 Orden del foco: el orden de tabulación debe seguir la secuencia lógica del formulario.
- 3.3.1 Identificación de errores: si se detecta un error, el campo con error se identifica y el error se describe al usuario en texto.
- 3.3.2 Etiquetas o instrucciones: se proporcionan etiquetas o instrucciones cuando el contenido requiere entrada del usuario.
- 3.3.7 y 3.3.8 (nuevos en 2.2): autenticación accesible — no se puede exigir un test cognitivo (como un CAPTCHA de imagen) sin alternativa accesible.
Para entender los distintos niveles de cumplimiento (A, AA, AAA), consulta nuestra guía sobre los niveles de accesibilidad web WCAG.
Etiquetado correcto de campos: la base de todo
El error más frecuente en formularios es la ausencia o el mal uso del elemento <label>. Esta etiqueta es lo que permite a un lector de pantalla anunciar «campo Nombre» cuando el usuario llega a ese input.
Uso correcto del elemento label
La asociación debe ser explícita mediante el atributo for que coincide con el id del campo:
<div class=»form-group»>
<label for=»nombre»>Nombre completo <span aria-hidden=»true»>*</span></label>
<input type=»text» id=»nombre» name=»nombre» required
aria-required=»true»
aria-describedby=»nombre-error»>
<span id=»nombre-error» class=»error-msg» role=»alert» aria-live=»polite»></span>
</div>
aria-label y aria-labelledby: cuándo usarlos
Cuando no puedes usar <label> visible (por ejemplo en un campo de búsqueda dentro de un icono), usa aria-label directamente en el input:
<!– Alternativa cuando no hay label visible –>
<input type=»search» aria-label=»Buscar en el sitio» placeholder=»¿Qué buscas?»>
Regla práctica: Usa siempre <label> visible como primera opción. aria-label es un recurso válido pero no aporta la misma claridad visual que la etiqueta explícita.
Ejemplos prácticos de formularios accesibles
Ejemplo 1: Formulario de contacto accesible
Este es el patrón mínimo que debe tener cualquier formulario de contacto:
<form novalidate>
<div class=»form-group»>
<label for=»email»>Correo electrónico <span aria-hidden=»true»>*</span></label>
<input type=»email» id=»email» name=»email»
required aria-required=»true»
autocomplete=»email»
aria-describedby=»email-hint email-error»>
<span id=»email-hint» class=»field-hint»>Ejemplo: nombre@dominio.com</span>
<span id=»email-error» class=»error-msg» role=»alert»></span>
</div>
<div class=»form-group»>
<label for=»mensaje»>Mensaje <span aria-hidden=»true»>*</span></label>
<textarea id=»mensaje» name=»mensaje» rows=»5″
required aria-required=»true»
aria-describedby=»mensaje-error»></textarea>
<span id=»mensaje-error» class=»error-msg» role=»alert»></span>
</div>
<button type=»submit»>Enviar mensaje</button>
</form>
Ejemplo 2: Grupo de opciones (fieldset + legend)
Para grupos de checkboxes o radios, usa siempre <fieldset> con <legend>:
<fieldset>
<legend>¿Cómo prefieres que te contactemos?</legend>
<div>
<input type=»radio» id=»contacto-email» name=»contacto» value=»email»>
<label for=»contacto-email»>Por email</label>
</div>
<div>
<input type=»radio» id=»contacto-tel» name=»contacto» value=»telefono»>
<label for=»contacto-tel»>Por teléfono</label>
</div>
</fieldset>
¿Los formularios de tu web son accesibles?
Como diseñador web en Madrid especializado en accesibilidad, reviso y corrijo formularios para que cumplan WCAG 2.2. Calcula el coste de tu proyecto con nuestra calculadora de presupuesto web online.

Validación de datos y mensajes de error accesibles
La validación es donde más fallos de accesibilidad aparecen en formularios reales. Un mensaje de error accesible debe cumplir tres condiciones:
- Identifica el campo con error: no «hay un error en el formulario» sino «El campo Correo electrónico es obligatorio».
- Se anuncia automáticamente a lectores de pantalla mediante
role="alert"oaria-live="polite". - Está próximo al campo en el DOM, no al principio ni al final del formulario.
Patrón correcto de mensaje de error
<!– Cuando el usuario envía sin rellenar el email –>
<span id=»email-error» class=»error-msg» role=»alert»>
Por favor, introduce un correo electrónico válido. Ejemplo: nombre@dominio.com
</span>
Opciones de corrección y confirmación de datos
Para formularios en varios pasos o con información crítica (reservas, pagos), ofrece una página de resumen antes del envío final donde el usuario pueda revisar y corregir sus datos. Esto cubre el criterio WCAG 3.3.4 (Prevención de errores).
Navegación por teclado en formularios
Todo el formulario debe poder completarse usando solo Tab, Shift+Tab, Space y Enter. Para verificarlo:
- El orden de tabulación debe seguir la secuencia visual lógica del formulario.
- El indicador de foco debe ser siempre visible y tener contraste mínimo 3:1 (criterio WCAG 2.4.13 de WCAG 2.2). Para más detalles sobre el color y contraste del foco, consulta nuestro artículo sobre el color en la accesibilidad web.
- Los campos ocultos con
display:noneovisibility:hiddendeben quedar excluidos del orden de tabulación. - Los botones de envío son alcanzables con Tab y activables con Enter o Space.
Checklist de validación: formularios accesibles WCAG 2.2
Antes de publicar cualquier formulario, comprueba estos puntos:
- Cada campo tiene un
<label>visible asociado mediantefor/id. - Los campos obligatorios están indicados visualmente Y con
aria-required="true". - El indicador de obligatoriedad (asterisco) tiene su significado explicado al inicio del formulario.
- Los mensajes de error describen el problema concreto y son anunciados por lectores de pantalla.
- Los grupos de checkboxes/radios usan
<fieldset>+<legend>. - El formulario es completamente navegable con teclado en orden lógico.
- El contraste del texto de las etiquetas cumple 4.5:1.
- El contraste de los bordes de los campos cumple 3:1 respecto al fondo.
- Los campos de autocompletado usan el atributo
autocompletecorrecto. - No se usa CAPTCHA visual sin alternativa de texto o audio.
Para validar el resultado, usa las herramientas de accesibilidad web como axe DevTools, WAVE o Lighthouse, que detectan la mayoría de errores estructurales de formularios.
Conclusión: formularios accesibles como estándar, no como excepción
Implementar formularios accesibles no añade coste significativo cuando se hace desde el inicio del proyecto. El mayor coste es siempre la corrección a posteriori. Si estás pensando en diseñar una página web accesible desde cero, el momento de aplicar estas prácticas es durante el diseño y el desarrollo, no después del lanzamiento.
Si necesitas un proyecto web con accesibilidad incorporada de base, descubre qué incluye nuestro servicio de diseño web profesional.
Preguntas frecuentes sobre formularios accesibles
¿Cómo hacer un formulario accesible según la WCAG?
Lo mínimo imprescindible es: usar <label> asociado a cada campo, proporcionar mensajes de error descriptivos con role="alert", asegurar la navegación completa por teclado y garantizar que el contraste de texto y bordes cumple los ratios WCAG 2.2 (4.5:1 para texto, 3:1 para bordes de campos).
¿Qué es un formulario accesible con ejemplo?
Un formulario accesible tiene cada campo con su <label for="id">, los campos obligatorios marcados con aria-required="true", los grupos de opciones dentro de <fieldset><legend>, y los mensajes de error junto al campo que los origina con role="alert". Puedes ver el código completo en la sección de ejemplos de esta guía.
¿Es obligatorio tener formularios accesibles en España?
Sí. La transposición de la Directiva Europea de Accesibilidad y la normativa española vigente obligan a los sitios que ofrecen servicios al público a cumplir al menos el nivel AA de WCAG 2.2, que incluye todos los criterios de accesibilidad para formularios.
¿Cómo compruebo si un formulario es accesible?
Navega el formulario usando solo el teclado (Tab, Shift+Tab, Enter, Space). Activa un lector de pantalla (NVDA en Windows, VoiceOver en Mac/iOS) y completa el formulario sin mirar la pantalla. Luego pásale axe DevTools o WAVE para detectar errores automáticos. Si supera los tres, el formulario es accesible para la gran mayoría de usuarios.
![Herramientas de accesibilidad web: guía comparativa [2026] 1 Herramientas de accesibilidad web: guía comparativa [2026]](https://ml4f7ey30fin.i.optimole.com/cb:VW-X.f39/w:1024/h:572/q:mauto/f:best/https://marcloic.es/wp-content/uploads/2026/03/herramientas-accesibilidad-web-marcloic.webp)




