csv → html table · thead / tbody · escaped cells · live

Render CSV as an HTML table

Wrap CSV rows in a semantic HTML table with thead and tbody. Cell values are entity-escaped so the markup is safe to paste into a CMS or static-site post.

CSV → HTML Table
Input
60 B
4 lines
Output
271 B
10 lines
Status
ready
live
Ratio
4.52×
out/in
input · csv
output · html
<table>
  <thead>
    <tr><th>name</th><th>age</th><th>city</th></tr>
  </thead>
  <tbody>
    <tr><td>Alice</td><td>30</td><td>Boston</td></tr>
    <tr><td>Bob</td><td>25</td><td>Seattle</td></tr>
    <tr><td>Carol</td><td>40</td><td>Austin</td></tr>
  </tbody>
</table>
Quick Start

How the markup is built

The first CSV row becomes a thead with th cells; each subsequent row becomes a tr inside tbody. All cell text is HTML-escaped so user data can't break out of the table.

  1. 01

    Paste CSV

    Standard RFC 4180 — quoted fields and embedded commas are handled.

    Parsing is strict-but-tolerant — comments and trailing commas are accepted on input where the source format historically permits them; output stays canonical.

    inputstricttolerantliveparse
    in · sourcecsv · live
    name,age
    Alice,30
    loaded · parsedtarget · ready
  2. 02

    Head + body split

    Row 0 emits thead with th; rows 1+ emit tbody with td.

    Conversion preserves type information where the target supports it (numbers stay numeric, booleans stay boolean) so the destination parser never has to re-coerce.

    semanticstype-preservinglosslesslivememoised
    thead · optionstbody · live
    <thead><tr><th>name</th></tr></thead>
    options applied · liveround-trip
  3. 03

    Cells escaped

    Ampersand, less-than and greater-than are converted to their HTML entities.

    Re-encoding is idempotent: running output back through the same converter produces the same bytes, which keeps round-trips git-friendly.

    safeidempotentround-tripdiff-cleandeterministic
    esc · convertedentities · ready
    A & B → A &amp; B
    converted · livediff-clean
  4. 04

    Copy or download

    Paste straight into a blog post, docs page or CMS editor.

    Copy writes via navigator.clipboard.writeText; downloads use the target’s native MIME so editors apply the right syntax highlighting on open.

    exportclipboardtarget MIMEblobclient-side
    ✓ · copiedready · done
    ✓ Copied
    shipped · ready to shipsuccess
Pro tips

Converting between formats, safely

Pick the strictest source format

Lossy formats hide bugs. Choose JSON or YAML as your source-of-truth, convert downstream as needed.

Round-trip in CI

If your converter is idempotent, your CI can verify A → B → A equals the original. Catches subtle data loss.

Numbers vs strings differ

YAML/TOML have a number type; CSV doesn’t. Quote IDs in CSV to keep leading-zero values intact.

Watch character encoding

Source format may be Latin-1 / Windows-1252; target should be UTF-8. Convert encoding before structure.

Preserve comments where you can

YAML and TOML support comments. Don’t silently drop them — they often encode intent.

Schema-aware beats blind

Use a schema to guide conversion. Field types, required-ness, and defaults survive better with structure.

Use Cases

When to render CSV as HTML

Docs, blogs, internal dashboards.

Blog posts

Drop a CSV export into a Markdown or MDX post. Type information survives: numbers stay numeric, booleans stay boolean, strings stay strings. The destination parser doesn't have to re-coerce, which avoids the &quot;'true' becomes &quot;true&quot;&quot; bug class.

round-trip safe

Static sites

Render structured data without a JS table library. Run output back through the inverse converter to verify idempotent round-trips in CI. A → B → A should produce byte-identical input — if it doesn't, you've found data loss.

type-preserving

Internal pages

Spin up a quick reference table from a spreadsheet. Comments and metadata survive where the target format supports them (YAML, TOML, HCL). The tool doesn't silently drop intent-encoded annotations, which keeps your config self-documenting.

schema-aware

Email reports

Plain HTML tables render reliably in email clients. Pair with a schema (JSON Schema, OpenAPI, Zod, Pydantic) to catch shape drift on either side. Catch breaking changes at conversion time rather than at runtime in production.

lossless

Status pages

Publish a daily snapshot from a CSV-shaped log. Output respects target-format conventions: quoting in CSV, indent in YAML, brackets in JSON. Existing parsers don't need patches, and the result drops into legacy pipelines unchanged.

diff-clean

Government data

Expose open CSV datasets as accessible HTML. Encoding-aware: handles UTF-8 vs UTF-16 vs Latin-1 / Windows-1252 transparently. The character-set surprise that breaks &quot;works on my machine&quot; doesn't apply here.

spec-grade
FAQ

Frequently asked questions

The output is minimal markup — wire in your stylesheet or Tailwind classes after pasting.
Yes — they emit as empty td elements so the column count stays correct.
Add the caption manually after the opening table tag.
Yes — & < > are converted to entities to prevent malformed HTML or injection.
No. The conversion is entirely local.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!