Markdown table generator

Paste delimited data — a Markdown table appears instantly. No button, nothing uploaded.

How to use it

  1. Paste your data — comma, semicolon, tab or pipe separated. It detects the delimiter automatically, or pick one from the menu.
  2. Keep “First row is header” on when your first line names the columns; turn it off to get “Column 1, Column 2…” headers.
  3. Pick an alignment only when a column needs it (for example numbers right-aligned); the default is plain Markdown with no alignment.
  4. Use “Copy table” to paste it into your document, or “Download .md” to save the file.

Example

Input

Name,Age,City
Alice,30,New York
Bob,25,London
Charlie,35,Tokyo

Markdown table

| Name    | Age | City     |
| ------- | --- | -------- |
| Alice   | 30  | New York |
| Bob     | 25  | London   |
| Charlie | 35  | Tokyo    |

Generated with the default settings (comma delimiter, first row as header, no alignment). Columns are padded to a readable width; the pipe characters in cells are escaped.

Rules, limits and known issues

  • The delimiter is detected from the first line; if a column contains the delimiter inside quotes (“a,b”), it is treated as data, not a split.
  • Cells are never trimmed — leading and trailing spaces are kept exactly as typed.
  • A pipe “|” or a backslash “\” inside a cell is escaped so it does not break the table; the escaping is visible in the output.
  • A line break inside a cell cannot exist in a Markdown table, so it is flattened to a single space and counted in a notice.
  • Columns are sized by display width: Chinese, Japanese and full-width characters count as two, which keeps those columns aligned.
  • If rows have fewer columns than the header, they are padded with empty cells and noted — no data is dropped.
  • Above 200,000 characters the table updates about 0.6 s after you stop typing; the input is never truncated.
  • Not offered: per-column alignment, Markdown-to-data reverse parsing, or LaTeX/HTML/Excel export — see the research notes for why.

Tables usually start as text somewhere else.