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.