Skip to content

CSV to HTML Table

Paste CSV and get a tidy, accessible HTML table to drop into a page, an email template or a CMS, with a live preview next to the code.

Your data is converted by your browser. Nothing is uploaded, saved or sent anywhere.

Comma · 3 columns · 3 data rows

Preview

Team members
NameRoleNote
AdaEngineerLikes "quotes" & <tags>
GraceAdmiralFirst line Second line
LinusMaintainerKernel

HTML code

<table class="table">
  <caption>Team members</caption>
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Role</th>
      <th scope="col">Note</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ada</td>
      <td>Engineer</td>
      <td>Likes &quot;quotes&quot; &amp; &lt;tags&gt;</td>
    </tr>
    <tr>
      <td>Grace</td>
      <td>Admiral</td>
      <td>First line<br>Second line</td>
    </tr>
    <tr>
      <td>Linus</td>
      <td>Maintainer</td>
      <td>Kernel</td>
    </tr>
  </tbody>
</table>

How it works

  1. Paste your CSV or open a file from your device. The delimiter is detected automatically.
  2. Choose whether the first row is a header, add a caption, and type any CSS classes you want on the table.
  3. Check the live preview.
  4. Press Copy to take the HTML code.

What people use it for

  • Blog posts and docs

    Paste a spreadsheet range into a CMS that only accepts HTML.

  • Email and landing pages

    Build a pricing or schedule table with the classes your stylesheet already uses.

  • Accessible data tables

    Get header cells with scope attributes and a caption, so screen readers announce each cell correctly.

Questions

Is the output safe to paste into a page?
Yes. Every cell, header and caption is escaped: &, <, >, double and single quotes become entities, so a cell containing <script> shows as text and can never add a tag. Line breaks inside a cell become <br>. CSS class names keep only letters, digits, hyphens and underscores.
What makes the table accessible?
Headers use <th scope="col"> inside <thead>, data cells use <td>, and the optional caption gives the table a name. You can also make the first column row headers (<th scope="row">). Wrap the table in a scrollable container on narrow screens.
What about large files?
The first 5,000 data rows are converted, and the preview shows the first 50. Nothing is uploaded; the conversion runs in your browser.