Free · No signup · Browser-based

Convert HTML table to CSV.

Paste any HTML containing a <table>. We parse it with the browser's own DOM parser and produce a CSV. Handles header rows, multi-row layouts, and colspan/rowspan.

01 · How it works

Three steps, then done.

Sometimes a CSV is locked behind an HTML table — from a webpage, a database admin tool, a CMS, or copy-pasted markup. This converter takes the HTML, finds the first <table>, and turns its rows into CSV. Cell text is normalized (whitespace collapsed). colspan and rowspan are expanded so the output is a clean rectangular grid.

i. drop

Drop or paste

Drag a file, click to choose, or paste data directly into the input pane.

ii. detect

We read the shape

Types are inferred so the output is correctly formatted — not strings everywhere.

iii. use it

Copy, download, or dashboard

Copy the output, download it, or hit 'Build dashboard' to chart what's in the data.

02 · Why ours

Smart CSV conversion by default.

Free CSV converters often produce sloppy output — every value quoted, types lost, errors swallowed. Ours infers types where it can, fails loudly when it can't, and pairs the conversion with a one-click path to a dashboard.

  • 01

    Correct types

    Numbers, booleans and dates are detected as you import, so the CSV (and any dashboard built from it) treats them correctly — not everything as text.

  • 02

    Local-first

    Your file is parsed and converted in your browser — verify in DevTools → Network. Nothing is uploaded, logged, or stored.

  • 03

    Fails loudly

    Malformed input gives a clear, specific error instead of silently wrong output — so you can trust what comes back.

  • 04

    One click to a dashboard

    Every conversion keeps a tabular copy, so you can send the data straight to our visualization tool to chart it.

"Needed a conversion. Ended up with a dashboard. That's the pattern."
— the typical csvtodashboard arc
03 · FAQ

html table to csv questions.

Where do I get the HTML?
Right-click → View Source on the page, copy the <table> markup. Or use DevTools → Elements → right-click the table → 'Copy outerHTML'. Or save the whole page as an HTML file and drop it in.
It uses the first <table> in the markup. If you need a different one, paste just that table's markup.
Cells with colspan=2 produce the same content in 2 adjacent columns. Cells with rowspan=2 produce the same content in 2 stacked rows. Best-effort — for complex nested merges, double-check the output.
We use the cell's textContent — nested HTML is stripped, only the visible text is kept. Whitespace runs are collapsed to single spaces.