Générateur de table HTML, gratuit

Créez des tables HTML visuellement et copiez le code.

Aucune donnée ne quitte votre appareil

Comment utiliser

  1. Définissez le nombre de lignes et de colonnes, puis cliquez sur Appliquer.
  2. Saisissez les données directement dans les cellules éditables.
  3. Activez les options comme ligne d'en-tête, zébrées, bordures et survol.
  4. Cliquez sur Copier le HTML pour copier le code généré.

Questions fréquentes

Le code généré inclut-il du CSS ?

Oui. Lorsque vous activez des options comme zébrées, bordures ou survol, l'outil génère des styles CSS en ligne dans le HTML pour que la table fonctionne partout.

Quelle est la taille maximale de la table ?

Jusqu'à 50 lignes et 20 colonnes. Pour des ensembles de données plus grands, envisagez d'utiliser un outil de tableur et d'exporter en HTML.

Comment ça marche

  1. Définissez les dimensions de la table : entrez le nombre de lignes et de colonnes pour générer la grille initiale.
  2. Remplissez les données : cliquez sur les cellules pour saisir le contenu, ajoutez des lignes d'en-tête et activez bordures et zébrures.
  3. Stylisez la table : choisissez le style de bordure, la couleur de fond des en-têtes, la zébrure des lignes et le padding des cellules.
  4. Copiez le HTML : le balisage de table généré inclut un <thead> avec des en-têtes <th> et une structure sémantique correcte.

Pourquoi utiliser le générateur de table HTML ?

Écrire à la main le balisage de table HTML est fastidieux et répétitif, surtout pour des tables avec beaucoup de lignes ou d'en-têtes complexes. Obtenir l'imbrication correcte de <table>, <thead>, <tbody>, <tr>, <th> et <td> à chaque fois est sujet aux erreurs. Ce générateur produit des tables HTML sémantiquement correctes et accessibles avec des attributs scope sur les cellules d'en-tête pour la compatibilité avec les lecteurs d'écran, une prise en charge correcte des légendes et un CSS propre pour les bordures et les états de survol. Utilisez-le pour les tables de tarification, les tables de comparaison, les tables de données et la documentation.

Caractéristiques des tables

Qu'est-ce qu'un générateur de tableau HTML ?

Un générateur de tableau HTML vous donne une grille visuelle que vous pouvez remplir comme un tableur, puis émet le balisage <table> équivalent avec tous les bons éléments sémantiques. Au lieu de taper <table>, <thead>, <tbody>, <tr>, <th> et <td> à la main et de compter les balises d'ouverture et de fermeture, vous définissez les dimensions, tapez les données et copiez le résultat. La sortie est du HTML qui se valide et se lit correctement aux lecteurs d'écran.

Les éléments de tableau sémantique sont présents dans HTML depuis le brouillon de 1993 et ont été formalisés dans HTML 2.0 (1995). Ils existent pour une raison : les données tabulaires. Un tableau de prix, une matrice de comparaison, une grille de données triable, un tableau périodique des éléments, toute collection rectangulaire de faits où les lignes et les colonnes portent un sens. Les tableaux se lisent correctement aux technologies d'assistance lorsqu'ils sont utilisés pour des données tabulaires et créent des cauchemars d'accessibilité lorsqu'ils sont utilisés pour la mise en page (l'ère <div> et Flexbox a mis fin à cet abus).

Ce générateur produit un balisage accessible avec des attributs scope sur les cellules d'en-tête, un <thead> séparé pour la ligne d'en-tête, et du CSS inline pour les options visuelles que vous cochez. La sortie est prête à coller-copier pour les articles de blog, la documentation, les modèles d'e-mail et tout contexte qui accepte le HTML. La grille visuelle s'exécute entièrement dans votre navigateur, donc aucune donnée ne quitte votre appareil.

Ce qu'il y a dans le générateur

La rangée de contrôle supérieure contient deux entrées numériques (lignes et colonnes), un bouton Appliquer et quatre cases d'options (ligne d'en-tête, lignes rayées, bordées, effet de survol). Ajustez d'abord les dimensions, cliquez sur Appliquer, puis cochez les options qui correspondent à votre conception. La grille modifiable ci-dessous se met à jour instantanément, et le HTML généré dans la zone de texte reflète chaque changement que vous effectuez.

La grille modifiable est un véritable tableau HTML avec des entrées dans chaque cellule, de sorte que vous pouvez passer d'une cellule à l'autre avec la touche Tab, coller une colonne de valeurs ou utiliser la navigation au clavier. La ligne d'en-tête (lorsqu'elle est cochée) s'affiche avec un fond coloré afin que vous puissiez voir d'un coup d'œil quelle ligne deviendra <th> dans la sortie. La boîte de sortie en dessous affiche le HTML résultant en monospace, prêt à copier.

Trois boutons d'action se trouvent en bas : Copier HTML écrit le balisage dans votre presse-papiers via l'API Clipboard, Basculer l'aperçu affiche une version rendue ci-dessous afin que vous puissiez confirmer le style, et Effacer les cellules vide les données sans réinitialiser les dimensions. L'aperçu utilise le même CSS que la sortie, donc ce que vous voyez est ce que votre blog ou doc affichera.

Histoire et contexte

Tim Berners-Lee propose les tableaux (1993)

Le premier brouillon HTML à inclure <table> était la proposition HTML 3.0 de Dave Raggett fin 1993. L'élément était modelé sur l'environnement tabulaire LaTeX et le modèle de tableau CALS utilisé pour la documentation technique. Mosaic et les premiers Netscape rendaient les tableaux dès que le balisage était proposé, même avant la normalisation, c'est pourquoi les tableaux étaient l'une des premières primitives visuelles sur le web.

RFC 1942 standardise le modèle de tableau (1996)

Le RFC 1942 de Dave Raggett (mai 1996) a donné aux tableaux HTML leur première spécification formelle, y compris thead, tbody, tfoot, colgroup et l'attribut scope pour l'accessibilité. La même année, la recommandation HTML 3.2 du W3C a adopté le modèle de tableau essentiellement verbatim. La structure est restée largement inchangée pendant trois décennies.

L'âge sombre des tableaux de mise en page (1996 à 2005)

Avant que CSS ne soit largement supporté, les concepteurs utilisaient des tableaux pour positionner les éléments de page : un tableau à quatre cellules contenait l'en-tête, la navigation gauche, le contenu et le pied de page. La technique fonctionnait mais produisait un balisage illisible, brisait les lecteurs d'écran et rendait la refonte douloureuse. L'évangélisation CSS d'Eric Meyer (2000 à 2005) et Designing With Web Standards de Jeffrey Zeldman (2003) ont mis fin à l'ère, ramenant les tableaux à leur but sémantique : les données tabulaires.

Valeurs d'affichage CSS table-* (à partir de 2004)

CSS 2.1 a ajouté display: table, table-row et table-cell, afin que vous puissiez obtenir un comportement de mise en page de type tableau sur des éléments non-table. C'était utile pendant la brève période où Flexbox et Grid n'étaient pas encore supportés (environ 2010 à 2015). Aujourd'hui, display: grid et display: flex ont remplacé ces valeurs CSS table pour la mise en page, et les vrais tableaux sont réservés aux données.

Rôle de grille ARIA et accessibilité (2014)

WAI-ARIA 1.0 (2014) a introduit role=grid pour les tableaux interactifs et a clarifié comment les lecteurs d'écran devraient annoncer les en-têtes de tableau via l'attribut scope et le motif headers/id. Les lecteurs d'écran modernes (NVDA, JAWS, VoiceOver) lisent correctement un <table> correctement balisé avec contexte de colonne et de ligne, ce qui est impossible à reproduire avec des grilles basées sur <div>.

Modèles de tableaux responsives (2011 à présent)

Lorsque l'iPhone a rendu les petits écrans dominants, les concepteurs devaient comprendre comment afficher de larges tableaux sur des fenêtres étroites. L'article sur les tableaux responsives de Filament Group en 2011 a lancé une vague de motifs : défilement horizontal, lignes empilées sur mobile, colonnes pliables par priorité. Le CSS Working Group travaille sur les requêtes de conteneur et la sous-grille pour faciliter ces motifs ; pour l'instant, l'approche standard consiste à envelopper le tableau dans overflow-x: auto.

Flux de travail pratiques

Tableaux de prix pour une page d'atterrissage SaaS

Trois colonnes (Gratuit, Pro, Entreprise) par environ dix lignes de fonctionnalités. Cochez ligne d'en-tête pour faire des noms de plan des cellules <th>, cochez bordées pour une séparation claire, laissez rayées désactivé si votre conception a ses propres arrière-plans de ligne. Copiez le HTML, collez-le dans votre CMS ou site statique, et ajoutez une mince classe d'enveloppe pour le thème.

Matrice de comparaison pour les revues de blog

Lors de la revue de cinq outils à travers huit critères, un tableau avec des lignes rayées et des cellules bordées se lit plus proprement qu'une liste à puces. Cochez rayées, bordées et ligne d'en-tête ; tapez ou collez les données ; copiez. Le balisage sémantique rend la comparaison lisible dans les lecteurs de flux, les services d'archives et les lecteurs d'écran.

Tableau de référence dans la documentation d'API

Les docs d'API montrent souvent le nom du paramètre, le type, le défaut et la description sous forme tabulaire. Le générateur vous donne les quatre colonnes avec une ligne d'en-tête, vous remplissez les paramètres, copiez le HTML et collez dans Markdown qui supporte le HTML brut, ou dans votre framework de docs (Docusaurus, MkDocs, Hugo). L'attribut scope rend les colonnes navigables dans les lecteurs d'écran.

Newsletter par e-mail (avec mise en garde)

Les clients de messagerie (Outlook 2007 à 2019 surtout) ont un support CSS extrêmement incohérent, donc le HTML de newsletter utilise toujours des tableaux pour la mise en page (une exception à la règle pas-de-tableaux-de-mise-en-page). Pour les tableaux de données à l'intérieur d'une newsletter, la sortie stylisée inline du générateur fonctionne dans la plupart des clients. Testez dans Litmus ou Email on Acid avant d'envoyer à une grande liste.

Maquette rapide de tableau de bord interne

Lors du prototypage d'un tableau de bord administrateur interne, un tableau HTML statique avec des lignes rayées ressemble plus au produit final qu'un texte de remplacement. Générez la structure, collez-la dans le composant React ou Vue, et remplacez les données statiques par une boucle liée aux données plus tard.

Génération de PDF à partir de HTML

Lors de la génération de PDF à partir de HTML avec des outils comme Puppeteer, wkhtmltopdf, ou l'impression en PDF de Chrome, les tableaux se rendent de manière fiable sur tous les moteurs. Utilisez le générateur pour construire le tableau, collez dans votre modèle et exécutez le pipeline PDF. L'option bordées donne des lignes imprimées nettes sans CSS supplémentaire.

Pièges courants

Utiliser des tableaux pour la mise en page

Les tableaux sont pour les données tabulaires, pas la structure de page. Un <table> avec une ligne et trois colonnes pour positionner en-tête, contenu et barre latérale fait lire la page comme un tableau de données pour les lecteurs d'écran, ce qui est déroutant. Utilisez Flexbox ou CSS Grid pour la mise en page à la place. La seule exception est l'e-mail HTML, où les tableaux de mise en page sont encore nécessaires pour le rendu inter-clients.

Attribut scope manquant sur les cellules d'en-tête

Chaque <th> devrait avoir scope="col" ou scope="row" pour que les lecteurs d'écran sachent quel en-tête s'applique à quelle cellule de données. Sans scope, le lecteur doit deviner, produisant souvent le mauvais contexte. Ce générateur émet scope automatiquement pour les lignes d'en-tête. Si vous éditez le HTML manuellement, gardez les attributs scope en place.

En-têtes complexes (multi-niveaux) sans headers/id

Les tableaux avec des en-têtes de colonne groupés (T1, T2 chacun divisé en Jan, Fév, Mar) ont besoin de l'attribut headers sur chaque cellule de données pointant vers l'id des en-têtes pertinents. Scope seul est insuffisant pour les en-têtes à deux niveaux. Le générateur ne produit pas d'en-têtes complexes ; pour ceux-ci, éditez le HTML manuellement ou utilisez un plugin CMS qui supporte le motif.

Tableaux larges sur mobile

Un tableau à six colonnes est illisible sur un écran de téléphone de 375 pixels de large. Le motif convivial mobile par défaut consiste à envelopper le tableau dans un div avec overflow-x: auto afin que l'utilisateur puisse défiler horizontalement. Pour les tableaux à colonnes lourdes, considérez empiler les lignes en mini-cartes sur les petits écrans via @media (max-width). La sortie du générateur n'est pas auto-enveloppée ; ajoutez l'enveloppe dans votre CSS.

Cellules vides sans contenu explicite

Un <td></td> vide se lit comme vide pour les lecteurs d'écran, ce qui sonne bizarre lors de la liste de 50 entrées. Si une cellule n'a légitimement aucune donnée, écrivez <td>&mdash;</td> ou <td aria-label="pas de données">&ndash;</td>. Notez que l'entité tiret introduit un tiret cadratin, que ce site évite ; utilisez un trait d'union, «N/A» ou «Non disponible» à la place.

Tri et filtrage sans amélioration progressive

Un tableau HTML statique ne peut pas être trié ou filtré par les utilisateurs. Si votre audience a besoin d'interactivité, intégrez DataTables, AG Grid ou Tanstack Table. Le générateur produit le tableau sémantique sous-jacent, qui devient la fondation de ces bibliothèques. La navigation au clavier et les rôles ARIA viennent avec la bibliothèque.

Confidentialité et gestion des données

Tout s'exécute dans votre navigateur. La grille visuelle, la sortie HTML et l'aperçu vivent tous dans du JavaScript côté client. Nous n'envoyons pas vos données où que ce soit, ne journalisons pas les entrées et ne stockons rien dans les cookies ou localStorage. Rechargez la page et le tableau précédent a disparu.

Une fois la page chargée, l'outil fonctionne hors ligne. Vous pouvez vous déconnecter du réseau et construire des tableaux contenant des données clients, des prix internes ou tout autre contenu confidentiel sans qu'il touche un serveur tiers. Le bouton Copier HTML utilise l'API Clipboard qui nécessite un geste utilisateur et n'est pas observable aux parties externes.

Quand ne pas utiliser un tableau HTML statique

Mise en page de page (utilisez Flexbox ou Grid)

Si vous voulez une barre latérale à côté du contenu principal, une grille de cartes ou une barre de navigation, utilisez CSS Flexbox (display: flex) ou CSS Grid (display: grid). Les tableaux pour la mise en page produisent une sortie de lecteur d'écran déroutante et un HTML inflexible qui ne s'adapte pas aux changements de fenêtre comme le font les primitives de mise en page modernes.

Grands ensembles de données (au-dessus de 1000 lignes)

Un tableau HTML statique de 10 000 lignes est lent à rendre et consomme une mémoire significative. Utilisez une bibliothèque de grille virtualisante (TanStack Virtual, React Window, AG Grid) qui ne rend que les lignes visibles. Le HTML statique convient pour moins de quelques centaines de lignes.

Manipulation de données interactive (utilisez une bibliothèque de grille)

Lorsque les utilisateurs ont besoin de trier, filtrer, éditer, grouper ou paginer, vous avez besoin d'une vraie bibliothèque de grille. AG Grid, TanStack Table, DataTables et Bootstrap Table produisent tous un balisage <table> accessible sous le capot tout en ajoutant l'interactivité. La sortie du générateur est le point de départ, pas l'arrivée.

Graphiques et diagrammes (utilisez SVG ou canvas)

Un graphique à barres n'est pas un tableau, c'est une visualisation. Utilisez Chart.js, D3, Recharts, ou toute bibliothèque de graphiques basée sur SVG. Si vous avez besoin à la fois d'un graphique et d'un tableau de données de sauvegarde pour l'accessibilité, rendez le graphique et placez un <table> avec les mêmes données à proximité (ou caché dans une classe visuellement masquée) afin que les utilisateurs de lecteur d'écran obtiennent les chiffres.

Plus de questions

Dois-je toujours utiliser thead et tbody ?

Pour les tableaux avec une ligne d'en-tête, oui. <thead> sépare les lignes d'en-tête des lignes de données, ce qui permet aux navigateurs de figer l'en-tête sur les longs tableaux et permet aux lecteurs d'écran d'annoncer les en-têtes correctement. Le générateur inclut thead automatiquement lorsque l'option de ligne d'en-tête est cochée. Pour les tableaux sans en-tête, vous pouvez omettre les deux, mais c'est peu coûteux d'inclure <tbody> pour la complétude.

Quand utiliser scope="col" vs scope="row" ?

scope="col" va sur les cellules <th> qui étiquettent une colonne (la ligne supérieure d'en-têtes). scope="row" va sur les cellules <th> qui étiquettent une ligne (la cellule la plus à gauche lorsque chaque ligne a un nom). La plupart des tableaux n'ont que des en-têtes de colonne, donc scope="col" est le cas commun. Si vous avez les deux, marquez chacun avec le scope approprié.

Comment faire un tableau triable ?

Utilisez une bibliothèque JavaScript qui ajoute le clic-pour-trier au balisage <table> existant. Sortable.js, TanStack Table et DataTables font tous cela. Le CSS pur ne peut pas trier. La sortie du générateur est la fondation statique ; superposez la bibliothèque dessus dans votre projet final. Pour l'accessibilité, la bibliothèque devrait ajouter aria-sort à la colonne active.

Quel est le meilleur motif responsive ?

Le plus simple et le plus accessible est overflow-x: auto sur un div d'enveloppement, qui préserve la sémantique du tableau tout en permettant aux utilisateurs de défiler horizontalement. Pour les tableaux à colonnes lourdes, le motif de lignes empilées (display: block sur les tds à des largeurs étroites, avec des étiquettes de données via des attributs data-label) lit chaque ligne comme une liste étiquetée sur mobile. Les deux sont valides ; choisissez selon le cas d'usage de lecture-vs-comparaison du tableau.

Puis-je utiliser des tableaux HTML en Markdown ?

La plupart des processeurs Markdown (GitHub Flavored Markdown, Pandoc, MDX, MkDocs, Hugo) acceptent le HTML brut aux côtés de la syntaxe Markdown, donc vous pouvez coller la sortie du générateur directement. La syntaxe de tableau native de Markdown est plus simple mais manque colspan, rowspan, scope et le style, donc pour tout ce qui dépasse une grille simple, HTML est meilleur. Note : certains parseurs Markdown stricts (CommonMark sans extensions) ignorent le HTML par défaut.

Comment styliser des couleurs de ligne alternées sans CSS ?

Cochez l'option Lignes Rayées dans le générateur. La sortie inclut des attributs de style inline sur une ligne sur deux, donc le rayage survit même dans des contextes où le CSS est dépouillé (certains clients de messagerie web). Si votre environnement permet le CSS externe, préférez tr:nth-child(even) dans une feuille de style, qui est plus propre que les styles inline et plus facile à mettre à jour.

Outils associés

Générateur de table Markdown, gratuit Minifieur HTML, gratuit Convertisseur JSON → CSV, gratuit