Si diriges un proyecto digital, sabes que un botón sin etiqueta puede convertirse en una barrera infranqueable para una persona usuaria de lector de pantalla. Aquí entra aria-label: un atributo HTML pensado para dar un nombre accesible a elementos que, de otro modo, quedarían “mudos” para las tecnologías de asistencia.
En este artículo te explicamos qué es, cuándo usarlo, cuándo no, y cómo encaja en un flujo de desarrollo accesible serio. Y si no sabes por dónde empezar cuando hablamos de desarrollo accesible, echa un vistazo a nuestros inSuit Services™.
El atributo aria-label es una propiedad del estándar WAI-ARIA, desarrollado por el W3C, que asigna un nombre accesible a un elemento del DOM. Ese nombre lo “leen” los lectores de pantalla (NVDA, JAWS, VoiceOver, TalkBack) cuando el usuario llega al elemento. Si un icono de lupa no lleva texto visible, aria-label permite anunciarlo como “Buscar”.
Su utilidad principal es cubrir tres escenarios concretos donde el HTML semántico no basta por sí solo:
La propia W3C insiste en algo clave: ARIA nunca sustituye al HTML semántico. Usa primero las etiquetas nativas y reserva las etiquetas aria para los casos que no se pueden resolver de otra forma para mantener la accesibilidad en WordPress.
Estas tres propiedades parecen sinónimos, pero cumplen funciones distintas. Conocer la diferencia evita errores que penalizan en auditoría:
En la práctica, aria describedby vs aria label se resuelve así: el primero describe, el segundo nombra. Si la información ya aparece visible en la página y es la etiqueta principal del elemento, usa aria-labelledby. Si solo está disponible en el atributo, usa aria-label.
En general, usa aria-label cuando se cumplan estas condiciones:
No uses aria-label en estos casos:
Tres ejemplos que aparecen casi en cualquier proyecto:
<button aria-label=”Buscar”><svg …></svg></button>
<a href=”/post-1″ aria-label=”Leer más sobre la EAA en España”>Leer más</a>
<nav aria-label=”Navegación principal”>…</nav>
También existe la variante html aria-labelledby cuando el nombre accesible ya está en otro elemento del DOM:
<section aria-labelledby=”titulo-seccion”><h2 id=”titulo-seccion”>Cumplimiento normativo</h2>…</section>
¿Aún no acabas de entender para qué sirve aria-labelledby exactamente? Sirve para evitar duplicar texto cuando el nombre ya está visible en pantalla. Es preferible a aria-label en esos casos porque mantiene una única fuente de verdad.
Para complementar el diseño visual sin afectar al nombre accesible se puede ocultar con CSS el elemento referenciado por aria-labelledby, usando una clase tipo .sr-only que lo mantiene disponible para los lectores de pantalla. Conviene evitar display:none en estos casos.
En frameworks modernos, el atributo aria-label se aplica como cualquier otra prop. La sintaxis es la que cambia.
En React la sintaxis del atributo aria-label no sufre ninguna modificación, se escribe con el guión intermedio, es decir que es una excepción a la regla de que los atributos deben escribirse en camelCase:
<button aria-label=”Cerrar modal” onClick={handleClose}><IconClose /></button>
En Vue, Angular y Svelte se conserva el nombre HTML original con guión, aunque la sintaxis de enlace dinámico varía según el framework:
Cuatro recomendaciones para no comprometer la accesibilidad en aplicaciones SPA:
Para profundizar en cómo la IA puede ayudar (o estorbar) en esta tarea, te recomendamos nuestro post sobre IA para generar código accesible.
Los errores más recurrentes con aria labeling no son técnicos en sentido estricto. Son errores de criterio: equipos que aplican ARIA por defecto, por costumbre, o porque “así sale el lighthouse en verde”. El resultado suele ser una experiencia peor de la que había antes de tocar el código.
Los fallos más vistos en auditorías:
Para detectar este tipo de errores y ponerles fin, puedes usar herramientas de apoyo que automatizan el proceso por ti en 2 pasos:
inSuit Auditor™ realiza auditorías manuales guiadas según la metodología de la norma EN 301 549 y las WCAG 2.2. Permite revisar de forma estructurada los criterios que no se pueden validar con herramientas automáticas: claridad de instrucciones, orden lógico de lectura, foco visible y, sobre todo, estructura semántica y nombres accesibles.
Es la herramienta que utilizan nuestros equipos para detectar incoherencias entre nombre visible y nombre accesible, etiquetas ARIA mal aplicadas o ausentes en componentes interactivos personalizados.
Una vez identificados los errores, inSuit Remedy™ aplica las correcciones en tiempo real, desde la nube, sin tocar el código fuente original.
Tras una auditoría experta, nuestro equipo configura los ajustes avanzados de la solución que insertan o corrigen atributos ARIA, mejoran nombres accesibles y resuelven barreras conforme a las WCAG 2.2 nivel AA y la norma EN 301 549. Es la salida más rápida para sitios en producción que necesitan cumplir la normativa antes de la próxima auditoría.
Un uso correcto del atributo aria label es una decisión de diseño que se toma en cada componente. Integrar esa decisión en tu ciclo de desarrollo evita que la accesibilidad se quede en el último sprint, cuando ya no hay tiempo de corregir.
¿Quieres conocer más acerca de nuestras soluciones de accesibilidad digital? En inSuit, te ofreceremos toda la información que necesites sobre nuestros servicios. ¡No dudes en contactarnos!