CSV to Markdown Table
Paste CSV or spreadsheet cells and get a tidy Markdown table back.
How to use the CSV to Markdown Table
- Paste CSV text into the left box, open a .csv or .tsv file, or copy a block of cells straight from your spreadsheet and paste that.
- The Markdown table appears on the right as you type. Commas, semicolons, tabs and pipes are recognised without any setting.
- Pick an alignment, say whether the first row is a header, and keep padding on if you want the raw Markdown to stay readable.
- Copy the table into your README, wiki page, issue or chat message, or save it as a .md file.
Examples
About this tool
Markdown tables are fiddly to type by hand: every row needs the right number of pipes, and the separator line underneath the header decides how the columns line up. This converter takes CSV, TSV or cells copied from Excel, Numbers or Google Sheets and writes that table for you in the GitHub flavoured syntax that GitHub, GitLab, Obsidian, Hugo and most documentation generators understand.
Quoted cells are parsed properly, so commas, quotes and even line breaks inside a cell survive; a line break becomes a <br> tag so the row stays on one line. Cells are padded to an equal width by default, which keeps the raw Markdown as readable as the rendered page, and pipes inside cells are escaped so they cannot split a row. With automatic alignment, columns that hold only numbers are right-aligned, the way figures are normally printed.
Tip: if your data has no header row, untick the header option. Generic column names are added because the Markdown syntax requires a header, and you can rename them in the result.
Frequently asked questions
Can I paste cells directly from Excel or Google Sheets?
Yes. Copying a block of cells puts tab separated text on the clipboard, which is detected automatically. Paste it into the input and the table is ready.
How does automatic alignment decide?
A column is right-aligned when every filled cell in it looks like a number, including values such as 1,250.00, 12% or -3.5. Everything else gets no alignment mark, which renderers treat as left.
What happens to a line break inside a cell?
Markdown tables cannot span lines, so the break is replaced with a <br> tag. GitHub and most other renderers show it as a line break inside the cell.
Does the table text leave my computer?
No. The conversion is plain JavaScript running on this page, so the data is never uploaded or logged. A copy of the input is kept in your browser's local storage so it is still there when you return.
Why does the padding look uneven for some characters?
Widths are counted in monospace columns, with East Asian characters and emoji counted as two. In a proportional font the columns will not line up anyway, and the rendered table is unaffected.