Mode sans média : les images ne sont pas affichées, et celles qui sont chargées à la demande ne sont pas téléchargées. Poids de cette page : —.

Générateur de tableau HTML accessible

Collez les cellules d’un tableur ou d’un CSV : l’outil écrit le code du tableau HTML avec son titre, ses en-têtes et leur portée, et montre l’aperçu.

Collées depuis un tableur, ou séparées par un point-virgule ou une barre verticale. Une ligne par rangée.

Exemples :

En-têtes de colonne

Résultat

Titre et en-têtes déclarés

Tableau simple, 4 colonnes, 3 lignes de données : en-têtes en <th> avec leur portée (scope).

Vos tableaux en ligne ont-ils un titre et des en-têtes ? Le pré-audit gratuit vérifie toute une page : tableaux, contrastes, titres, formulaires… Lancer le pré-audit gratuit

Aperçu

Prêts de la médiathèque par trimestre, 2026
Site T1 T2 T3
Centre 4 210 3 980 3 150
Rive gauche 1 870 1 920 1 640
Bibliobus 620 710 540

Code HTML

<table>
  <caption>Prêts de la médiathèque par trimestre, 2026</caption>
  <thead>
    <tr>
      <th scope="col">Site</th>
      <th scope="col">T1</th>
      <th scope="col">T2</th>
      <th scope="col">T3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Centre</th>
      <td>4 210</td>
      <td>3 980</td>
      <td>3 150</td>
    </tr>
    <tr>
      <th scope="row">Rive gauche</th>
      <td>1 870</td>
      <td>1 920</td>
      <td>1 640</td>
    </tr>
    <tr>
      <th scope="row">Bibliobus</th>
      <td>620</td>
      <td>710</td>
      <td>540</td>
    </tr>
  </tbody>
</table>

Outil gratuit Critères 5.1, 5.4, 5.6 et 5.7

En bref

Pour des en-têtes de colonne sur deux lignes, il relie chaque cellule à tous ses en-têtes par les attributs id et headers.

  • Collage depuis Excel, LibreOffice ou Google Sheets, CSV à point-virgule ou tableau Markdown.
  • Titre en <caption>, premier enfant de <table> ; en-têtes en <th>.
  • Tableau simple : scope="col" et scope="row" (test 5.7.2).
  • En-têtes sur deux lignes : chaque <th> reçoit un id, chaque cellule un attribut headers (tests 5.7.3 et 5.7.4), et le résumé exigé par le critère 5.1 va dans le <caption>.
  • Tout se passe dans votre navigateur : aucune cellule n’est envoyée.

Limites du verdict : l’outil garantit la structure du code, pas son sens. Il ne sait pas si votre titre et votre résumé sont pertinents (critères 5.2 et 5.5), ni si le tableau sert à présenter des données plutôt qu’à mettre en page. Il ne produit pas d’en-têtes de ligne sur plusieurs colonnes, ni d’en-têtes intermédiaires au milieu du tableau.

Toute la page à vérifier ? Lancer l’analyseur gratuit

Les balises d’un tableau HTML

<table> contient tout le tableau. Son titre va dans une balise caption, que la spécification HTML place en premier enfant du tableau, avant toute ligne. Les lignes d’en-têtes de colonne se regroupent dans thead, les lignes de données dans tbody. Chaque ligne est un tr ; dans une ligne, th marque une cellule d’en-tête et td une cellule de données. Les attributs colspan et rowspan étendent une cellule sur plusieurs colonnes ou plusieurs lignes.

Ce que demande le RGAA

Le critère 5.6 du RGAA 4.1.2 demande que chaque en-tête de colonne et chaque en-tête de ligne d’un tableau de données soit un <th>, ou une balise avec le rôle ARIA columnheader ou rowheader. Le glossaire recommande th, seule balise prise en charge par toutes les technologies d’assistance.

Le critère 5.7 porte sur le lien entre chaque cellule et ses en-têtes. Un th qui vaut pour toute sa colonne ou toute sa ligne porte un attribut scope, un id unique ou un rôle ARIA (test 5.7.1). Avec scope, la valeur est col pour un en-tête de colonne et row pour un en-tête de ligne (test 5.7.2). Le critère admet un th sans scope quand les en-têtes tiennent sur une seule ligne ou une seule colonne.

Le titre n’est pas imposé à un tableau simple. S’il existe, il doit être associé au tableau ( critère 5.4) et identifier son contenu de façon claire et concise (critère 5.5). Le glossaire admet aussi les attributs title, aria-label et aria-labelledby, mais recommande caption, seul bien restitué par toutes les technologies d’assistance.

Tableau simple ou tableau complexe

Le RGAA appelle tableau de données complexe un tableau dont les en-têtes ne sont pas tous sur la première ligne ou la première colonne, ou dont un en-tête ne vaut pas pour toute sa ligne ou toute sa colonne. Des colonnes groupées par année, puis par semestre, en sont l’exemple courant. Il demande deux choses de plus.

  • Un résumé qui explique sa nature et sa structure ( critère 5.1). En HTML5, le glossaire ne retient qu’une technique : le placer dans le caption, quitte à le masquer visuellement en CSS. L’outil l’ajoute sous le titre, dans un paragraphe.
  • Des en-têtes reliés un à un aux cellules. Chaque th reçoit un id unique et pas de scope (test 5.7.3), et chaque cellule liste dans son attribut headers les id de tous ses en-têtes (test 5.7.4), par exemple headers="prets-2025 prets-2025-s1 prets-centre". La technique H63 des WCAG renvoie elle aussi vers id et headers pour les tableaux complexes.

Le RGAA précise que headers l’emporte sur scope quand une cellule porte les deux : les en-têtes reliés par scope sont alors ignorés. L’outil n’écrit donc jamais les deux dans un même tableau.

Comment l’outil lit votre collage

Il reconnaît la tabulation d’un tableur, le point-virgule d’un CSV à la française et la barre verticale d’un tableau Markdown. La virgule n’est jamais prise pour un séparateur : elle sert aux décimales. Une cellule entre guillemets reste entière, même si elle contient un point-virgule ou un retour à la ligne.

Avec l’option « Deux premières lignes », les cases vides de la première ligne indiquent les fusions, comme les donne la copie de cellules fusionnées. Un en-tête suivi de cases vides couvre les colonnes qui ont un sous-en-tête en deuxième ligne (colspan). Un en-tête sans rien en dessous couvre les deux lignes (rowspan), comme « Site » dans l’exemple.

Les tableaux de mise en forme

Un tableau qui ne sert qu’à placer des éléments à l’écran n’a pas d’en-têtes. Le critère 5.3 lui demande l’attribut role="presentation" et un contenu qui reste compréhensible lu cellule après cellule. Le critère 5.8 lui interdit caption, th, thead et tfoot, et sur ses cellules les attributs scope, headers et axis. Cet outil ne produit que des tableaux de données : pour une mise en page, une grille CSS évite ces contraintes.

Ce que l’outil ne vérifie pas

  • La pertinence du titre et du résumé (critères 5.2 et 5.5) : relisez-les en vous demandant s’ils suffisent à savoir ce que contient le tableau sans le parcourir.
  • Le rôle de chaque cellule : seule une personne sait si la première colonne contient des intitulés ou des données.
  • Les en-têtes de ligne sur plusieurs colonnes, ou les en-têtes intermédiaires au milieu du tableau : complétez alors les id et headers à la main.
  • Le rendu dans votre site : les couleurs de vos styles relèvent du critère 3.2 du RGAA, que l’outil de contraste vérifie.

Sources

RGAA 4.1.2, critère 5.1 (résumé des tableaux de données complexes) ; RGAA 4.1.2, critère 5.4 (titre associé au tableau de données) ; RGAA 4.1.2, critère 5.6 (déclaration des en-têtes) ; RGAA 4.1.2, critère 5.7 (association des cellules à leurs en-têtes) ; RGAA 4.1.2, critère 5.8 (tableaux de mise en forme) ; RGAA 4.1.2, glossaire : Tableau de données complexe ; RGAA 4.1.2, glossaire : Résumé (de tableau) ; RGAA 4.1.2, glossaire : Tableau de données ayant un titre ; HTML Living Standard, élément caption, en anglais ; HTML Living Standard, attributs scope et headers, en anglais ; WCAG 2.1, technique H63 : l’attribut scope, en anglais ; WCAG 2.1, technique H43 : les attributs id et headers, en anglais ; WCAG 2.1, échec F91 : en-têtes de tableau non balisés, en anglais .

Page mise à jour le 11 novembre 2026.

Questions fréquentes

Quelle différence entre th et td dans un tableau HTML ?

<th> marque une cellule d’en-tête, l’intitulé d’une colonne ou d’une ligne ; <td> marque une cellule de données. Le critère 5.6 du RGAA demande que chaque en-tête d’un tableau de données soit un <th> (ou porte un rôle ARIA columnheader ou rowheader). Un intitulé mis en gras dans un <td> ne suffit pas : les WCAG en font un échec (F91), car un lecteur d’écran qui parcourt le tableau n’annonce alors pas l’en-tête avec la cellule.

Faut-il mettre scope="col" et scope="row" sur les en-têtes ?

Le test 5.7.1 demande que chaque <th> qui vaut pour toute sa colonne ou toute sa ligne ait un attribut scope, un id ou un rôle ARIA, et le test 5.7.2 fixe les valeurs : col pour un en-tête de colonne, row pour un en-tête de ligne. Le RGAA admet un <th> sans scope quand les en-têtes tiennent sur une seule ligne ou une seule colonne ; l’outil l’écrit quand même, c’est plus explicite et sans risque.

Le caption est-il obligatoire ?

Le RGAA n’impose pas de titre à un tableau simple : les critères 5.4 et 5.5 portent sur les tableaux qui en ont un. Mais s’il y a un titre, le <caption> est la technique que le glossaire recommande. Pour un tableau complexe, le résumé exigé par le critère 5.1 se place dans le <caption> : c’est la seule technique utilisable aujourd’hui en HTML5 selon le glossaire.

Quand faut-il utiliser les attributs id et headers ?

Quand un en-tête ne vaut pas pour toute sa ligne ou toute sa colonne, ou que les en-têtes ne sont pas tous sur la première ligne et la première colonne : c’est un tableau complexe. Chaque <th> reçoit alors un id unique sans scope (test 5.7.3), et chaque cellule liste dans headers les id de tous ses en-têtes (test 5.7.4).

Comment indiquer des cellules fusionnées dans le collage ?

Copiez-les telles quelles depuis le tableur : une cellule fusionnée se colle en une valeur suivie de cases vides. Avec l’option « Deux premières lignes », un en-tête suivi de cases vides couvre les colonnes dont la deuxième ligne a un sous-en-tête (colspan), et un en-tête sans rien en dessous couvre les deux lignes (rowspan).

Un audit RGAA, critère par critère

Un outil vérifie un point. L’audit teste à la main les 106 critères sur chaque page de l’échantillon et livre la déclaration d’accessibilité. À partir de 1 500 € HT pour un échantillon de 8 pages.

Voir l’audit RGAA Poser une question

À lire sur le sujet

Outils complémentaires

  • Critères 11.5 et 11.6 Générateur de fieldset et legend Le code d’un groupe de boutons radio, de cases à cocher ou de champs liés, dans un fieldset avec sa légende, prêt à copier.
  • Critère 12.7 Générateur de lien d’évitement Le HTML et le CSS d’un lien d’évitement visible au focus, avec sa cible et un aperçu à tester au clavier.
  • Critères 3.2 et 3.3 Contraste des couleurs Le rapport de contraste de deux couleurs ou de toute une palette, avec la couleur conforme la plus proche dans la même teinte.

Tous les outils gratuits