What this tool does
Paste CSV, tab-separated data (straight from a spreadsheet copy), or even an existing markdown table you want realigned, and get back a properly padded GFM table — header, delimiter row, and body all column-aligned so it's as readable in a raw .md file as it is rendered.
Why alignment matters even though renderers don't require it
GitHub-Flavored Markdown doesn't care whether a table's columns are padded to line up — a parser splits on | and trims whitespace either way, so |a|b| and a fully padded table render identically. The padding is entirely for whoever reads the raw source: a hand-edited table that isn't re-aligned after adding one longer row becomes unreadable as plain text, even though it still renders fine.
Pasting an existing table re-aligns it instead of duplicating it
If the input already looks like a markdown table — a header row, a delimiter row of ----style cells, and a body — the delimiter row is detected and dropped before rebuilding, rather than being treated as a literal data row. That makes this tool double as a formatter for a table that's drifted out of alignment after edits, not just a CSV-to-table converter.
A literal pipe or line break in a cell would otherwise break the table
Both are handled automatically: a literal | inside a cell is escaped to \| so it can't be misread as a column boundary, and a line break inside a cell is converted to <br> — GFM table rows can't contain a real newline, since the parser treats every physical line as exactly one row.
FAQ
What happens if a row has the wrong number of cells?
The first row sets the column count. A shorter row is padded with empty cells; a longer row is truncated — rather than letting one ragged row silently add an unlabeled column to the whole table.
Does it handle CSV fields with a quoted, embedded comma?
No — delimiters split on every occurrence, so a quoted "Smith, John" field would be read as two cells. For data like that, copy it as tab-separated straight from a spreadsheet instead (the Tab delimiter), which sidesteps the issue entirely.
Is my data uploaded anywhere?
No — everything happens entirely in your browser. Nothing is sent to a server.