100% Local · Free · No Sign-up

Convert Excel (XLSX) to Markdown Tables

SheetJS unzips your .xlsx/.xls workbook in the browser, resolves shared strings and number formats, and writes each worksheet as a GFM pipe table. Dates stay dates, numeric columns right-align, and the file never leaves your machine.
Drop your Excel file here to convert to MarkdownDrag & drop files here, or click anywhere to browse · .xlsx, .xls

Processing happens 100% in your browser — nothing is uploaded.

Merged cells and formula caches

GFM tables have no colspan, so a merged range keeps its value in the top-left cell and leaves the rest empty. Formula cells are exported as their cached result; a file written by a library without cached results will show those cells blank, and the converter tells you how many were affected.
100% Local Processing — Your files never leave your device

How to convert Excel to Markdown

  1. Drop: drag your .xlsx or .xls workbook onto the dropzone, or click to browse.
  2. Process: SheetJS unzips and parses every worksheet locally, computes column alignment, and escapes pipes.
  3. Copy: copy the GFM tables to your clipboard or download a .md file.

Why Convert Excel to Markdown with MD Convert?

  • Formatted values, not serial numbers

    Excel stores a date as a number and its appearance as a style index. Cells are read as formatted text with dates enabled, so 2026-08-31 arrives as a date instead of as 46265, and currency symbols, thousands separators and percent signs survive the conversion.

  • Alignment derived from your data

    Each column is inspected before the delimiter row is written: if every non-empty cell is numeric, the column gets `---:` and right-aligns. Currency, percentages and parenthesised negatives count as numeric; date columns stay left-aligned.

  • Every sheet, labelled and in order

    Multi-sheet workbooks produce one H2 section per worksheet, named exactly as Excel names it, with a warning reporting the sheet count. Nothing is silently dropped and there is no picker to set wrong.

  • 100% local — nothing is uploaded

    The workbook is read through the File API and parsed by SheetJS in a Web Worker inside your tab. No fetch, no POST, no server copy — which is the only defensible way to convert salary data, client lists or unreleased financials.

Excel to Markdown: Before and After

Dates stay dates rather than becoming serial numbers, the number format survives, and the two numeric columns are right-aligned automatically. The sheet name becomes an H2 so multi-sheet workbooks stay navigable.

Input · text
Sheet "Pipeline":

Region | Signed      | Revenue  | Share
EMEA   | 2026-08-31  | 1,234.50 | 12.5%
APAC   | 2026-09-01  | -98.25   | 40.0%

(Revenue is =SUM(...) with a cached result;
 Signed cells are real dates, format yyyy-mm-dd)
Output · Markdown
## Pipeline

| Region | Signed | Revenue | Share |
| --- | --- | ---: | ---: |
| EMEA | 2026-08-31 | 1,234.50 | 12.5% |
| APAC | 2026-09-01 | -98.25 | 40.0% |

Understanding the Excel Format: ECMA-376 / ISO/IEC 29500

Format
Office Open XML Workbook (XLSX)
Media type
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Parser used
SheetJS (xlsx)

Technical Specifications & Table Generation Rules

  • Formatted dates and numbers: cells are read with style formatting enabled. Dates emit as ISO date strings, not 1900-epoch serial numbers, and currency and percentage formats are preserved.
  • Automatic column alignment: numeric columns, including currency, percentages and accounting negatives, receive the ---: right-alignment delimiter. Date columns stay left-aligned.
  • Merged cells and multiple sheets: GFM tables have no colspan or rowspan. A merged range places its value in the top-left cell and leaves the rest empty. Each worksheet becomes its own H2 section, in workbook order.
  • Formula evaluation: the converter exports cached formula results and does not calculate. Workbooks written by third-party tools without calculation caches export blank cells. Open and save the file in Excel or LibreOffice to populate them.
  • Pipe and newline escaping: a literal pipe inside a cell is escaped as \|. Multiline cell text collapses to single spaces, because a GFM table cell cannot hold a line break.

Developer Alternative: Python (Pandas) & Node.js Extraction

For scheduled jobs or server-side pipelines, pandas and SheetJS produce the same kind of table outside the browser. Note that pandas reads raw values by default, so configure date handling for your data.

Python (pandas)
# Programmatic Excel to Markdown table conversion using Pandas
import pandas as pd

# Reads formatted values and generates GFM pipe table
df = pd.read_excel("data.xlsx", sheet_name=0)
markdown_table = df.to_markdown(index=False)
print(markdown_table)
Node.js (SheetJS)
// Server-side Node.js extraction using SheetJS
import * as XLSX from "xlsx";

const workbook = XLSX.readFile("data.xlsx", { cellDates: true });
const sheet = workbook.Sheets[workbook.SheetNames[0]];
// Output raw table data or convert to GFM string
const data = XLSX.utils.sheet_to_json(sheet, { header: 1 });
console.log(data);

How You Can Verify the Privacy Claim

Browser-only

Zero server upload

Conversion runs inside your browser tab. Open DevTools, switch to the Network panel, and convert a file: for every format except URL to Markdown you will see no request carrying your document — because there is no endpoint to send it to.

Web Worker

Off the main thread

Heavy parsing is dispatched to a Web Worker, so a 500-page PDF or a large spreadsheet never freezes the interface. Everything is plain JavaScript — no native plugin, no WebAssembly toolchain, nothing to install.

No account

Nothing to sign up for

No login, no quota, no paywall, and no tracking tied to your files. Analytics are cookieless and aggregate only. Read the privacy policy for the full data-flow breakdown, including the one proxied exception.

The parsers doing the work

No proprietary black box: each format is handled by a widely audited open-source library, running client-side at the version pinned in our lockfile.

Excel to Markdown — FAQ

Are formulas converted or just their values?

Values. Excel caches the last calculated result of every formula in the file, and that cached result is what lands in the Markdown table — the same number you saw on screen when the workbook was saved. There is no calculation engine in the browser, so a formula written by a third-party library without a cached result comes through blank, and the converter raises a warning naming the count. Opening the file in Excel or LibreOffice and re-saving it populates the cache.

What happens with multi-sheet workbooks?

Every worksheet is converted, in workbook order. Each becomes an H2 heading carrying the sheet name followed by its own GFM table, all in one Markdown document, and a warning reports how many sheets were found. Delete the sections you do not need — that is faster than re-running a conversion because a sheet selector defaulted to the wrong tab.

Why do my dates come out correctly here but as numbers elsewhere?

Because Excel stores dates as serial numbers — days since the 1900 epoch — with the date formatting held separately in the style table. Tools that read raw cell values without consulting that table emit 46265 instead of 2026-08-31. This converter reads cells as formatted text with date parsing enabled, so the displayed value is the exported value. The same applies to percentages, which are stored as fractions.

What happens to a cell containing a pipe character?

It is escaped as \| so the table row cannot break. A raw pipe inside a GFM table cell terminates that cell early and shifts every column after it, which is the most common way a converted table ends up mangled. Hard line breaks inside a cell are also collapsed to spaces, because GFM tables cannot contain a newline within a cell.

In-Depth Excel Guides