Ir a la herramienta
ViewCSV
Sin subir archivos

Convertir CSV en una tabla HTML

orders.csv· DATOS DE EJEMPLO15 filas · 8 columnas
Salida
Bordes y números alineados a la derecha; si solo exportas la tabla, se añaden nombres de clase en su 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">Martina Sánchez</td>
      <td dir="auto">Barcelona</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">231.53</td>
      <td dir="auto">2026-01-08</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001042</td>
      <td dir="auto">Mateo Martínez</td>
      <td dir="auto">Bilbao</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">8</td>
      <td class="num" dir="auto">143.73</td>
      <td dir="auto">2026-02-08</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Valeria Gómez</td>
      <td dir="auto">Málaga</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">87.50</td>
      <td dir="auto">2026-03-25</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001044</td>
      <td dir="auto">Lucía Sánchez</td>
      <td dir="auto">Barcelona</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">91.58</td>
      <td dir="auto">2026-04-08</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001045</td>
      <td dir="auto">Valeria López</td>
      <td dir="auto">Málaga</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto"></td>
      <td dir="auto">2026-05-05</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001046</td>
      <td dir="auto">Martina López</td>
      <td dir="auto">Madrid</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">8</td>
      <td class="num" dir="auto">79.06</td>
      <td dir="auto">2026-06-08</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001047</td>
      <td dir="auto"> Sofía Rodríguez </td>
      <td dir="auto">Zaragoza</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">5</td>
      <td class="num" dir="auto">64.50</td>
      <td dir="auto">2026-07-23</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001048</td>
      <td dir="auto">Daniel López</td>
      <td dir="auto">Sevilla</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">105.65</td>
      <td dir="auto">2026-08-14</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001049</td>
      <td dir="auto">Pablo Gómez</td>
      <td dir="auto">Málaga</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">57.68</td>
      <td dir="auto">2026-09-09</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001050</td>
      <td dir="auto">Pablo García</td>
      <td dir="auto">Barcelona</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">206.44</td>
      <td dir="auto">2026-01-14</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001051</td>
      <td dir="auto">Mateo Pérez</td>
      <td dir="auto">Barcelona</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">5</td>
      <td class="num" dir="auto">204.15</td>
      <td dir="auto">2026-02-22</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001052</td>
      <td dir="auto">Leo Gómez</td>
      <td dir="auto">Zaragoza</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">71.39</td>
      <td dir="auto">2026-03-02</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001053</td>
      <td dir="auto">Hugo López</td>
      <td dir="auto">Barcelona</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">2</td>
      <td class="num" dir="auto">23.63</td>
      <td dir="auto">2026-04-12</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001054</td>
      <td dir="auto">Pablo Rodríguez</td>
      <td dir="auto">Zaragoza</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">11.07</td>
      <td dir="auto">2026-05-08</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Valeria Gómez</td>
      <td dir="auto">Málaga</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">6</td>
      <td class="num" dir="auto">87.50</td>
      <td dir="auto">2026-03-25</td>
      <td dir="auto">paid</td>
    </tr>
  </tbody>
</table>

15 filas · 1 archivo

Abre o pega un archivo CSV y obtendrás una <table> con un <thead> de encabezados <th scope="col"> y un <tr> por fila, o bien una página HTML completa que se abre directamente. Todos los valores se escapan para HTML, así que un <script> o un & en tus datos se muestran como texto y nunca se convierten en código. La conversión se hace en tu navegador y el archivo nunca se sube.

Cómo convertir CSV a HTML

  1. Pulsa Abrir archivo, suelta un archivo .csv, .tsv o .txt sobre la herramienta o elige Pegar. Si las columnas no se ven bien, ajusta el delimitador o la codificación en Configuración de importación.
  2. En Salida, elige Solo la tabla para pegar el código en una página existente o en un CMS, o Página HTML completa para obtener un archivo independiente.
  3. Añade un Título de la tabla (opcional), decide el estilo y los saltos de línea, y pulsa Copiar o «Descargar HTML».

Para un README o una wiki, una tabla Markdown suele ser más fácil de editar; para un archivo imprimible, usa CSV a PDF.

Qué hace cada opción

Solo la tablaEs la opción predeterminada. Solo el elemento <table>, listo para pegar en una página, una plantilla de correo o un bloque HTML de un CMS.
Página HTML completaAñade <!doctype html>, <html lang="en">, <meta charset="utf-8"> y un <title> (el título de la tabla o, si no hay, Table), para que el archivo se abra correctamente en cualquier navegador.
Título de la tabla (opcional)Escribe un <caption> como primer hijo de la tabla: es el nombre accesible que los lectores de pantalla anuncian para ella.
Añadir un estilo sencilloActivada de forma predeterminada. En una página completa incrusta una pequeña hoja de estilos: bordes, fila de encabezados sombreada y números alineados a la derecha. Con Solo la tabla añade en su lugar class="csv-table" a la tabla y class="num" a las celdas numéricas, para que el aspecto lo decida tu propio CSS.
Mostrar los saltos de línea dentro de las celdasActivada de forma predeterminada. Un salto de línea dentro de un valor se convierte en <br>. Si la desactivas, el salto se queda en el código fuente y el navegador lo muestra como un espacio.

Cómo se tratan los datos difíciles

  • &, <, >, " y ' se escriben como &amp;, &lt;, &gt;, &quot; y &#39; en todas las celdas, encabezados y en el título. Las etiquetas de tus datos aparecen como texto, lo que también significa que el HTML que ya hubiera en el CSV no se interpreta.
  • Cada celda lleva dir="auto", así que los valores en árabe o hebreo se muestran de derecha a izquierda aunque la página sea de izquierda a derecha.
  • Una columna solo se considera numérica si todos sus valores no vacíos son números simples; una columna de identificadores como 0042 se deja como texto y no se alinea a la derecha. Los valores en sí nunca se reformatean.
  • Las comas, comillas y saltos de línea entre comillas se leen según RFC 4180. Un encabezado en blanco pasa a ser Column 3 y uno repetido, name (2).
  • La salida está en UTF-8. Una página completa lo declara con <meta charset="utf-8">; si pegas Solo la tabla en otra página, esa página también tiene que estar en UTF-8.

Solución de problemas

  • Las letras con tilde aparecen como é en el archivo de origen: el CSV no está en UTF-8. Elige su codificación (a menudo Windows-1252 en exportaciones antiguas de Excel) en la configuración de importación y vuelve a abrirlo.
  • Las etiquetas de mis datos se ven como texto: el HTML de tus celdas se escapó a propósito para que no pueda ejecutarse como código. Si confías en el contenido y quieres que se interprete, edita el resultado.
  • La tabla pegada no tiene bordes: Solo la tabla añade nombres de clase (con el estilo activado), no CSS. Da estilo a .csv-table y td.num en la hoja de estilos de tu sitio, o elige Página HTML completa para tener los estilos incluidos.
  • Todos los valores están en una sola columna: el delimitador se detectó mal. Indícalo en la configuración de importación.

Límites y privacidad

Los archivos de hasta 25 MB, 100 000 filas o 2 millones de celdas se abren con vista previa en directo de las primeras 200 filas. Los más grandes se convierten leyéndolos por partes (en streaming): el archivo se lee dos veces (una para medir las columnas y ver cuáles son numéricas, otra para escribir), un aviso indica que la descarga incluye el archivo completo y no se ofrece Copiar. Cada archivo de salida tiene un máximo de 4 GB.

La conversión se ejecuta en un proceso en segundo plano dentro de esta pestaña, así que la página sigue respondiendo y Cancelar la detiene. El CSV nunca se envía a un servidor.

Ejemplo

Una lista de pedidos con un «&», un apóstrofo, comillas y HTML dentro de un comentario de dos líneas, convertida con la configuración predeterminada (Solo la tabla, con estilo y saltos de línea visibles). En qty todos los valores son números, así que sus celdas reciben 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>

Preguntas frecuentes

¿Es seguro pegar el resultado en mi sitio web?

Los datos no pueden inyectar código: cada valor, cada encabezado y el título se escapan para HTML, y ningún valor se coloca nunca dentro de un atributo. Las únicas etiquetas del resultado son los elementos de tabla que escribe el propio conversor.

¿Por qué la página dice lang="en"?

Una página completa toma su etiqueta de idioma del idioma del sitio que estás usando. Si tus datos están en otro idioma, cambia el atributo lang después de descargarla.

¿Se puede ordenar o filtrar la tabla HTML?

El resultado es una tabla estática sin scripts. Ordena o filtra primero los datos con Ordenar CSV o Filtrar filas de un CSV y luego conviértelos.

Normas y referencias