Skip to content

CSV to Markdown Table Converter

Paste CSV or upload a .csv file and get a Markdown table instantly, with quoted commas and line breaks handled.

Paste CSV or upload a file

Sample data shown — paste or drop your own to replace it.

Converts as you type. Also accepts TSV, Excel cells, HTML, JSON and Markdown.
Output
| ID  | Product Name            | Category    | Price   | Status    |
| --- | ----------------------- | ----------- | ------- | --------- |
| 1   | Mechanical Keyboard Pro | Hardware    | $129.99 | In Stock  |
| 2   | USB-C Multiport Hub     | Accessories | $45.00  | In Stock  |
| 3   | Ergonomic Mouse         | Hardware    | $79.50  | Low Stock |
| 4   | UltraWide 4K Monitor    | Hardware    | $649.00 | In Stock  |
4 rows × 5 columns
Rendered Preview
IDProduct NameCategoryPriceStatus
1Mechanical Keyboard ProHardware$129.99In Stock
2USB-C Multiport HubAccessories$45.00In Stock
3Ergonomic MouseHardware$79.50Low Stock
4UltraWide 4K MonitorHardware$649.00In Stock

How to convert CSV to a Markdown table in 3 steps

  1. Paste or upload the CSV

    Paste comma-separated text into the Paste CSV box, click Upload file, or drop a .csv file on it. Excel workbooks (.xlsx, .xls, .ods) work too.

  2. Check the table

    It converts as you type. The first row becomes the header; open Edit grid to fix a cell, or use Tools › Auto-align to right-align number columns.

  3. Copy the Markdown

    Click Copy Markdown and paste it into GitHub, GitLab, Obsidian or any Markdown file, or download it as .md.

Example

CSV with quoted commas, "" and a line break
id,name,address,notes
1,Ada Lovelace,"12 St James's Sq, London","Prefers ""Ada"""
2,Grace Hopper,"Arlington, VA","Line one
Line two"
3,Alan Turing,Wilmslow,uses a|b
Markdown table
| id  | name         | address                  | notes                |
| --- | ------------ | ------------------------ | -------------------- |
| 1   | Ada Lovelace | 12 St James's Sq, London | Prefers "Ada"        |
| 2   | Grace Hopper | Arlington, VA            | Line one<br>Line two |
| 3   | Alan Turing  | Wilmslow                 | uses a\|b            |

Options explained

Paste CSV box
Converts 150 ms after you stop typing, and immediately on paste. The badge shows the detected format; the status line shows rows × columns or what went wrong.
Upload file
Reads a file from your computer without uploading it anywhere. .csv files are always parsed as comma-separated; workbooks get a sheet picker..csv · .tsv · .txt · .json · .html · .md · .xlsx · .xls · .ods
Paste / Sample / Clear
Paste reads the clipboard (including tables copied from web pages or Sheets), Sample loads example data, Clear empties the box.
Edit grid / Markdown tabs
Fix cells, rename headers, set alignment or reorder columns after converting; the Markdown tab shows the source.
Tools
Auto-align (numbers right), header case, transpose, and quick or deep clean for stray spaces and blank rows.
Flavor and Spacing
GFM suits GitHub and most editors. Padded aligns the pipes in the source; Compact keeps the file smaller.GFM · MultiMarkdown · Pandoc Pipe · reStructuredText · Org-mode · Padded / Compact / No outer pipes
Collapsible <details>
Wraps a long table in <details><summary> so it starts collapsed on GitHub.
Download / Copy link
Save .md, .xlsx, .csv or .png, or copy a link that reopens the table (stored after #md= in the URL, not sent to the server).

Convert other formats to Markdown

Convert Markdown to…

Browse all 36 tools

About this tool

Paste CSV text or open a .csv file and the Markdown table appears as you type, ready to paste into a README, issue, wiki or notes app. Quoted fields with commas, escaped quotes and multi-line values are handled the way Excel and Google Sheets write them, pipes inside values are escaped, and you can fix cells or alignment in the grid before copying. Everything runs in your browser, so the file never leaves your computer.

  • Converts as you paste; no Convert button
  • Upload .csv, .tsv, .xlsx, .xls or .ods, or drag and drop
  • Quoted fields: commas, "" escapes and line breaks (as <br>)
  • Escapes | in values so columns never shift
  • Detects tabs and semicolon-separated data
  • Edit cells and alignment before copying
  • Runs in your browser; files are not uploaded

Technical details

How CSV is mapped to a Markdown table

The parser follows RFC 4180, the common CSV format written by Excel, Google Sheets, databases and most scripts. The first record becomes the header row, every other record becomes a table row, and the result is written as a GFM pipe table.

  • Quoted fields: A field wrapped in double quotes can contain commas and line breaks, and "" inside it is one literal quote.
  • Line breaks: A newline inside a quoted field becomes <br>, because a real newline would end the Markdown row.
  • Pipes: A | inside a value is written as \| so it does not create an extra column.
  • Ragged rows: Short rows are padded with empty cells; a missing header name becomes “Column N”.
  • Whitespace: Spaces around each value are trimmed; a byte-order mark at the start of the file is ignored.
  • Delimiters: Commas by default; tab-separated text is detected automatically, and semicolons are used when at least two lines split consistently on them and the commas look like decimals (1,5). Uploaded .csv files get the same check.

Common problems and fixes

A semicolon CSV still splits at the commas

Cause: Semicolons are used when at least two lines have the same number of them. A file whose lines have different numbers of semicolons, or a single line, is read as comma-separated.

Fix: Make every line carry the same number of semicolons (a trailing ; counts), re-export with commas, or replace ; with tabs before pasting.

The data was read as a Markdown table instead of CSV

Cause: Several lines contain a | character, which looks like a pipe table when pasted.

Fix: Upload the .csv file instead of pasting it; files ending in .csv are always parsed as CSV.

Everything ended up in one column

Cause: The data uses a delimiter that was not detected, such as runs of spaces, or the lines have different numbers of delimiters.

Fix: Save it as comma- or tab-separated, or paste it into the Universal Table to Markdown page.

The first data row became the header

Cause: The CSV has no header row; the first line is always used as the header.

Fix: Type header names into the first line before pasting, or rename the headers in the grid and add the row back.

Platform compatibility

PlatformSupportNotes
Excel & Google Sheets exports SupportedStandard comma-separated CSV, including UTF-8 files with a byte-order mark.
GitHub & GitLab SupportedThe GFM output renders in READMEs, issues, PRs and wikis; <br> works in cells.
Obsidian SupportedRenders in Reading view and Live Preview.
Pandoc SupportedReads the output with its pipe_tables extension, enabled by default for Pandoc Markdown.
CommonMark core ExtensionTables are not part of core CommonMark 0.31.2; the renderer needs a GFM table extension.

Frequently asked questions

How do I convert CSV to a Markdown table?

Paste the CSV into the box above or click Upload file and choose the .csv. The Markdown table is generated as you type; click Copy Markdown and paste it where you need it. The first CSV row becomes the table header.

Does it handle commas inside quotes?

Yes. A value in double quotes, such as "Arlington, VA", stays in one cell, "" inside quotes becomes a literal quote, and a line break inside quotes becomes <br> so the Markdown row is not broken.

Can I upload an Excel file instead?

Yes. Upload file accepts .xlsx, .xls and .ods as well as .csv. Cells are converted as Excel displays them (formatted numbers, dates and formula results), and a workbook with several sheets shows a sheet picker.

Does it work with semicolon-separated CSV?

Yes. When at least two lines have the same number of semicolons, the semicolons are used as the delimiter, including for decimal commas (1,5) and for uploaded .csv files. If the lines have different numbers of semicolons it is read as comma-separated; re-export it with commas or tabs.

Is my data uploaded anywhere?

No. Parsing and conversion run in your browser, and uploaded files are read locally. A draft is saved in your browser’s local storage so a reload does not lose it.

How do I paste the result into GitHub?

Click Copy Markdown, then paste into a .md file, README, issue or pull request on its own lines, with a blank line before and after. GitHub renders it as a table in the preview and after saving.

How do I right-align number columns?

Click Tools › Auto-align to right-align columns that are mostly numbers, or open Edit grid and set alignment from a column’s ▾ menu. The delimiter row then uses ---: for those columns.

My CSV has no header row. What should I do?

The first line is always used as the header, so add a header line before pasting, or rename the headers in Edit grid and re-add the first row. GFM tables require a header row.