Utilo

CSV to Markdown table Converter – Free, Online, Private

Render a CSV file as a GitHub-flavored Markdown table, with a header separator row and escaped pipes.

Input
Output

How to convert CSV to Markdown table

  1. Paste CSV, header first.
  2. The first record becomes the header cells and the rest become body rows.
  3. Copy the Markdown into a README, a pull request, or a doc page.

Table shape

GitHub-flavored Markdown tables need a header, a separator line of dashes, and body rows, with pipes between cells. This page uses the first CSV record as the header and every later record as a body row. The separator is a plain --- per column, not an alignment colon. A short row is padded with empty cells so the pipes still line up. A pipe character inside a cell is escaped as \| so it does not split the column. Newlines inside a quoted CSV field are flattened to spaces, because a Markdown table row cannot contain a raw line break.

What is preserved

Cell text is not retyped as numbers. 42 stays the characters 42. Boolean words stay words. Leading and trailing spaces that were inside quotes survive. Spaces that were only separators between CSV fields do not. The output is monospaced-friendly but not padded to equal visual width, because proportional fonts and East Asian characters make padding a lie. Formatters in your editor can align it if you care. HTML in a cell is not escaped beyond the pipe, so a literal <br> remains characters, which is what you want in a code block and what you should review in a rendered doc.

Worked example

The people sample becomes a four-column table with id, name, active and city, and two body rows. Paste it under a heading in a README and GitHub will render it. If the CSV has one column and no comma, you still get a one-column table, which is valid. A file with only a header and no data rows produces a header and a separator and no body, which is a legal empty table. Add rows in the CSV rather than in the Markdown if you are going to regenerate.

When to stop and use HTML

Markdown tables cannot colspan, rowspan, or hold a list inside a cell. A complex sheet should become HTML, or several simple tables. This page does not merge cells. It also does not read xlsx. Export the sheet to CSV first. The render is local, so a table of unreleased figures can go into a private doc without a conversion API seeing it.

Frequently asked questions

Is the separator row aligned?

It uses --- for every column, which most renderers accept. It does not emit :---: alignment markers.

What if a cell contains a pipe?

The pipe is escaped so the column count stays stable.

Can I convert Markdown back to CSV?

Not on this page. The HTML to Markdown and Markdown to HTML pages cover the other direction for documents, not for tables specifically.

Is the CSV uploaded?

No. The table is rendered in the browser.