Tablas accesibles con scope y caption

Buenas prácticas para construir tablas de datos legibles y navegables en lector de pantalla.

Las tablas deben usarse para datos, no para maquetar layout.

Una tabla accesible necesita contexto (`caption`) y relaciones claras entre cabeceras y celdas.

Si hay agrupaciones complejas, la semántica debe explicarlas sin obligar a adivinar.

Una buena tabla permite recorrer información de forma predecible y rápida.

  • Qué incluir para que una tabla sea comprensible de verdad.
  • Cómo mejorar tablas existentes sin rehacer toda la UI.
  • Comienza por tablas de reporting, facturación y paneles de operaciones.
  • Añade caption y scope primero: son mejoras de alto impacto y bajo coste.
  • Si la tabla es interactiva, valida también orden de foco y feedback de cambios.

Claves teóricas

Qué incluir para que una tabla sea comprensible de verdad.

Aplicación en proyectos reales

Cómo mejorar tablas existentes sin rehacer toda la UI.

Comienza por tablas de reporting, facturación y paneles de operaciones.

Añade caption y scope primero: son mejoras de alto impacto y bajo coste.

Si la tabla es interactiva, valida también orden de foco y feedback de cambios.

  • Define convención de caption en todos los módulos de datos.
  • Revisa que cada columna tenga cabecera única y consistente.
  • Comprueba lectura de filas completas con lector de pantalla.
  • Documenta cuándo migrar tabla a vista resumida o tarjetas en móvil.

Patrón de código

Tabla básica con caption y cabeceras correctamente asociadas.

Accesibilidad Web
11

Tablas accesibles con scope y caption

Buenas prácticas para construir tablas de datos legibles y navegables en lector de pantalla.

Código del tema: accessible tables

📘 Teoría

Claves teóricas

Qué incluir para que una tabla sea comprensible de verdad.

1

Caption descriptivo

Explica qué representa la tabla y su alcance temporal o contextual.

2

Cabeceras con scope

Usa `th` con `scope="col"` o `scope="row"` para definir relaciones.

3

Estructura completa

Aprovecha `thead`, `tbody` y `tfoot` cuando el conjunto de datos lo requiera.

4

No abuses de merged cells

Muchos `rowspan/colspan` complican lectura asistida y mantenimiento.

5

Tablas grandes

Añade filtros, búsqueda o segmentación para reducir carga cognitiva.

6

Error común

Poner títulos visuales fuera de tabla sin un caption asociado.

Aplicación en proyectos reales

Cómo mejorar tablas existentes sin rehacer toda la UI.

Comienza por tablas de reporting, facturación y paneles de operaciones.

Añade caption y scope primero: son mejoras de alto impacto y bajo coste.

Si la tabla es interactiva, valida también orden de foco y feedback de cambios.

  • Define convención de caption en todos los módulos de datos.
  • Revisa que cada columna tenga cabecera única y consistente.
  • Comprueba lectura de filas completas con lector de pantalla.
  • Documenta cuándo migrar tabla a vista resumida o tarjetas en móvil.

Patrón de código

Tabla básica con caption y cabeceras correctamente asociadas.

Tabla de datos accesible
<table>
  <caption>Ventas por trimestre en 2026</caption>
  <thead>
    <tr>
      <th scope="col">Trimestre</th>
      <th scope="col">Ingresos</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Q1</th>
      <td>12.000 €</td>
    </tr>
  </tbody>
</table>

🧪 Aprende probando

Ejemplo Demo guiada Analiza una tabla con caption y cabeceras bien definidas.

🏁 Retos

Reto Reto práctico Corrige una tabla sin caption ni scope.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .