Markdown table generator

Markdown table generator converts CSV, TSV, or pipe-separated data into a GitHub-flavoured Markdown table with proper column padding and alignment markers. Paste a spreadsheet selection, a CSV export, or any tabular text and the tool emits a table you can drop straight into a README, GitHub issue, Reddit post, or Notion page. Auto-detects the most common delimiter from the first line; column widths are computed so the source-form table is human-readable too. The transformation runs in your browser; nothing uploads.

Input
Line 1:1 LF cloud_done Saved locally
Result Markdown Table Generator
0 lines 0 chars

CSV / TSV / pipe in, GitHub-flavoured Markdown out

GitHub-flavoured Markdown supports tables via | col1 | col2 | rows separated by a | --- | --- | alignment row. Hand-typing one for a 5-column / 20-row dataset is tedious; this tool reads the input, computes per-column widths, and emits a properly padded table where every | aligns vertically in the source. The result reads cleanly both as raw Markdown and as the rendered table.

The Delimiter dropdown picks how the input columns are separated. Auto-detect (the default) sniffs the first non-empty line and picks whichever delimiter produces the most columns (tab, pipe, comma, or semicolon). Set it explicitly if your data contains tabs and commas mixed. CSV-aware quoting is honoured for comma and semicolon: "hello, world" stays as one cell.

The First Row is Header toggle is on by default. Turn it off if your input has no header row - the tool will emit Column 1, Column 2, etc. The Column Align dropdown picks the alignment marker character: :--- (left), ---: (right), :---: (center), or --- (none). Renderers honour the alignment marker; raw text is unaffected.

How to use markdown table generator

  1. 1Paste your CSV, TSV, or pipe-separated data into the input panel.
  2. 2Pick a Delimiter (or leave on Auto-detect).
  3. 3Toggle First Row is Header to match your data shape.
  4. 4Pick a Column Align: left (default), center, right, or none.
  5. 5Click Copy and paste the table into your README, issue, or doc.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Auto-detects the input delimiter

The first non-empty line is parsed with each common delimiter (tab, pipe, comma, semicolon) and the one producing the most columns wins. This works for clean exports; for ambiguous data, set Delimiter explicitly.

CSV-aware quoting

When the delimiter is comma or semicolon, double-quoted fields are parsed correctly: "Smith, John" stays one cell, ""hi"" decodes to "hi". Tab and pipe modes split on the literal character without quote-awareness.

Column padding for readable source

Per-column max width is computed across header + body rows; every cell is padded to its column width so the raw Markdown source has aligned | separators. The padded source is a bit longer but reads cleanly in any text editor.

Alignment markers

GitHub Markdown supports per-column alignment via the dash row (:---, :---:, ---:). The Column Align dropdown sets the same alignment for every column. Per-column alignment is not currently exposed.

Sparse row padding

Rows shorter than the widest row get padded with empty cells so every row has the same column count. Rows longer than the header get extra columns; you may want to clean those up manually.

Worked example

Auto-detected comma delimiter, header on, left-aligned. Each | aligns in the source.

Input
name,age,city
Alice,30,NY
Bob,25,LA
Output
| name  | age | city |
| :---- | :-- | :--- |
| Alice | 30  | NY   |
| Bob   | 25  | LA   |

FAQ

Will this work in GitHub issues / Reddit / Notion?
Yes for GitHub (issues, PRs, README) and Notion (paste into a code block converts on its own). Reddit supports tables on new Reddit and old.reddit since 2018. Discord does NOT render Markdown tables - paste plain text instead.
How do I include a pipe character in a cell?
Markdown table syntax uses | as the column separator, so a literal pipe inside a cell needs to be escaped as \| or replaced with a Unicode pipe-like character ( fullwidth). This tool does not auto-escape pipes - clean them in the input first if needed.
Can I do per-column alignment?
Not currently - the Column Align applies to every column. For per-column alignment, copy the output and edit the dash row by hand: change | :--- | :---: | ---: | to set left / center / right per column.
How is this different from CSV-to-JSON?
CSV to JSON emits a JSON array of objects keyed by header. This tool emits a Markdown table for documentation. Same input shape, different output format - pick by what you want to paste into.