Skip to main content

Markdown Table Generator

Paste CSV or TSV and get a clean, aligned markdown table — with alignment controls.

100% client-side⌁ nothing leaves your browser⎘ instant results
Converted locally

Delimiter auto-detected: comma (CSV). Quoted fields with embedded commas and "" escapes are handled per RFC 4180.

Column alignment

name
role
tokens/day
3 × 3

Aligned markdown table — 3 data rows, 3 columns. Pipes in cell values are escaped so the table round-trips safely.

Markdown output

| name         | role            | tokens/day |
| ------------ | --------------- | ---------- |
| Ada Lovelace | Engineer        | 48200      |
| Grace Hopper | Staff, Platform | 91500      |
| Linus T      | Reviewer        | 12750      |

Column widths are padded so the raw markdown is readable in any editor — GitHub, GitLab and most renderers also accept unpadded tables.

100%
client-side compute
0
uploads — verify in devtools
96
free tools in the directory
0
network requests per keystroke

How it works

Markdown tables are wonderful to read and miserable to type. The pipe-and-dash syntax demands that every row carries the same number of cells, the separator row encodes alignment with colon placement, and any literal pipe in your data breaks the structure silently. This generator takes the format you actually have — CSV from an export, TSV from copying spreadsheet cells — and emits a correctly aligned, correctly escaped markdown table you can paste into a README, a pull request or documentation.

Parsing is RFC 4180-aware, which is the difference between a toy and a tool. Fields wrapped in double quotes may contain the delimiter, embedded newlines and doubled quotes — exactly what Excel and Google Sheets produce when a cell contains a comma. The delimiter itself is auto-detected by counting tabs versus commas outside quoted regions on the first line, so pasting straight from a spreadsheet (tab-separated) or from a .csv file both just work, and the detected mode is shown so you can verify the guess.

Each column gets a three-way alignment control. Left is the markdown default and right for prose; right alignment is the typographically correct choice for numbers, since it aligns digit places; center suits short status badges and single-character flags. The choice is encoded into the separator row with standard colon syntax — :---, :--:, ---: — which GitHub, GitLab, and every CommonMark-tables renderer honors identically.

The output is round-trip safe: pipes in cell values are escaped as \|, newlines inside quoted fields become <br>, and columns are padded to equal width so the raw text stays aligned in diffs and terminal editors. Padding costs nothing at render time and pays for itself the first time someone reviews your table in a pull request diff. Everything happens in your browser — the data you paste, which may be internal metrics or customer names, is never uploaded, logged or shared.

Frequently asked questions

How does the delimiter auto-detection work?

The tool counts tabs and commas appearing outside quoted fields on the first line of your input. If tabs outnumber commas, the input is treated as TSV — which is what you get when copying cells from Excel, Google Sheets or Numbers. Otherwise it parses as CSV. The detected mode is displayed under the input so a wrong guess is immediately visible, and adding an explicit quote around a field never changes detection.

Are quoted fields with embedded commas handled correctly?

Yes — the parser follows RFC 4180 conventions: a field wrapped in double quotes may contain commas, newlines and escaped quotes written as two consecutive double-quote characters. So a CSV cell like "Staff, Platform" arrives as one field, not two. This matters because spreadsheet exports quote any cell containing the delimiter, and naive split-on-comma parsers silently corrupt exactly those rows.

What do the alignment markers in the separator row mean?

Markdown encodes column alignment with colons in the second row of the table: dashes alone (---) mean left-aligned by default, a colon on the right (---:) right-aligns, and colons on both ends (:--:) center the column. GitHub, GitLab and CommonMark-with-tables renderers all honor these. Right alignment is the correct choice for numeric columns — it lines up digit places and makes magnitude comparisons scannable.

Why does the output escape pipe characters?

The pipe character delimits cells in markdown tables, so a literal | inside your data would split its cell in two and shift every subsequent column — a corruption that is easy to miss in review. The generator replaces each pipe with a backslash-escaped \| which renders as a literal pipe in every major markdown engine, and converts embedded newlines to <br> tags so multi-line cells survive the round trip intact.

Why pad the columns with spaces when renderers don't require it?

Because markdown tables are read raw far more often than people expect — in diffs, code reviews, terminal editors and plain-text email. Padded columns keep the pipes vertically aligned so the table is legible as text, not just after rendering. The padding is cosmetic to renderers: GitHub produces identical HTML for padded and unpadded tables, so you lose nothing and gain readable source.

Built by FORG — AI cost observability for agentic coding. Free tools, no signup, nothing leaves your browser.

Learn about FORG