HTML Table Generator
Paste CSV or tab-separated data to build a semantic HTML table, with a caption and optional column headers.
Result
3 columns ยท 2 body rows
<table>
<caption>Product price list</caption>
<thead>
<tr>
<th scope="col">Product</th>
<th scope="col">Price</th>
<th scope="col">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Coffee, dark roast</td>
<td>12.50</td>
<td>Freshly roasted</td>
</tr>
<tr>
<td>Tea</td>
<td>8.00</td>
<td>Loose leaf & organic</td>
</tr>
</tbody>
</table> Build a table with column headers and a caption
- Paste CSV from a file or tab-separated cells copied from a spreadsheet, and choose the matching format.
- Enable column headers if the first row contains labels. Add a short caption describing the table.
- Review the preview, then copy or download the HTML for your page.
Quoted fields work as you expect
A comma inside a quoted CSV field stays inside that cell. For example, "Coffee, dark roast",12.50 creates two cells. Write a literal
quote as two quotes inside a quoted field: "She said ""hello""". Quoted fields can span multiple lines.
The parser accepts LF, CRLF, and CR line endings, requires equally sized
rows, and reports malformed quoting.
Semantic, escaped output
Headers use <th scope="col"> inside <thead>; data rows use <tbody>. Cell
contents and captions are escaped, so pasted HTML displays as text. The
isolated preview also blocks scripts and outside resources. Preview
styling is for readability; the exported HTML has no inline styles.
Limits
Input is limited to 100,000 characters, 1,000 total rows, 100 columns, and 10,000 cells. Captions allow 300 characters. Every row must have the same number of cells; blank lines count as one empty cell. A final line ending does not add a row. Spreadsheet formulas stay literal text, and this tool does not evaluate them. For complex grouped headers or merged cells, adapt the exported markup manually.