Markdown table generator

Paste CSV, TSV or spreadsheet cells and get a clean Markdown table.

Paste rows of data — comma-separated, tab-separated, or copied straight out of a spreadsheet — and press the button to turn them into a GitHub-flavoured Markdown table, complete with the header separator row. The separator is detected automatically, or you can force one. Any pipe characters inside your cells are escaped so they do not break the table.

Try:
0Words
0Characters
0No spaces
0Sentences
0Paragraphs
0Lines
0Pages
0Reading
0Speaking

Runs entirely in your browser. Your text is never uploaded — open DevTools, Network tab, and you will see zero requests while you use this tool.

How to use it

  1. Paste your rows, one record per line, values separated by commas or tabs.
  2. Leave the separator on Auto-detect, or pick the right one if your data is unusual.
  3. If your first row is data rather than column names, tick "First row is data, not a header".
  4. Press "Convert to Markdown table" and copy the result into your README or comment.

What this tool does

Markdown has a compact table syntax: cells wrapped in pipe characters, and a second row of dashes that marks where the header ends. Writing it by hand is tedious and easy to misalign. This tool takes ordinary tabular data and produces that syntax for you.

By default the first row becomes the table header. The tool counts the columns, pads short rows with empty cells so the table stays rectangular, trims stray spaces around each value, and escapes any literal pipe characters as \| so they render as text instead of breaking the column layout.

Auto-detecting the separator

Leave the separator on Auto-detect and the tool looks at your first row and picks whichever of tab, comma, semicolon or pipe splits it into the most columns. That covers the usual cases: data copied from Excel or Google Sheets arrives tab-separated, a downloaded CSV is comma-separated, and many European exports use semicolons. If your data is unusual — commas inside the values, for instance — choose the exact separator by hand to be sure.

Examples

Paste "Name,Age" then "Alice,30" and "Bob,25" and you get a three-row Markdown table with Name and Age as headers. Copy cells out of a spreadsheet and, because they arrive tab-separated, Auto-detect handles them with no change of settings. A value like "cats | dogs" comes through as "cats \| dogs" so the pipe shows literally.

Where Markdown tables are used

GitHub and GitLab READMEs, issues and pull requests; Reddit comments; Obsidian, Notion and other Markdown note apps; static-site generators; and documentation written in Markdown all render this syntax. It is the quickest way to get a readable table into any of them without an editor.

Doing it without this tool

By hand: type the pipes and the dashed separator row yourself, then line everything up. It works for a two-by-two table and becomes miserable beyond that.

Spreadsheet formulas: people build a column of ="| "&A1&" | "&B1&" |" and copy the separator row in separately. Fragile, and it forgets to escape pipes.

Editor plugins: some Markdown editors have a paste-as-table command, but only if you already work in that editor. This page needs nothing installed.

Privacy: your data never leaves your browser

Everything on this page runs in your browser with JavaScript. The text you paste is never sent to a server, no account is required and nothing is stored anywhere. You can confirm it: open your browser developer tools, switch to the Network tab and use the tool — you will see zero requests go out. For anything sensitive, that is the whole point.

Related tools

Markdown to textStrips Markdown syntax and leaves readable text.Hex converterTurn any text into its hexadecimal byte codes, or paste hex to read it back as…ROT13One button encodes and decodes — ROT13 is its own reverse.Title case converterCapitalises a headline properly — short words stay lowercase, unlike naive…Bubble textLetters inside circles, or letters inside squares. Copy and paste.Count words in Google DocsThe exact menu path in every app, and why two counters give you two different…How random is randomGood enough for a raffle, not good enough for a password. Here is the actual…

See all text tools →

Frequently asked questions

What input formats does it accept?

Comma-separated (CSV), tab-separated (TSV), semicolon-separated and pipe-separated data, as well as cells copied directly from Excel or Google Sheets, which arrive tab-separated.

How does auto-detect choose the separator?

It splits your first row by each candidate separator and picks whichever produces the most columns. If your values contain the same character you are splitting on, choose the separator manually instead.

What if a cell contains a pipe character?

It is escaped as a backslash-pipe so it renders as a literal pipe inside the cell rather than starting a new column.

What if my rows have different numbers of values?

Short rows are padded with empty cells so the table stays rectangular and valid.

Can I skip the header row?

Yes. Tick "First row is data, not a header" and the tool generates generic Column 1, Column 2 headers and keeps all your rows as data.

Is my data uploaded?

No. The conversion runs entirely in your browser and nothing is sent anywhere.