Ir para a ferramenta
ViewCSV
Sem upload de arquivos

Converter CSV em tabela HTML

orders.csv· DADOS DE EXEMPLO15 linhas · 8 colunas
Saída
Bordas e números alinhados à direita; na saída só com a tabela, entram nomes de classe no lugar.
<table class="csv-table">
  <thead>
    <tr>
      <th scope="col">order_id</th>
      <th scope="col">customer</th>
      <th scope="col">city</th>
      <th scope="col">product</th>
      <th scope="col">quantity</th>
      <th scope="col">unit_price</th>
      <th scope="col">order_date</th>
      <th scope="col">status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td dir="auto">001041</td>
      <td dir="auto">Laura Costa</td>
      <td dir="auto">Porto Alegre</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">224.92</td>
      <td dir="auto">2026-01-15</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001042</td>
      <td dir="auto">Arthur Alves</td>
      <td dir="auto">Fortaleza</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">172.72</td>
      <td dir="auto">2026-02-11</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Miguel Costa</td>
      <td dir="auto">Rio de Janeiro</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">165.86</td>
      <td dir="auto">2026-03-07</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001044</td>
      <td dir="auto">Gael Rodrigues</td>
      <td dir="auto">Belo Horizonte</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">131.36</td>
      <td dir="auto">2026-04-23</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001045</td>
      <td dir="auto">Alice Oliveira</td>
      <td dir="auto">Porto Alegre</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">8</td>
      <td class="num" dir="auto"></td>
      <td dir="auto">2026-05-25</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001046</td>
      <td dir="auto">Helena Souza</td>
      <td dir="auto">Salvador</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">71.08</td>
      <td dir="auto">2026-06-08</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001047</td>
      <td dir="auto"> Laura Gomes </td>
      <td dir="auto">Porto Alegre</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">89.84</td>
      <td dir="auto">2026-07-16</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001048</td>
      <td dir="auto">Théo Oliveira</td>
      <td dir="auto">Fortaleza</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">49.50</td>
      <td dir="auto">2026-08-26</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001049</td>
      <td dir="auto">Helena Rodrigues</td>
      <td dir="auto">Salvador</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">54.27</td>
      <td dir="auto">2026-09-27</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001050</td>
      <td dir="auto">Heitor Santos</td>
      <td dir="auto">Curitiba</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">138.90</td>
      <td dir="auto">2026-01-05</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001051</td>
      <td dir="auto">Helena Ferreira</td>
      <td dir="auto">Curitiba</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">6.10</td>
      <td dir="auto">2026-02-03</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001052</td>
      <td dir="auto">Valentina Pereira</td>
      <td dir="auto">Belo Horizonte</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">106.72</td>
      <td dir="auto">2026-03-09</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001053</td>
      <td dir="auto">Laura Alves</td>
      <td dir="auto">Fortaleza</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">239.22</td>
      <td dir="auto">2026-04-12</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001054</td>
      <td dir="auto">Valentina Souza</td>
      <td dir="auto">São Paulo</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">9</td>
      <td class="num" dir="auto">154.44</td>
      <td dir="auto">2026-05-25</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Miguel Costa</td>
      <td dir="auto">Rio de Janeiro</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">165.86</td>
      <td dir="auto">2026-03-07</td>
      <td dir="auto">shipped</td>
    </tr>
  </tbody>
</table>

15 linhas · 1 arquivo

Abra ou cole um arquivo CSV e receba uma <table> com um <thead> de títulos <th scope="col"> e um <tr> por linha, ou uma página HTML completa que abre direto no navegador. Todo valor passa por escape de HTML, então um <script> ou um & nos seus dados aparece como texto e nunca vira marcação. A conversão acontece no seu navegador, e o arquivo nunca é enviado.

Como converter CSV em HTML

  1. Clique em Abrir arquivo, arraste um arquivo .csv, .tsv ou .txt para a ferramenta ou escolha Colar. Se as colunas parecerem erradas, ajuste o delimitador ou a codificação em Configurações de importação.
  2. Em Saída, escolha Só a tabela para colar a marcação em uma página ou CMS que já existe, ou Página HTML completa para ter um arquivo independente.
  3. Preencha a Legenda (opcional), decida sobre o estilo e as quebras de linha e depois clique em Copiar ou Baixar HTML.

Para um README ou uma wiki, uma tabela Markdown costuma ser mais fácil de editar; para um arquivo pronto para imprimir, use CSV para PDF.

O que cada opção faz

Só a tabelaÉ o padrão. Gera apenas o elemento <table>, pronto para colar em uma página, em um modelo de e-mail ou em um bloco HTML do CMS.
Página HTML completaAcrescenta <!doctype html>, <html lang="en">, <meta charset="utf-8"> e um <title> (a legenda ou, sem ela, Table), para o arquivo abrir corretamente em qualquer navegador.
Legenda (opcional)Grava um <caption> como primeiro filho da tabela: é o nome acessível que os leitores de tela anunciam para ela.
Adicionar estilo simplesVem ativada. Na página completa, embute uma folha de estilo pequena: bordas, linha de cabeçalho sombreada e números alinhados à direita. Com Só a tabela, em vez disso, coloca class="csv-table" na tabela e class="num" nas células numéricas, para que o seu próprio CSS defina a aparência.
Mostrar quebras de linha nas célulasVem ativada. Uma quebra de linha dentro do valor vira <br>. Desativada, a quebra fica no código-fonte, onde os navegadores a exibem como um espaço.

Como os dados mais delicados são tratados

  • &, <, >, " e ' são gravados como &amp;, &lt;, &gt;, &quot; e &#39; em toda célula, cabeçalho e legenda. Tags nos seus dados aparecem como texto, o que também significa que um HTML já existente no CSV não é renderizado.
  • Cada célula tem dir="auto", então valores em árabe ou hebraico aparecem da direita para a esquerda mesmo dentro de uma página da esquerda para a direita.
  • Uma coluna só é considerada numérica quando todos os valores preenchidos são números simples; uma coluna de ID como 0042 fica como texto e não é alinhada à direita. Os valores em si nunca são reformatados.
  • Vírgulas, aspas e quebras de linha entre aspas são lidas conforme a RFC 4180. Um cabeçalho em branco vira Column 3 e um repetido vira name (2).
  • A saída é UTF-8. A página completa declara isso com <meta charset="utf-8">; ao colar Só a tabela em outra página, essa página também precisa estar em UTF-8.

Solução de problemas

  • Letras acentuadas aparecem como é no arquivo de origem. O CSV não está em UTF-8. Escolha a codificação dele (muitas vezes Windows-1252, em exportações antigas do Excel) em Configurações de importação e abra o arquivo de novo.
  • As tags dos meus dados aparecem como texto. O HTML das células passou por escape de propósito, para não rodar como marcação. Se você confia no conteúdo e quer vê-lo renderizado, edite o resultado.
  • A tabela colada não tem bordas. Só a tabela acrescenta nomes de classe (com o estilo ativado), não CSS. Estilize .csv-table e td.num na folha de estilo do seu site, ou escolha Página HTML completa para ter os estilos embutidos.
  • Uma coluna concentra todos os valores. O delimitador foi detectado errado; defina-o em Configurações de importação.

Limites e privacidade

Arquivos de até 25 MB, 100.000 linhas ou 2 milhões de células abrem com prévia ao vivo das primeiras 200 linhas. Arquivos maiores são convertidos em modo de streaming: o arquivo é lido duas vezes, em partes (uma para medir as colunas e descobrir quais são numéricas, outra para gravar), um aviso informa que o download cobre o arquivo inteiro e a opção Copiar não fica disponível. Cada arquivo de saída tem limite de 4 GB.

A conversão roda em um worker em segundo plano nesta aba, então a página continua respondendo e Cancelar interrompe o processo. O CSV nunca é enviado a um servidor.

Exemplo

Uma lista de pedidos com um E comercial, um apóstrofo, aspas e HTML dentro de um comentário em duas linhas, convertida com as configurações padrão (Só a tabela, com estilo e quebras de linha visíveis). qty só tem números, por isso suas células recebem class="num".

CSV
id,product,qty,comment
0042,Fish & Chips,2,"<b>Extra</b> vinegar
no salt"
0043,"O'Brien's ""Stout""",12,
HTML
<table class="csv-table">
  <thead>
    <tr>
      <th scope="col">id</th>
      <th scope="col">product</th>
      <th scope="col">qty</th>
      <th scope="col">comment</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td dir="auto">0042</td>
      <td dir="auto">Fish &amp; Chips</td>
      <td class="num" dir="auto">2</td>
      <td dir="auto">&lt;b&gt;Extra&lt;/b&gt; vinegar<br>no salt</td>
    </tr>
    <tr>
      <td dir="auto">0043</td>
      <td dir="auto">O&#39;Brien&#39;s &quot;Stout&quot;</td>
      <td class="num" dir="auto">12</td>
      <td dir="auto"></td>
    </tr>
  </tbody>
</table>

Perguntas frequentes

É seguro colar o resultado no meu site?

Os dados não conseguem injetar marcação: todo valor, cabeçalho e a legenda passam por escape de HTML, e nenhum valor é colocado dentro de um atributo. As únicas tags da saída são os elementos de tabela que o próprio conversor escreve.

Por que a página diz lang="en"?

A página completa pega a etiqueta de idioma do idioma do site que você está usando. Se os seus dados estiverem em outro idioma, altere o atributo lang depois de baixar.

Dá para ordenar ou filtrar a tabela HTML?

A saída é uma tabela estática, sem scripts. Ordene ou filtre os dados antes com Ordenar CSV ou Filtrar CSV e depois converta.

Padrões e referências