Direct naar de tool
ViewCSV
Niets wordt geüpload

CSV omzetten naar een HTML-tabel

orders.csv· VOORBEELDGEGEVENS15 rijen · 8 kolommen
Resultaat
Randen en rechts uitgelijnde getallen; bij alleen de tabel krijg je in plaats daarvan klassenamen.
<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">Julia Jansen</td>
      <td dir="auto">Den Haag</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">19.63</td>
      <td dir="auto">2026-01-16</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001042</td>
      <td dir="auto">Finn Jansen</td>
      <td dir="auto">Groningen</td>
      <td dir="auto">Coffee beans 1kg</td>
      <td class="num" dir="auto">4</td>
      <td class="num" dir="auto">61.32</td>
      <td dir="auto">2026-02-07</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Noah de Boer</td>
      <td dir="auto">Utrecht</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">5.83</td>
      <td dir="auto">2026-03-18</td>
      <td dir="auto">paid</td>
    </tr>
    <tr>
      <td dir="auto">001044</td>
      <td dir="auto">Emma Meijer</td>
      <td dir="auto">Amsterdam</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">74.88</td>
      <td dir="auto">2026-04-22</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001045</td>
      <td dir="auto">Julia Janssen</td>
      <td dir="auto">Utrecht</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">5</td>
      <td class="num" dir="auto"></td>
      <td dir="auto">2026-05-02</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001046</td>
      <td dir="auto">Julia Bakker</td>
      <td dir="auto">Gent</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">8</td>
      <td class="num" dir="auto">113.31</td>
      <td dir="auto">2026-06-17</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001047</td>
      <td dir="auto"> Daan van Dijk </td>
      <td dir="auto">Den Haag</td>
      <td dir="auto">USB-C cable</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">48.13</td>
      <td dir="auto">2026-07-06</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001048</td>
      <td dir="auto">Julia van den Berg</td>
      <td dir="auto">Groningen</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">73.68</td>
      <td dir="auto">2026-08-07</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001049</td>
      <td dir="auto">Julia van Dijk</td>
      <td dir="auto">Eindhoven</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">102.72</td>
      <td dir="auto">2026-09-01</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001050</td>
      <td dir="auto">Finn de Jong</td>
      <td dir="auto">Antwerpen</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">3</td>
      <td class="num" dir="auto">137.32</td>
      <td dir="auto">2026-01-04</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001051</td>
      <td dir="auto">Tess Janssen</td>
      <td dir="auto">Den Haag</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">9</td>
      <td class="num" dir="auto">125.22</td>
      <td dir="auto">2026-02-12</td>
      <td dir="auto">refunded</td>
    </tr>
    <tr>
      <td dir="auto">001052</td>
      <td dir="auto">Julia de Jong</td>
      <td dir="auto">Groningen</td>
      <td dir="auto">Desk lamp</td>
      <td class="num" dir="auto">5</td>
      <td class="num" dir="auto">62.89</td>
      <td dir="auto">2026-03-04</td>
      <td dir="auto">shipped</td>
    </tr>
    <tr>
      <td dir="auto">001053</td>
      <td dir="auto">Zoë Meijer</td>
      <td dir="auto">Rotterdam</td>
      <td dir="auto">Notebook A5</td>
      <td class="num" dir="auto">1</td>
      <td class="num" dir="auto">127.86</td>
      <td dir="auto">2026-04-09</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001054</td>
      <td dir="auto">Sophie Visser</td>
      <td dir="auto">Antwerpen</td>
      <td dir="auto">Chair, ergonomic</td>
      <td class="num" dir="auto">2</td>
      <td class="num" dir="auto">99.73</td>
      <td dir="auto">2026-05-13</td>
      <td dir="auto">pending</td>
    </tr>
    <tr>
      <td dir="auto">001043</td>
      <td dir="auto">Noah de Boer</td>
      <td dir="auto">Utrecht</td>
      <td dir="auto">Monitor 27&quot;</td>
      <td class="num" dir="auto">7</td>
      <td class="num" dir="auto">5.83</td>
      <td dir="auto">2026-03-18</td>
      <td dir="auto">paid</td>
    </tr>
  </tbody>
</table>

15 rijen · 1 bestand

Open of plak een CSV-bestand en je krijgt een <table> met een <thead> met <th scope="col">-koppen en één <tr> per rij, of een volledige HTML-pagina die je direct kunt openen. Elke waarde wordt HTML-geëscapet, dus <script> of & in je gegevens verschijnt als tekst en wordt nooit markup. Het bestand wordt in je browser omgezet en nooit geüpload.

Zo zet je CSV om naar HTML

  1. Kies Bestand openen, sleep een .csv-, .tsv- of .txt-bestand naar de tool, of kies Plakken. Zien de kolommen er niet goed uit, pas dan het scheidingsteken of de codering aan onder Importinstellingen.
  2. Kies bij Resultaat voor Alleen de tabel om de markup in een bestaande pagina of cms te plakken, of voor Volledige HTML-pagina voor een zelfstandig bestand.
  3. Voeg een Bijschrift (optioneel) toe, kies de opmaak en wat er met regeleinden gebeurt, en kies daarna Kopiëren of ‘HTML downloaden’.

Voor een README of wiki is een Markdown-tabel meestal makkelijker te bewerken; voor een afdrukbaar bestand gebruik je CSV naar PDF.

Wat elke optie doet

Alleen de tabelDe standaard. Alleen het element <table>, klaar om te plakken in een pagina, een e-mailsjabloon of een HTML-blok in een cms.
Volledige HTML-paginaVoegt <!doctype html>, <html lang="en"> (op deze Nederlandse pagina lang="nl"), <meta charset="utf-8"> en een <title> toe (het bijschrift, of Table als er geen is), zodat het bestand in elke browser goed opent.
Bijschrift (optioneel)Schrijft een <caption> als eerste element in de tabel: de toegankelijke naam die schermlezers voor de tabel voorlezen.
Eenvoudige opmaak toevoegenStandaard aan. Op een volledige pagina wordt een klein stylesheet ingesloten: randen, een gearceerde kopregel en rechts uitgelijnde getallen. Met Alleen de tabel krijgt de tabel in plaats daarvan class="csv-table" en krijgen cellen met getallen class="num", zodat je eigen CSS het uiterlijk bepaalt.
Regeleinden binnen cellen tonenStandaard aan. Een regeleinde binnen een waarde wordt <br>. Staat het uit, dan blijft het regeleinde in de broncode staan, waar browsers het als spatie tonen.

Hoe lastige gegevens worden verwerkt

  • &, <, >, " en ' worden in elke cel, kolomkop en elk bijschrift geschreven als &amp;, &lt;, &gt;, &quot; en &#39;. Tags in je gegevens verschijnen als tekst; HTML die al in de CSV staat, wordt dus ook niet weergegeven.
  • Elke cel krijgt dir="auto", zodat Arabische of Hebreeuwse waarden van rechts naar links worden getoond, ook binnen een pagina die van links naar rechts loopt.
  • Een kolom telt alleen als numeriek als elke niet-lege waarde een gewoon getal is; een kolom met nummers zoals 0042 blijft tekst en wordt niet rechts uitgelijnd. De waarden zelf worden nooit anders opgemaakt.
  • Komma’s, aanhalingstekens en regeleinden tussen aanhalingstekens worden gelezen volgens RFC 4180. Een lege kolomnaam wordt Column 3 en een dubbele name (2).
  • Het resultaat is UTF-8. Een volledige pagina geeft dat aan met <meta charset="utf-8">. Plak je Alleen de tabel in een andere pagina, dan moet die pagina ook UTF-8 zijn.

Problemen oplossen

  • Letters met accenten zien er in het bronbestand uit als é. De CSV is geen UTF-8. Kies de codering onder Importinstellingen (bij oudere Excel-exports vaak Windows-1252) en open het bestand opnieuw.
  • Tags uit mijn gegevens verschijnen als tekst. De HTML in je cellen is bewust geëscapet, zodat hij niet als markup kan worden uitgevoerd. Bewerk het resultaat als je de inhoud vertrouwt en hem weergegeven wilt hebben.
  • De geplakte tabel heeft geen randen. Alleen de tabel voegt klassenamen toe (als opmaak aanstaat), geen CSS. Geef .csv-table en td.num opmaak in het stylesheet van je site, of kies Volledige HTML-pagina voor de ingebouwde opmaak.
  • Eén kolom bevat alle waarden. Het scheidingsteken is verkeerd geraden; stel het in onder Importinstellingen.

Grenzen en privacy

Bestanden tot 25 MB, 100.000 rijen of 2 miljoen cellen openen met een live voorbeeld van de eerste 200 rijen. Grotere bestanden worden in delen omgezet: het bestand wordt twee keer in stukken gelezen (eerst om de kolommen te meten en te bepalen welke numeriek zijn, dan om te schrijven), een melding zegt dat de download het hele bestand bevat, en Kopiëren wordt niet aangeboden. Eén uitvoerbestand is maximaal 4 GB.

Het omzetten gebeurt in een achtergrondproces in dit tabblad, zodat de pagina blijft reageren; met Annuleren stop je het. Het CSV-bestand wordt nooit naar een server gestuurd.

Voorbeeld

Een orderlijst met een ampersand, een apostrof, aanhalingstekens en HTML in een opmerking van twee regels, omgezet met de standaardinstellingen (Alleen de tabel, met opmaak, regeleinden getoond). qty bevat alleen getallen, dus die cellen krijgen 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>

Vragen en antwoorden

Kan ik het resultaat veilig in mijn website plakken?

De gegevens kunnen geen markup injecteren: elke waarde, elke kolomkop en het bijschrift worden HTML-geëscapet, en een waarde komt nooit in een attribuut terecht. De enige tags in het resultaat zijn de tabelelementen die de converter zelf schrijft.

Waarom staat er lang="nl" in de pagina?

Een volledige pagina krijgt de taalcode van de site die je gebruikt: hier lang="nl", op de Engelse site lang="en". Pas het attribuut lang na het downloaden aan als je gegevens in een andere taal zijn.

Kan ik de HTML-tabel sorteren of filteren?

Het resultaat is een statische tabel zonder scripts. Sorteer of filter de gegevens eerst met CSV sorteren of CSV-rijen filteren, en zet ze daarna om.

Standaarden en bronnen