Gerador de tabelas HTML

Crie tabelas HTML visualmente e copie o código.

Nenhum dado sai do seu dispositivo

Como usar

  1. Defina o número de linhas e colunas, depois clique em Aplicar.
  2. Insira os dados diretamente nas células editáveis.
  3. Ative opções como linha de cabeçalho, zebradas, bordas e hover.
  4. Clique em Copiar o HTML para copiar o código gerado.

Perguntas frequentes

O código gerado inclui CSS ?

Sim. Quando você ativa opções como zebradas, bordas ou hover, a ferramenta gera estilos CSS inline no HTML para que a tabela funcione em qualquer lugar.

Qual é o tamanho máximo da tabela ?

Até 50 linhas e 20 colunas. Para conjuntos de dados maiores, considere usar uma ferramenta de planilha e exportar em HTML.

Como funciona

  1. Defina as dimensões da tabela : insira o número de linhas e colunas para gerar a grade inicial.
  2. Preencha os dados : clique nas células para inserir o conteúdo, adicione linhas de cabeçalho e ative bordas e zebras.
  3. Estilize a tabela : escolha o estilo de borda, a cor de fundo dos cabeçalhos, a zebra das linhas e o padding das células.
  4. Copie o HTML : a marcação de tabela gerada inclui um <thead> com cabeçalhos <th> e uma estrutura semântica correta.

Por que usar o gerador de tabela HTML ?

Escrever manualmente a marcação de tabela HTML é tedioso e repetitivo, especialmente para tabelas com muitas linhas ou cabeçalhos complexos. Obter o aninhamento correto de <table>, <thead>, <tbody>, <tr>, <th> e <td> toda vez é sujeito a erros. Este gerador produz tabelas HTML semanticamente corretas e acessíveis com atributos scope nas células de cabeçalho para compatibilidade com leitores de tela, suporte correto a legendas e CSS limpo para bordas e estados de hover. Use-o para tabelas de preços, tabelas de comparação, tabelas de dados e documentação.

Características das tabelas

O que é um gerador de tabela HTML?

Um gerador de tabela HTML lhe dá uma grade visual que voce pode preencher como uma planilha, depois emite a marcação <table> equivalente com todos os elementos semanticos corretos. Em vez de digitar <table>, <thead>, <tbody>, <tr>, <th> e <td> à mão e contar tags de abertura e fechamento, voce define as dimensões, digita os dados e copia o resultado. A saída é HTML que valida e se le corretamente para leitores de tela.

Os elementos de tabela semantica estao no HTML desde o rascunho de 1993 e foram formalizados no HTML 2.0 (1995). Eles existem por uma razão: dados tabulares. Uma tabela de preços, uma matriz de comparação, uma grade de dados ordenável, uma tabela periódica de elementos, qualquer coleção retangular de fatos onde as linhas e colunas tem significado. Tabelas se leem corretamente para tecnologia assistiva quando usadas para dados tabulares e criam pesadelos de acessibilidade quando usadas para layout de página (a era <div> e Flexbox terminou esse abuso).

Este gerador produz marcação acessível com atributos scope em células de cabeçalho, um <thead> separado para a linha de cabeçalho, e CSS inline para as opções visuais que voce marca. A saída está pronta para copiar-colar em posts de blog, documentação, modelos de e-mail, e qualquer contexto que aceite HTML. A grade visual roda inteiramente em seu navegador, entao nenhum dado sai do seu dispositivo.

O que há dentro do gerador

A linha de controle superior contém duas entradas numéricas (linhas e colunas), um botão Aplicar e quatro caixas de opções (linha de cabeçalho, linhas listradas, com borda, efeito hover). Ajuste as dimensões primeiro, clique em Aplicar, depois marque as opções que correspondem ao seu design. A grade editável abaixo atualiza instantaneamente, e o HTML gerado na área de texto reflete cada mudança que voce faz.

A grade editável é uma tabela HTML real com inputs em cada célula, entao voce pode tabular entre células, colar uma coluna de valores, ou usar navegação por teclado. A linha de cabeçalho (quando marcada) renderiza com fundo colorido para que voce possa ver de relance qual linha se tornará <th> na saída. A caixa de saída abaixo mostra o HTML resultante em monoespaço, pronto para copiar.

Tres botões de ação ficam na parte inferior: Copiar HTML escreve a marcação para sua área de transferencia via Clipboard API, Alternar Pré-visualização mostra uma versao renderizada abaixo para que voce possa confirmar o estilo, e Limpar Células esvazia os dados sem redefinir as dimensões. A pré-visualização usa o mesmo CSS que a saída, entao o que voce ve é o que seu blog ou documento exibirá.

História e contexto

Tim Berners-Lee propõe tabelas (1993)

O primeiro rascunho HTML a incluir <table> foi a proposta HTML 3.0 de Dave Raggett no final de 1993. O elemento foi modelado no ambiente tabular LaTeX e modelo de tabela CALS usado para documentação técnica. Mosaic e o primeiro Netscape renderizavam tabelas assim que a marcação era proposta, mesmo antes da padronização, é por isso que tabelas foram uma das primeiras primitivas visuais na web.

RFC 1942 padroniza o modelo de tabela (1996)

O RFC 1942 de Dave Raggett (maio de 1996) deu às tabelas HTML sua primeira especificação formal, incluindo thead, tbody, tfoot, colgroup e o atributo scope para acessibilidade. No mesmo ano, a recomendação HTML 3.2 do W3C adotou o modelo de tabela essencialmente palavra por palavra. A estrutura permanece em grande parte inalterada por tres décadas.

A era das trevas das tabelas de layout (1996 a 2005)

Antes do CSS ser amplamente suportado, designers usavam tabelas para posicionar elementos de página: uma tabela de quatro células continha o cabeçalho, navegação esquerda, conteúdo e rodapé. A técnica funcionava mas produzia marcação ilegível, quebrava leitores de tela e tornava o redesign doloroso. O evangelismo CSS de Eric Meyer (2000 a 2005) e Designing With Web Standards de Jeffrey Zeldman (2003) terminaram a era, devolvendo tabelas ao seu propósito semantico: dados tabulares.

Valores display CSS table-* (de 2004 em diante)

CSS 2.1 adicionou display: table, table-row e table-cell, entao voce podia obter comportamento de layout do tipo tabela em elementos não-tabela. Isso era útil durante o breve período em que Flexbox e Grid ainda não eram suportados (aproximadamente 2010 a 2015). Hoje, display: grid e display: flex substituíram esses valores CSS table para layout, e tabelas reais são reservadas para dados.

Papel grid ARIA e acessibilidade (2014)

WAI-ARIA 1.0 (2014) introduziu role=grid para tabelas interativas e esclareceu como leitores de tela devem anunciar cabeçalhos de tabela via o atributo scope e o padrão headers/id. Leitores de tela modernos (NVDA, JAWS, VoiceOver) leem corretamente uma <table> corretamente marcada com contexto de coluna e linha, o que é impossível de replicar com grades baseadas em <div>.

Padrões de tabelas responsivas (2011 ao presente)

Quando o iPhone tornou telas pequenas dominantes, designers tiveram que descobrir como mostrar tabelas largas em viewports estreitos. O artigo de tabelas responsivas do Filament Group de 2011 iniciou uma onda de padrões: rolagem horizontal, linhas empilhadas no celular, colunas colapsando por prioridade. O CSS Working Group tem trabalhado em container queries e subgrid para facilitar esses padrões; por enquanto, a abordagem padrão é envolver a tabela em overflow-x: auto.

Fluxos de trabalho práticos

Tabelas de preços para uma landing page SaaS

Tres colunas (Grátis, Pro, Empresa) por cerca de dez linhas de recursos. Marque linha de cabeçalho para tornar os nomes do plano células <th>, marque com borda para separação clara, deixe listradas desligado se seu design tem seus próprios fundos de linha. Copie o HTML, cole-o em seu CMS ou site estático, e adicione uma classe wrapper fina para tematização.

Matriz de comparação para reviews de blog

Ao revisar cinco ferramentas em oito critérios, uma tabela com linhas listradas e células com borda se le mais limpa do que uma lista com marcadores. Marque listradas, com borda e linha de cabeçalho; digite ou cole os dados; copie. A marcação semantica torna a comparação legível em leitores de feed, serviços de arquivo e leitores de tela.

Tabela de referencia em documentação de API

Docs de API frequentemente mostram nome do paramêtro, tipo, padrão e descrição em forma tabular. O gerador lhe dá as quatro colunas com uma linha de cabeçalho, voce preenche os paramêtros, copia o HTML e cola em Markdown que suporta HTML cru, ou em seu framework de docs (Docusaurus, MkDocs, Hugo). O atributo scope torna as colunas navegáveis em leitores de tela.

Newsletter por e-mail (com ressalva)

Clientes de e-mail (Outlook 2007 a 2019 especialmente) tem suporte CSS extremamente inconsistente, entao HTML de newsletter ainda usa tabelas para layout (uma exceção à regra de não-tabelas-de-layout). Para tabelas de dados dentro de uma newsletter, a saída com estilo inline do gerador funciona na maioria dos clientes. Teste no Litmus ou Email on Acid antes de enviar para uma lista grande.

Mockup rápido de dashboard interno

Ao prototipar um dashboard administrativo interno, uma tabela HTML estática com linhas listradas parece mais próxima do produto final do que texto placeholder. Gere a estrutura, cole-a no componente React ou Vue, e substitua os dados estáticos por um loop ligado a dados depois.

Geração de PDF a partir de HTML

Ao gerar PDFs a partir de HTML com ferramentas como Puppeteer, wkhtmltopdf, ou a impressão para PDF do Chrome, as tabelas renderizam de forma confiável em todos os motores. Use o gerador para construir a tabela, cole em seu modelo, e execute o pipeline PDF. A opção com borda dá linhas impressas nítidas sem CSS extra.

Armadilhas comuns

Usar tabelas para layout de página

Tabelas são para dados tabulares, não estrutura de página. Uma <table> com uma linha e tres colunas para posicionar cabeçalho, conteúdo e sidebar faz a página ser lida como uma tabela de dados para leitores de tela, o que é confuso. Use Flexbox ou CSS Grid para layout em vez disso. A única exceção é e-mail HTML, onde tabelas de layout ainda são necessárias para renderização entre clientes.

Atributo scope ausente em células de cabeçalho

Cada <th> deve ter scope="col" ou scope="row" para que leitores de tela saibam qual cabeçalho se aplica a qual célula de dados. Sem scope, o leitor precisa adivinhar, frequentemente produzindo contexto errado. Este gerador emite scope automaticamente para linhas de cabeçalho. Se voce editar o HTML manualmente, mantenha os atributos scope no lugar.

Cabeçalhos complexos (multi-nível) sem headers/id

Tabelas com cabeçalhos de coluna agrupados (T1, T2 cada um dividido em Jan, Fev, Mar) precisam do atributo headers em cada célula de dados apontando para o id dos cabeçalhos relevantes. Scope sozinho é insuficiente para cabeçalhos de dois níveis. O gerador não produz cabeçalhos complexos; para esses, edite o HTML manualmente ou use um plugin de CMS que suporte o padrão.

Tabelas largas no celular

Uma tabela de seis colunas é ilegível em uma tela de telefone de 375 pixels de largura. O padrão amigável ao celular padrão é envolver a tabela em um div com overflow-x: auto para que o usuário possa rolar horizontalmente. Para tabelas com muitas colunas, considere empilhar as linhas em mini-cards em telas pequenas via @media (max-width). A saída do gerador não é auto-envolvida; adicione o wrapper em seu CSS.

Células vazias sem conteúdo explícito

Um <td></td> em branco se le como vazio para leitores de tela, o que soa estranho ao listar 50 entradas. Se uma célula legitimamente não tem dados, escreva <td>&mdash;</td> ou <td aria-label="sem dados">&ndash;</td>. Note que a entidade traço introduz um em-dash, que este site evita; use um hífen, 'N/A', ou 'Não disponível' em vez disso.

Ordenação e filtragem sem melhoria progressiva

Uma tabela HTML estática não pode ser ordenada ou filtrada por usuários. Se seu público precisa de interatividade, incorpore DataTables, AG Grid, ou Tanstack Table. O gerador produz a tabela semantica subjacente, que se torna a base dessas bibliotecas. Navegação por teclado e papéis ARIA vem com a biblioteca.

Privacidade e tratamento de dados

Tudo roda em seu navegador. A grade visual, a saída HTML e a pré-visualização todos vivem em JavaScript do lado do cliente. Não enviamos seus dados para lugar nenhum, não registramos entradas, e não armazenamos nada em cookies ou localStorage. Recarregue a página e a tabela anterior se foi.

Uma vez carregada a página, a ferramenta funciona offline. Voce pode desconectar da rede e construir tabelas contendo dados de clientes, preços internos, ou qualquer outro conteúdo confidencial sem tocar um servidor de terceiros. O botão Copiar HTML usa a Clipboard API que requer um gesto do usuário e não é observável por partes externas.

Quando não usar uma tabela HTML estática

Layout de página (use Flexbox ou Grid)

Se voce quer uma sidebar ao lado do conteúdo principal, uma grade de cards, ou uma barra de navegação, use CSS Flexbox (display: flex) ou CSS Grid (display: grid). Tabelas para layout produzem saída de leitor de tela confusa e HTML inflexível que não se adapta a mudanças de viewport como as primitivas modernas de layout fazem.

Grandes conjuntos de dados (acima de 1000 linhas)

Uma tabela HTML estática de 10.000 linhas é lenta para renderizar e consome memória significativa. Use uma biblioteca de grade virtualizadora (TanStack Virtual, React Window, AG Grid) que renderiza apenas linhas visíveis. HTML estático está bem para menos de algumas centenas de linhas.

Manipulação de dados interativa (use uma biblioteca de grade)

Quando usuários precisam ordenar, filtrar, editar, agrupar ou paginar, voce precisa de uma biblioteca de grade real. AG Grid, TanStack Table, DataTables e Bootstrap Table todos produzem marcação <table> acessível por baixo enquanto adicionam interatividade. A saída do gerador é o ponto de partida, não a chegada.

Gráficos (use SVG ou canvas)

Um gráfico de barras não é uma tabela, é uma visualização. Use Chart.js, D3, Recharts, ou qualquer biblioteca de gráficos baseada em SVG. Se voce precisa tanto de um gráfico quanto de uma tabela de dados de respaldo para acessibilidade, renderize o gráfico e coloque uma <table> com os mesmos dados por perto (ou escondida em uma classe visualmente escondida) para que usuários de leitor de tela obtenham os números.

Mais perguntas

Devo sempre usar thead e tbody?

Para tabelas com uma linha de cabeçalho, sim. <thead> separa as linhas de cabeçalho das linhas de dados, o que permite aos navegadores congelar o cabeçalho em tabelas longas e permite a leitores de tela anunciar cabeçalhos corretamente. O gerador inclui thead automaticamente quando a opção de linha de cabeçalho está marcada. Para tabelas sem cabeçalho, voce pode omitir ambos, mas é barato incluir <tbody> para completude.

Quando uso scope="col" vs scope="row"?

scope="col" vai em células <th> que rotulam uma coluna (a linha superior de cabeçalhos). scope="row" vai em células <th> que rotulam uma linha (a célula mais à esquerda quando cada linha tem um nome). A maioria das tabelas tem apenas cabeçalhos de coluna, entao scope="col" é o caso comum. Se voce tem ambos, marque cada um com o scope apropriado.

Como faço uma tabela ordenável?

Use uma biblioteca JavaScript que adiciona clique-para-ordenar à marcação <table> existente. Sortable.js, TanStack Table e DataTables todos fazem isso. CSS puro não pode ordenar. A saída do gerador é a base estática; coloque a biblioteca em cima em seu projeto final. Para acessibilidade, a biblioteca deve adicionar aria-sort à coluna ativa.

Qual é o melhor padrão responsivo?

O mais simples e acessível é overflow-x: auto em um div envolvente, que preserva a semantica da tabela enquanto permite aos usuários rolar horizontalmente. Para tabelas com muitas colunas, o padrão de linhas empilhadas (display: block em tds em larguras estreitas, com rótulos de dados via atributos data-label) le cada linha como uma lista rotulada no celular. Ambos são válidos; escolha com base no caso de uso de leitura-vs-comparação da tabela.

Posso usar tabelas HTML em Markdown?

A maioria dos processadores Markdown (GitHub Flavored Markdown, Pandoc, MDX, MkDocs, Hugo) aceitam HTML cru junto com sintaxe Markdown, entao voce pode colar a saída do gerador diretamente. A sintaxe nativa de tabela do Markdown é mais simples mas falta colspan, rowspan, scope e estilo, entao para qualquer coisa além de uma grade simples, HTML é melhor. Nota: alguns parsers Markdown rigorosos (CommonMark sem extensões) ignoram HTML por padrão.

Como estilizo cores de linha alternadas sem CSS?

Marque a opção Linhas Listradas no gerador. A saída inclui atributos de estilo inline em cada outra linha, entao o listrado sobrevive mesmo em contextos onde CSS é removido (alguns clientes de webmail). Se seu ambiente permite CSS externo, prefira tr:nth-child(even) em uma folha de estilos, que é mais limpo que estilos inline e mais fácil de atualizar.

Ferramentas relacionadas

Gerador de tabelas Markdown Minificador de HTML Conversor de JSON para CSV