The Table to Markdown converter turns spreadsheet data or an HTML table into a clean, GitHub-flavored Markdown table in one paste. It is built for the moment you have data in one place — a spreadsheet, a CSV export, a table copied from a web page — and you need it as Markdown for a README, a GitHub issue, a pull-request description, documentation, a wiki, or a note-taking app. Instead of hand-typing pipes and dashes, you paste, tweak a couple of options, and copy the result.
Three input formats are supported and the tool figures out which one you pasted. TSV
(tab-separated values) is what lands on your clipboard when you copy a range of cells from
Excel or Google Sheets, so a straight copy-paste just works. CSV is the universal
spreadsheet and database export format, parsed with full RFC 4180 quoting rules so embedded
commas and quotes survive. And a raw HTML table — the table, tr, th and td markup
you get when copying a table out of a web page or CMS — is parsed too, with the option to strip
inline formatting tags down to plain text.
How it works
When you paste, the converter inspects the text. If it sees table markup it parses the HTML table structure; otherwise it compares tab and comma counts on the first line to choose between TSV and CSV. Delimited input is parsed with papaparse, which handles quoted fields, doubled quotes and ragged rows; HTML input is parsed with the browser’s own DOM parser so the cell structure is read exactly as a browser would see it. Ragged rows are padded to a common width so the output is always rectangular.
Rendering then builds three Markdown lines per table: a header row, a separator row carrying the alignment markers, and one row per data line. Pipe characters inside cells are escaped, newlines are flattened to spaces, and — unless you choose compact mode — every column is padded so the raw Markdown lines up neatly in a plain-text editor. A live rendered preview shows exactly how the table will look once a Markdown engine processes it.
Example
Copy this range from a spreadsheet (it arrives as TSV):
Product Q1 Q2 Status then a row GeraHome 1240 1890 live
With the first row treated as the header and the numeric columns right-aligned, you get:
| Product | Q1 | Q2 | Status |
|---|---|---|---|
| GeraHome | 1240 | 1890 | live |
| GeraClinic | 860 | 1130 | live |
The same paste works for a CSV export or an HTML table copied from a web page — only the parser changes, the Markdown you copy is identical. Everything runs in your browser, so none of your data leaves the page.