CSV/TSV in, Markdown table out

Markdown Table Generator.

Paste a CSV or TSV. Get a properly-aligned Markdown table with pipes, dashes, and alignment markers — ready for GitHub, Reddit, or any Markdown editor.

CSV / TSV Input
Markdown Table
Ready.

What this tool does

Markdown is fantastic for headings, lists, and inline formatting. Tables, though, are a hassle — the pipe-and-dash syntax is hard to write by hand, and getting the column alignment right takes patience that nobody has when they're trying to ship a doc.

This tool takes CSV, TSV, or pasted spreadsheet data and produces a clean, properly-aligned Markdown table. Paste your data, pick the alignment, and copy the result. It works for tables of any reasonable size and handles quoted fields, embedded commas, and mixed-row-length input.

Input formats

CSV (comma-separated values)

The default. Each line is a row. Commas separate columns. Quoted fields can contain commas: "Smith, John",Engineer is two columns. Quotes within quotes are escaped by doubling — for instance, a cell containing the phrase He said "hi" would be written as a quoted field with each inner double-quote doubled.

TSV (tab-separated values)

Tabs instead of commas. This is what you get when you copy a column from a spreadsheet — Excel, Google Sheets, Numbers all use tabs as the inter-column separator on copy. Choose "Tab" from the dropdown or let auto-detect handle it.

Semicolon and pipe

Some European CSV conventions use semicolons (because comma is the decimal separator in many locales). Pipe-separated input is common in log files. Both are supported.

Auto-detect

The default. The tool examines the first non-empty line and picks whichever separator appears most often. Works well for most input. Override the auto-detection by picking explicitly from the dropdown if needed.

Alignment options

Markdown tables support three column alignments, controlled by the position of colons in the separator row:

  • Left-aligned (default): |:----|
  • Centered: |:----:|
  • Right-aligned: |----:|

This tool applies the same alignment to every column. Mixed-alignment tables (some columns left, some right) require manual editing of the output — though most readers don't notice the difference, so a single alignment is usually fine.

Header rows

By default, the first row of input is treated as a header. If your data doesn't have a header row, uncheck "First row is header" and the tool generates synthetic column names ("Column 1", "Column 2", etc.).

Markdown tables require a header row — the separator below the header is what distinguishes a table from regular text. There's no headerless Markdown table.

Column padding

By default, columns are padded with spaces so the raw Markdown source is visually aligned:

| name  | role     | city    |
|:------|:---------|:--------|
| Anna  | Designer | Tokyo   |
| Ben   | Engineer | Berlin  |

The rendered HTML looks identical whether or not you pad — padding is purely for the source readability. Uncheck "Pad columns for readability" for compact output if you're space-constrained or generating a lot of tables programmatically.

Escaped pipes

If your data contains pipe characters (|), they're automatically escaped to \| in the output. This prevents the pipe from being interpreted as a column separator in Markdown renderers. The escape is invisible in the rendered table.

Common use cases

  • GitHub issues and pull requests — convert spreadsheet snippets to tables for context
  • README files — comparison tables, feature matrices, dependency lists
  • Technical documentation — API reference tables, configuration matrices
  • Reddit posts — Reddit supports Markdown tables in self-posts
  • Notion, Obsidian, and other Markdown editors — generate tables outside the editor and paste them in
  • Blog posts — most static site generators (Hugo, Jekyll, 11ty, Astro) parse Markdown tables natively

What this doesn't do

This tool produces standard GitHub-flavored Markdown tables. Some Markdown dialects support extended table features (cell spanning, line breaks within cells, complex alignment per-cell) that aren't part of the standard. Those aren't generated here.

For HTML output, this isn't the right tool — use a dedicated HTML table generator or a CSV-to-HTML converter.

Privacy

Everything runs in your browser. Data you paste never leaves your machine.