Excel to Markdown turns the cells of an .xlsx or .xlsm workbook, or cells you copy straight out of Excel, into a GitHub-flavoured Markdown table that you can copy or download as a .md file. The usual reason is a table that has to live somewhere Excel can't go: test results pasted into a GitHub issue, a price list in a README, a sheet of figures for a docs page or a chat prompt. Typing the pipes by hand stops being fun at about row six.
How to convert Excel to Markdown
With a workbook, keep "Upload a workbook" selected:
- Drop an .xlsx or .xlsm file of up to 50MB on the box, or click to browse. The file is read in your browser and never uploaded, and your workbook isn't changed.
- If the workbook has several sheets, keep "All sheets, one table each" or pick a single sheet.
- Check the two boxes. "The first row is the header" is ticked for you when the first row is all text. "Right-align number columns" starts ticked.
- Read the Markdown in the preview, which shows the first 40 lines. Then click "Copy Markdown" or "Download .md". A file called sales.xlsx downloads as sales (xlsx.com).md, and one sheet picked out of several as sales Sheet1 (xlsx.com).md.
For a block of cells you already have open in Excel, choose "Paste cells":
- Select the cells in Excel and copy them (Ctrl+C, or Cmd+C on a Mac).
- Paste into the box and set the same two options.
- Copy the table or download it.
Paste mode is also the way to convert part of a sheet, since the upload always converts whole sheets.
What the Markdown table looks like
Here is a four-row sheet of store openings, converted with both options on:
| Store | ZIP | Opened | Sales | Notes |
| ------------------------------------- | ----: | ----------: | --------: | ------------------ |
| Boston | 02134 | 4 Mar 2026 | $1,234.50 | Lease A\|B |
| Portland | 04101 | 12 Jan 2026 | $987.00 | Awning<br>repaired |
| [Providence](https://example.com/pvd) | 02903 | 1 Feb 2026 | $2,010.75 | |
Every cell sits between pipes, and the columns are padded with spaces to one width. That makes the source readable in a plain-text editor or a diff, and it renders the same on GitHub either way.
| In the sheet | In the Markdown |
|---|
| Values with a number format | The text Excel shows: 02134, 12.5%, $1,234.50, 4 Mar 2026 |
| Formulas | Their last calculated result |
| First row | The header when the box is ticked; otherwise the header is A, B, C and the first row stays data |
| Columns of numbers or dates | Right-aligned with ---: (you can switch this off) |
| A link to a web page, file or email address | A Markdown link, [text](url), including any #part of the address |
| A link to a place in the workbook | Its text only; the page counts these |
| Empty rows and columns around the data | Dropped |
| Empty rows inside the data | Kept, as rows of empty cells |
| Several sheets | One table per sheet under a ## Sheet name heading, in sheet order |
Empty sheets are skipped. Hidden sheets are not: they're converted like any other and marked (hidden) in the sheet picker, so check for them before you paste the lot into a public README.
Why dates turn into numbers and ZIP codes lose their zeros
A cell in Excel holds a stored value and a number format, and what you see is the second applied to the first. The date 4 Mar 2026 is stored as 46085. A Massachusetts ZIP code formatted 00000 is stored as 2134. A 12.5% discount is 0.125.
Converters that read only the stored value write those raw numbers into your table. The TEXTJOIN formula route further down has the same problem, because joining text in Excel uses the stored value.
This tool applies each cell's number format first, using the same reading as the site's Excel to CSV converter. What you get is 02134, 12.5% and 4 Mar 2026, with the currency symbol and thousands separators kept. Dates also count as numbers for alignment, so a date column is right-aligned like the figures next to it.
Paste mode gets the formatted values for free. When you copy cells, Excel puts them on the clipboard as the text it displays, so 02134 and 12.5% arrive as they look. Alignment is the one difference: pasted text carries no types, so only values that read like numbers are right-aligned, and a date copied as 4 Mar 2026 isn't.
Pipes, line breaks and merged cells
Three things in an ordinary sheet can wreck a Markdown table, and each has a different fix.
A pipe inside a cell. The pipe is the column separator, so "Lease A|B" becomes two cells and every cell after it slides one column right. The tool writes it as A\|B, which GitHub renders as a plain pipe.
A line break inside a cell. Alt+Enter in Excel puts a line break in the cell, but a Markdown table row has to fit on one line. The tool replaces each break with <br>, which GitHub renders as a new line inside the cell. It also trims spaces from the start and end of every cell.
A merged range. Markdown has no way to span a cell across columns or rows. The value goes in the first cell of the range and the rest come out empty, which is what Excel's own exports do. The page tells you how many merged ranges it found, so a merged title row doesn't catch you out.
Converting Excel to Markdown without a converter
Excel 365 has no Markdown format under Save As or Export. You can build the table with formulas, which is worth it when the sheet changes weekly and you want the Markdown to update with it.
For a table in A1:D20, put this in F1 and fill it down to F20:
="| "&TEXTJOIN(" | ",FALSE,A1:D1)&" |" // FALSE keeps empty cells, so columns don't shift
Copy F1:F20, paste into your editor, and add the delimiter line under the first line. For four columns that's | --- | --- | --- | --- |, or let Excel write it for any width:
="|"&REPT(" --- |",COLUMNS(A1:D1)) // one --- per column
The formula reads stored values, so a date comes out as 46085 and a ZIP code formatted 00000 as 2134. To fix that, list the cells one by one and wrap those columns in TEXT, here with the ZIP in B and the date in C:
="| "&TEXTJOIN(" | ",FALSE,A2,TEXT(B2,"00000"),TEXT(C2,"d mmm yyyy"),D2)&" |"
Use it from row 2 down and keep the plain formula for the header line in row 1. None of these formulas escape pipes, turn line breaks into <br> or right-align anything. For a one-off table, copying the cells and using paste mode above takes less time than setting this up.
Limits
- No formatting. Bold, colours, fonts, borders and the alignment you set in Excel don't carry over. The only alignment in the output is the right-alignment of number columns.
- Notes, comments, images and charts are left out. The page counts the notes and images it skipped before you copy.
- Markdown characters aren't escaped. Only pipes and line breaks are. A cell reading *note* may render in italics; wrap it in backticks or add backslashes by hand if that matters.
- Whole sheets only in upload mode. There's no range box and no way to skip columns. Copy the cells you want and use paste mode instead.
- Paste mode sees text only. Links don't come through the clipboard, and a value is treated as a number only if it reads like one (1,234.50, 12%, $1,234), so a date copied as 4 Mar 2026 isn't right-aligned in paste mode.
- No .xls files. Save the workbook as .xlsx in Excel first, or copy the cells and paste them. A file with a password to open is detected, and the page explains why it can't be read.
Need the same sheet as data rather than a document table? Excel to CSV writes the values the way Excel displays them, as this page does, and Excel to JSON turns each row into an object keyed by the header, for code that will read the data rather than a person.
Questions
How do I convert an Excel table to Markdown?
Select the cells in Excel, copy them, and paste them into a converter that writes GitHub-flavoured Markdown, or upload the whole .xlsx. This page does both in your browser. You get a header row, a row of dashes, then one line per row with the cells between pipes.
Can Excel save a file as Markdown?
No. Excel 365 has no Markdown option under Save As or Export. You can build the table with a TEXTJOIN formula per row and copy the results out, or use a converter that reads the workbook or the copied cells.
How do you put a line break in a Markdown table cell?
Use an HTML line-break tag, <br>, where the break goes. A Markdown table row has to stay on one line, so a real line break ends the row. This converter turns each Alt+Enter break in a cell into <br> for you.
How do you escape a pipe character in a Markdown table?
Put a backslash in front of it, so A|B is written A\|B. An unescaped pipe inside a cell starts a new column and shifts every cell after it to the right. This converter escapes pipes automatically.
Can you merge cells in a Markdown table?
No. GitHub-flavoured Markdown has no colspan or rowspan, so every row has the same number of cells. When you convert a sheet with merged cells, the value goes in the first cell of the range and the rest stay empty. If the merge matters, an HTML table can span cells on renderers that allow HTML.
How do I right-align a column in a Markdown table?
Put a colon at the right-hand end of that column's dashes in the second line, as in ---:. A colon on the left end means left-aligned and colons on both ends mean centred. By default this converter right-aligns every column whose values are all numbers or dates in an uploaded workbook; in paste mode, only columns whose text reads like numbers.
Why do dates turn into numbers when I convert Excel to Markdown?
Excel stores a date as a serial number and only shows it as a date through the cell's number format. A converter that reads the stored value writes 46085 where the sheet shows 4 Mar 2026. This one uses the number format, so the date comes out as it appears in Excel.