Skip to main content

Markdown Table Generator & CSV Converter

Two ways to a markdown table on one page: build one in a spreadsheet-style grid — add rows and columns, click a column header to cycle its alignment — or paste CSV or TSV data and convert it directly. Either way the output is a padded, readable GitHub-flavored markdown table ready for a README, issue, or wiki.

Markdown

| Name | Role | Location |
| ---- | ---- | -------- |
|      |      |          |
|      |      |          |

Make it a real table in Moda

Need the table in a slide or report instead of markdown? Build the designed version in Moda.

Try Moda free →

The markdown table syntax being generated

A markdown table is a header row, a separator row of dashes, and body rows, with cells divided by pipes. Alignment lives in the separator: :--- is left, :---: centered, ---: right. This generator also pads every cell with spaces so the columns line up in the raw text — GitHub renders unpadded tables identically, but padded source stays reviewable in diffs and editable by the next person without a tool.

What the CSV/TSV converter handles

The parser follows the RFC 4180 conventions real spreadsheet exports use: fields wrapped in double quotes may contain commas, line breaks, and doubled quotes ("she said ""hi""" reads as she said "hi"). The delimiter is auto-detected per paste — tab, comma, or semicolon, whichever dominates the first line — so data copied straight out of Excel or Google Sheets (which copies as TSV) converts without any setting. Ragged rows are padded with empty cells to the widest row rather than producing a broken table.

Characters that need escaping inside cells

A literal pipe inside a cell would end the cell, so the generator escapes it as \|. A line break inside a quoted CSV field becomes <br>, the only way GitHub-flavored markdown renders a multi-line cell. This is also the honest limitation of markdown tables: no merged cells, no per-cell styling, no nested block content — when a table needs those, it needs HTML or a real document.

Frequently asked questions

Why is there a row of dashes in the output?

That separator row is mandatory markdown syntax — it marks the first row as the header and encodes each column’s alignment via the colon positions. Deleting it turns the whole table back into plain paragraphs.

How do I set column alignment?

In the builder tab, click the small label above any column to cycle left → center → right. In the generated markdown you will see the separator change between :---, :---:, and ---:.

Can I paste data straight from Excel or Google Sheets?

Yes — copying spreadsheet cells puts tab-separated text on the clipboard, and the converter detects tabs automatically. Commas inside your data are then harmless because they are not the delimiter.

My CSV has commas inside values — will it split wrong?

Not if the values are quoted, which is how every spreadsheet exports them ("London, UK"). Unquoted commas are indistinguishable from delimiters — no parser can fix that — so re-export with quoting if columns come out shifted.

Does the table work everywhere markdown does?

Tables are a GitHub-flavored markdown extension, now supported by GitLab, Obsidian, Notion, Discord partially, and most modern renderers — but not by original strict markdown. If your target renders the table as plain text with pipes, it only supports the original spec.

Related tools

← All tools