Markdown Table Generator
A Markdown table generator for CSV or spreadsheet rows. Paste them in, the first line becomes the header, and the output is padded so columns line up in the raw text too.
Markdown
Ragged
How each column is aligned
a comma on every line
Every column
all three columns share it
Rows
Cells
Display
What the paste became
How to use
- Clear the Ada Lovelace sample out of the Rows box; it is only in there to show the layout.
- Paste your own rows in. Copying a block of cells from Excel, Google Sheets or Numbers gives you tab-separated text, which is the cleanest thing to feed it.
- Make sure the top line is your header row, because that is the one that becomes the table head.
- Check the Delimiter line under the controls. It names what it read from your rows, such as Auto (tab), and you can pin comma, tab, semicolon or pipe if it guessed wrong.
- Set Every column to Left, Center or Right, or press a column's own chips on its card to align that column alone. Left is where it starts.
- Press Copy Markdown and paste the table into your README, an issue, or a docs page, or Download .md to keep it as a file.
About this tool
Markdown never got a shorthand for tables, so it is either hand-aligning pipes and dashes or pasting your rows into a Markdown table generator and letting it do the counting. The Rows box here takes comma, tab, semicolon or pipe separated text, works out which one you used, treats the first line as the header, and rebuilds the Markdown box as you type. A sample table is already sitting in there when you arrive, with Ada Lovelace and Grace Hopper in it, so you can see the shape before you clear it out.
Padding is the part I actually care about. Every cell is stretched to the width of the widest value in its column, so the raw Markdown stays readable in a pull-request diff instead of collapsing into a run of pipes. Width is counted the way a monospaced editor draws it, so 李雷 takes four columns and an emoji two, and the pipes still line up. No column is ever narrower than three dashes. A pipe character inside your data gets escaped to \| so it does not split the row, and a line with fewer cells than the header is topped up with blanks so the table still parses.
Every column alignment sets the whole table at once, and each column's card under the panes sets that column alone; either way it moves the text inside the cells as well as writing the colons into the separator row. Set a column of numbers to Right and the raw file reads like a ledger. Once the table looks right, Copy Markdown puts it on your clipboard, Download .md saves it, and Markdown Preview will render it if you want to see the finished thing before you push.
Sprint board to pull request in one paste
Select the Task, Owner and Points columns for the four stories in a sheet, copy, and paste into the Rows box. The tabs that came along mark the columns, the top line becomes the header, and the output pane already holds a table whose pipes line up down the screen.
One teammate tabbed twice on their row, so it carries a stray empty cell: the table quietly grows a blank column instead of collapsing, which is visible in the padded output before the copy button ever gets pressed. Fix the source line, watch it redraw, then drop the result into the PR description.
Good to know
- A cell is one line. Quoted fields keep their commas, but a line break inside a quoted cell becomes a space, because a Markdown table row has to sit on a single line.
- Every row is stretched to the widest row in the paste, not to the header. A line with an extra cell widens the entire table by one blank-headed column, lit in the output and counted under the panes, and rows that run short are padded with empty cells rather than dropped, so a lopsided table traces back to a lopsided paste.
- The trip is one-way: pipes go out, nothing parses back in. Data that still needs to live in a spreadsheet should keep its original rows, with the generated table treated as a rendering rather than a second home.
Frequently asked questions
How do I get an Excel or Google Sheets selection into Markdown?
Select the cells, copy, and paste into the Rows box. Both apps put tab-separated text on the clipboard, and the Delimiter line reads Auto (tab) once it has seen it, so there is nothing to configure. Include your header row at the top of the selection, since the first line is what becomes the table head.
Can I align one column right and leave the others alone?
Yes. Each column has a card under the panes with its own Left, Center and Right, and pressing one changes that column's colons and padding only. Every column then shows nothing pressed, because the columns no longer agree; pressing one of its chips sets them all again.
What happens to a pipe character inside one of my cells?
It comes out escaped as \| so it renders as a literal pipe instead of ending the cell early. Ragged rows are handled from the other end: a line with fewer cells than the header gets empty cells appended until it matches, which keeps the table valid.
The Markdown is full of padding spaces. Is that a bug?
It is on purpose. Cells are padded to the widest value in their column so the raw text stays lined up wherever someone reads the source, and every renderer strips that whitespace before it displays anything. Minimum column width is three characters, which is why short columns come out as three dashes.
Missing something in Markdown Table Generator? Suggest a feature →
Tell someone who needs this.