Skip to the tool
ViewCSV
Files stay on your device

Convert CSV to a Markdown table

orders.csv· SAMPLE DATA15 rows · 8 columns
Stops * _ ` [ ] < > # ~ in your data from turning into formatting.
| order\_id | customer        | city     | product          | quantity | unit\_price | order\_date | status   |
| --------- | --------------- | -------- | ---------------- | -------: | ----------: | ----------- | -------- |
| 001041    | Liam Garcia     | Austin   | Desk lamp        |        6 |      142.72 | 2026-01-09  | paid     |
| 001042    | Mary Clark      | Seattle  | Monitor 27"      |        5 |      210.76 | 2026-02-03  | shipped  |
| 001043    | Henry Taylor    | Denver   | Notebook A5      |        1 |      143.74 | 2026-03-25  | pending  |
| 001044    | Lucas Smith     | Chicago  | Monitor 27"      |        5 |      137.00 | 2026-04-25  | shipped  |
| 001045    | Noah Davis      | Seattle  | USB-C cable      |        7 |             | 2026-05-11  | refunded |
| 001046    | Emma Williams   | Portland | Notebook A5      |        6 |      166.44 | 2026-06-10  | pending  |
| 001047    |  Henry Taylor   | New York | Monitor 27"      |        7 |       57.53 | 2026-07-14  | pending  |
| 001048    | Lucas Jones     | Austin   | Desk lamp        |        7 |      194.19 | 2026-08-03  | pending  |
| 001049    | Olivia Williams | Austin   | USB-C cable      |        5 |      190.03 | 2026-09-07  | pending  |
| 001050    | Mary Wilson     | New York | Chair, ergonomic |        8 |       61.04 | 2026-01-15  | pending  |
| 001051    | Noah Williams   | Portland | Chair, ergonomic |        2 |       61.37 | 2026-02-25  | refunded |
| 001052    | Mia Smith       | Boston   | Monitor 27"      |        5 |      231.42 | 2026-03-09  | refunded |
| 001053    | Ava Garcia      | Boston   | USB-C cable      |        3 |      201.24 | 2026-04-05  | pending  |
| 001054    | Mary Clark      | Boston   | Desk lamp        |        5 |       35.49 | 2026-05-12  | pending  |
| 001043    | Henry Taylor    | Denver   | Notebook A5      |        1 |      143.74 | 2026-03-25  | pending  |

15 rows · 1 file

Open or paste a CSV file and a pipe table appears next to the options, ready for a README, an issue or a wiki page. A | inside a value is written as \| so it can never split a cell, line breaks inside a cell become <br>, and number columns are right-aligned. The file is converted in your browser and never uploaded.

How to convert CSV to Markdown

  1. Select Open file, drop a .csv, .tsv or .txt file on the tool, or choose Paste. The delimiter is detected; set it, the encoding or First row contains column names under Import settings if the guess is wrong.
  2. Pick the Column alignment and how Line breaks inside cells are written. The Markdown tab shows the exact text the download will contain.
  3. Select Copy to paste the table straight into GitHub, GitLab or your editor, or Download Markdown to save a .md file.

If your file has no header row, turn off First row contains column names: Markdown tables always need a header, so the columns are named Column 1, Column 2 and so on. To render the same data as a web table instead, use CSV to HTML.

Markdown table options

Numbers right, text defaultThe default. A column is right-aligned (---:) only if every non-empty value is a plain number; 00731 or 12 kg keep the column at the renderer’s default alignment.
Default (none), Left, Center, RightApply one alignment to every column: plain ---, :---, :---: or ---: in the delimiter row.
Keep as <br>A line break inside a cell becomes <br>, which GitHub and most renderers display as a new line within the cell. This is the default.
Replace with a spaceEach line break becomes one space, for renderers that strip HTML.
Escape Markdown charactersOn by default. *, _, [, ], <, >, #, ~ and the backtick get a backslash so a value such as *fast* or <b> shows as typed instead of becoming formatting or HTML. Turn it off only when the cells hold Markdown you want rendered.
Align the columns in the source textOn by default. Pads cells with spaces so the raw .md file reads as a grid. Wide characters such as Chinese, Japanese or Korean count as two columns. Turn it off for the smallest output; the rendered table looks the same.

Pipes, line breaks and leading zeros

  • Pipes and backslashes are always escaped (\|, \\), even with Escape Markdown characters off, because an unescaped | would start a new cell.
  • Quoted commas and line breaks are read per RFC 4180, so "Cable tidy, 3-pack" stays in one cell. Each value that contained a line break is counted in a notice above the preview.
  • Values are written as text: 00731 keeps its zeros and 34.90 keeps its trailing zero. Nothing is rounded or reformatted.
  • A blank header becomes Column 3 and a repeated one name (2), so every column has a distinct heading.
  • Markdown renderers trim spaces at the start and end of a cell, and a table cannot contain lists or paragraphs; keep such content in a separate document.

When the Markdown table renders wrongly

  • Text after the table joins its last row. A table ends only at a blank line or the start of another block, so leave an empty line after it.
  • All values are in one column. The delimiter was guessed wrong. Set Comma, Semicolon, Tab or Pipe under Import settings and open the file again.
  • **Backslashes appear before * or _ in the result.** That is the escaping at work in a renderer that ignores it. Turn off Escape Markdown characters if your data has no formatting characters to protect.
  • Line breaks show as a literal tag. The renderer does not allow HTML. Choose Replace with a space under Line breaks inside cells.

Limits and privacy

Files up to 25 MB, 100,000 rows or 2 million cells open with a live preview of the first 200 rows. Larger files are converted in streaming mode: the file is read twice in chunks (once to measure the columns and their widths, once to write), a notice says the download covers the whole file, and Copy is not offered. A single output file is capped at 4 GB.

The conversion runs in a background worker in this tab, so the page stays responsive and Cancel stops it. The CSV is never sent to a server. To check a large file before converting it, open it in the CSV viewer.

Example: a product list as a Markdown table

A product list with a leading-zero SKU, a pipe inside a name, a quoted comma and a two-line note, converted with the default settings. price is right-aligned because every value is a number; sku is not, because 00731 is kept as text.

CSV
sku,name,price,note
00731,"Desk lamp | brass",34.90,"Ships in 2 days
from Leeds"
00732,"Cable tidy, 3-pack white",4.50,Back-ordered until 14 March 2025
00733,USB-C hub,129.00,
Markdown
| sku   | name                     |  price | note                             |
| ----- | ------------------------ | -----: | -------------------------------- |
| 00731 | Desk lamp \| brass       |  34.90 | Ships in 2 days<br>from Leeds    |
| 00732 | Cable tidy, 3-pack white |   4.50 | Back-ordered until 14 March 2025 |
| 00733 | USB-C hub                | 129.00 |                                  |

Questions and answers

Does the output work on GitHub?

Yes. It is a GitHub Flavored Markdown pipe table: a header row, a delimiter row with optional alignment colons, and one line per CSV row. GitLab, Obsidian and most static-site generators read the same syntax.

Why do I see `\|` in the source?

A plain | ends a cell in a Markdown table. The backslash tells the renderer to show the pipe as text, so Desk lamp | brass stays in one cell.

Can I convert a Markdown table back to CSV?

Not on this page. It converts CSV and TSV into Markdown only.

Standards and references