CSV to Markdown Table
Paste CSV (or open a file) and get a GFM table ready for a README, with pipe escaping done for you.
Why pipe escaping is the whole problem
A Markdown table cell is delimited by |, and there is no escaping mechanism in
the specification — GitHub only honours a literal backslash before the pipe. So a CSV cell
containing a|b silently splits into two columns, and a cell containing a line
break ends the row. Both are handled here: pipes become \| and embedded newlines
become <br>.
Rows shorter than the header are padded with empty cells, and rows that are longer have the extra cells dropped, so the output table never has a ragged column count.
Alignment
Alignment lives in the separator row, not in the cells:
| :--- | is left, | :---: | is centre and | ---: | is
right. Leaving it on None emits plain ---, which most renderers
treat as left-aligned anyway — but a great many linters prefer it explicit.
Reading the source, not just the render
A Markdown table stays in your repository forever, so Pad columns rewrites the source with the pipes lined up. GitHub ignores the extra spaces, and the diff you see in a pull request becomes readable instead of a wall of ragged pipes.
Edge cases worth knowing
- A missing header row. With First row is header off, the first row becomes a data row and the table gets no header — useful for tables that continue an earlier one on the same page.
- Quoted fields containing the delimiter are parsed correctly, so
"New York, NY"stays a single cell. - A UTF-8 BOM — the invisible character Excel writes at the start of a file — is detected and stripped, otherwise the first column name would carry it into the header.
- Pipes inside the CSV itself. A pipe-delimited file is supported: choose
|as the delimiter and the pipes in the cells are still escaped on output.
FAQ
Does this work with the table syntax used by other Markdown flavours?
Yes. The output is GitHub-flavoured Markdown, which is also what CommonMark extensions, GitLab, Bitbucket and most static site generators accept.
What if my cells contain HTML?
It is escaped in the preview so nothing is injected into this page, but the Markdown source keeps it verbatim — many renderers allow a limited set of inline HTML tags.
Is there a size limit?
No hard limit. Everything is parsed in memory in this tab, so a few megabytes of CSV is fine.
Is my CSV uploaded?
No. Parsing and conversion happen entirely in your browser.