Key facts
| Input formats | XLSX, XLS, CSV, ODS |
|---|---|
| Size limit | 100 MB per file (checked in the browser) |
| Where it runs | In your browser with SheetJS 0.20.3; the file is not uploaded (the library itself is downloaded from a CDN) |
| Cost | Free, no sign-up |
| Output | One Markdown table per sheet, copy or download as .md |
What you get
Each worksheet becomes a section titled with the sheet name (## Sheet1), followed by one Markdown table. The first row of the sheet is used as the header row, so put your column names there. Empty rows are skipped, empty cells stay empty, and a | character inside a cell is escaped so it does not break the table. Line breaks inside a cell are turned into spaces, because a Markdown table row must stay on one line.
Values, not formulas
The converter reads the values Excel saved in the file, the same ones you see on screen, not the formulas behind them. Merged cells are not merged in Markdown: the value appears in the first cell of the merged area. Formatting such as colours, bold text and number formats is not carried over, because Markdown tables have no styling.
Good uses
Paste the tables into a GitHub README or issue, a Notion or Obsidian page, documentation, or a prompt for ChatGPT or Claude: models read a Markdown table much more reliably than tab-separated text pasted from Excel. For data you want to process in code, use Excel to JSON instead.
Example
A small sales table. Each sheet becomes a heading followed by a Markdown table.
Input
(CSV file, also works with .xlsx) Region,Q1,Q2 North,120,135 South,98,110
Output
## Sheet1 | Region | Q1 | Q2 | | --- | --- | --- | | North | 120 | 135 | | South | 98 | 110 |