Why convert a spreadsheet to Markdown?
Markdown has no way to describe a table beyond pipes and dashes, so building one by hand means counting columns and lining up characters. Copying a range out of a spreadsheet gives you tab-separated text instead — the right data in the wrong shape.
This converter reads that text, works out the delimiter, and writes the Markdown table for you. Two details decide whether the result actually renders: a pipe inside a cell has to be escaped, and a line break inside a cell has to become a break tag, because a Markdown table row ends at the newline.
The cells in each row must be separated by a pipe character.
Features
- Pipes inside cells are escaped
- A cell containing | would otherwise split into two columns at that point, silently shifting every value after it. The converter escapes it so the table still reads as written.
- Line breaks survive
- A Markdown table row ends at the newline, so a multi-line cell would truncate the table. Those breaks become <br>, which every Markdown renderer that supports tables also supports.
- Optional column alignment
- Padding the columns changes nothing about how the table renders, but it makes the raw Markdown readable — which matters in a README or a pull request body, where people read the source.
- Paste straight from a spreadsheet
- A range copied out of Excel, Numbers, or Google Sheets arrives as tab-separated text. Delimiter detection picks that up without any setting.
How to use
- 1
Copy the range
Select the cells in your spreadsheet and copy, or paste raw CSV.
- 2
Paste it here
The delimiter is detected automatically — tab for a spreadsheet copy, comma or semicolon for a saved file.
- 3
Decide on alignment
Turn on column alignment if a person will read the Markdown source, off if it only gets rendered.
- 4
Copy the table
Paste it into a README, an issue, a pull request, or any docs page.
Frequently asked questions
How do I convert an Excel range to a Markdown table?
Select the cells and copy — the clipboard receives tab-separated text — then paste that here. The delimiter is detected as a tab automatically, so there is nothing to configure.
My table breaks where a cell contains a pipe. Why?
In Markdown the pipe is the column separator, so an unescaped pipe inside a cell starts a new column and shifts everything after it. This converter escapes it as \| so the cell stays intact. Hand-written tables usually miss this.
Can a cell contain more than one line?
Not natively — a Markdown table row ends at the newline. Multi-line cells are converted to <br>, which renders as a line break wherever tables are supported. GitHub, GitLab, and most static site generators handle it.
Does the column alignment change how it renders?
No. Renderers ignore the padding entirely. It only affects how the raw Markdown looks to a person reading the file, which is why it is worth doing in a README and pointless in generated output.
Is my data uploaded?
No. The conversion happens in your browser, so an internal report can be turned into a table without leaving your machine.
Specifications this follows
- GitHub Flavored Markdown Spec — Tables — The table extension this output targets, including how the delimiter row works.
- RFC 4180 — CSV — The quoting rules used to read the input before it is rewritten.
Related tools
- CSV Viewer & ConverterOpen delimited data as a table, guess the delimiter, and convert it to JSON.
- CSV to JSON ConverterTurn a spreadsheet export into a JSON array, with numbers and booleans typed correctly.
- Diff CheckerCompare two texts side by side, with the changed words highlighted inside each line.