Table to Markdown Converter
Paste a table from Excel, Sheets, a web page, CSV, TSV, JSON, HTML or SQL output and get a Markdown table; the format is detected for you.
Sample data shown — paste or drop your own to replace it.
How to convert any table to Markdown in 3 steps
Paste or upload your table
Paste cells copied from a spreadsheet, a web page or Word, or text in CSV, TSV, JSON, HTML, SQL or Markdown form, into the Paste data box. You can also click Upload file or drop a file on it.
Check the table
The badge above the box names the detected format and the status line shows rows × columns. The first row becomes the header. Open Edit grid to fix cells or set alignment.
Copy the Markdown
Click Copy Markdown and paste it into GitHub, GitLab, Obsidian or any Markdown file, or download it as .md.
Example
Region;Units;Revenue North;1240;48360.00 South;980;35280.50 West;1515;52995.50
| Region | Units | Revenue | | ------ | ----- | -------- | | North | 1240 | 48360.00 | | South | 980 | 35280.50 | | West | 1515 | 52995.50 |
Options explained
- Paste data box
- Converts 150 ms after you stop typing, and immediately on paste. A table copied from a spreadsheet, web page, Word or Google Docs is read from the clipboard’s HTML so the cells stay separate. The badge shows the detected format.Markdown · TSV · CSV · HTML · JSON · SQL output · Plain text
- Upload file
- Reads a file from your computer without uploading it anywhere. The extension picks the parser: .csv, .tsv, .json and .html as named; .xlsx, .xls and .ods get a sheet picker; .md and .txt are detected from their content..csv · .tsv · .json · .html · .md · .txt · .xlsx · .xls · .ods
- Paste / Sample / Clear
- Paste reads the clipboard, Sample loads example data, Clear empties the box. Ctrl/⌘+V on the page outside a text field also imports.
- Edit grid / Markdown tabs
- Fix cells, rename headers, set alignment or reorder columns after converting, with undo and redo. The Markdown tab shows the source.
- Tools
- Auto-align (numbers right, text left), header case, transpose, and quick or deep clean for stray spaces and blank rows.Auto-align · UPPER · lower · Title Case · Transpose · Quick clean · Deep clean
- Flavor and Spacing
- GFM suits GitHub, GitLab and most editors. Padded lines up the pipes in the source; Compact removes the padding; No outer pipes drops the leading and trailing |.GFM · MultiMarkdown · Pandoc Pipe · reStructuredText · Org-mode · Padded / Compact / No outer pipes
- Collapsible <details>
- Wraps a long table in <details><summary> so it starts collapsed on GitHub.
- Output tabs, Download, Copy link
- Switch the output to HTML, CSV, TSV, JSON, LaTeX, SQL or Jira. Download saves the active format, .xlsx, .csv or .png. Copy link stores the table after #md= in the URL, which browsers do not send to a server.
Convert to and from other formats
Also useful
Convert other formats to Markdown
- CSV to Markdown TableConvert CSV text or .csv files, including quoted cells.
- Excel to Markdown TablePaste cells copied from Excel straight into a Markdown table.
- Google Sheets to Markdown TablePaste a copied range or a public sheet URL.
- TSV to Markdown TableConvert tab-separated text into a Markdown table.
- HTML Table to MarkdownConvert <table> markup into a Markdown table.
- JSON to Markdown TableConvert a JSON array of objects into a table.
- SQL to Markdown TableConvert MySQL, PostgreSQL or SQLite CLI query output.
- Word Table to MarkdownPaste a table copied from Word or Google Docs.
- Web Table to MarkdownCopy a table from any web page and paste it here.
- Image to Markdown TableTurn a screenshot or photo of a table into Markdown in your browser.
- PDF to Markdown TableExtract a table from a PDF page, with OCR for scans.
Convert Markdown to…
- Markdown Table to CSVExport a Markdown table as RFC 4180 CSV.
- Markdown Table to TSVCopy as tab-separated values that paste cleanly into Excel and Sheets.
- Markdown Table to HTMLExport semantic <table> markup.
- Markdown Table to JSONExport rows as an array of JSON objects.
- Markdown Table to LaTeXExport LaTeX tabular code for papers and Overleaf.
- Markdown Table to SQLGenerate CREATE TABLE and INSERT statements.
- Markdown Table to ExcelDownload a real .xlsx with numbers, bold header and one sheet per table.
- Markdown Table to Google SheetsCopy a table that pastes cleanly into Google Sheets.
- Markdown Table to WordCopy a formatted table into Word or Google Docs, or download .docx.
- Markdown Table to ConfluenceWiki markup, storage format or a rich copy for the Cloud editor.
- Markdown Table to JiraConvert to Jira and Confluence wiki markup.
- Markdown Table to ImageRender the table as a PNG or SVG for slides and posts.
About this tool
Use this page when you are not sure what format your table is in. Paste cells copied from a spreadsheet, web page or Word, or text in CSV, TSV, JSON, HTML, SQL-output or Markdown form, and the Markdown table appears as you paste. The format is detected from the text itself; the badge above the box shows what was found. If the guess is wrong, the dedicated CSV, TSV, JSON, SQL and HTML pages parse one format only. Everything runs in your browser.
- Detects HTML, JSON, SQL output, Markdown, TSV, CSV and plain text
- Paste cells from Excel, Sheets, Word or a web page
- Upload .xlsx, .xls, .ods, .csv, .tsv, .json, .html, .md or .txt
- Semicolon-separated text and “Key: Value” lists are understood
- Escapes | in cells so columns never shift
- Edit cells and alignment before copying
- Runs in your browser; nothing is uploaded
Technical details
How the format is detected
The converter looks at the text you paste and picks the first rule that matches, from most to least specific. Pasted cells from a spreadsheet or web page skip this step: the clipboard carries an HTML table, which is read directly. Use a dedicated page (CSV, TSV, JSON, SQL, HTML) when you know the format and the guess goes wrong.
- HTML: Text containing <table>, or <tr> with <td>/<th>, is read as an HTML table (first table only).
- JSON: Text that starts with [ or { and parses as JSON (an array, an object or JSON Lines) is read as JSON. Text that starts like JSON but does not parse is still treated as JSON, and shows the syntax error instead of a table.
- SQL output: A +----+ border line, or a ----+---- rule under a header, marks mysql, psql or sqlite3 table output.
- Markdown: A line made only of dashes, colons and pipes, or two or more lines containing |, is read as a Markdown table, even if a cell contains <table> markup.
- TSV: At least 70% of the lines containing a tab is read as tab-separated.
- CSV: At least two lines with the same number of commas (or semicolons), or a line of quoted fields, means CSV. A semicolon wins when it splits the lines consistently and the commas are decimals such as 1,5. A single line with commas stays text, except on the CSV page.
- Plain text: Lines that mostly contain semicolons are read as semicolon-separated; “Key: Value” lines become a two-column table, bullet lists a one- or two-column table, and anything else a single “Content” column.
Tips and best practices
Include the header line
The first row always becomes the header. Copy the column titles with the data, or type them above the data before pasting.
Prefer copying cells over saving a CSV
Cells copied from Excel or Sheets keep each value in its own cell, including text with commas or line breaks, so there is no delimiter to guess.
Use a dedicated page for ambiguous text
Semicolon files with decimal commas (1,5) are detected when every line has the same number of semicolons. If a line is ragged, replace the semicolons with tabs, or export the data as TSV.
Common problems and fixes
Everything ended up in one column
Cause: The text has no tabs, commas, pipes or semicolons, for example columns lined up with spaces.
Fix: Save or copy the data as tab- or comma-separated, or replace the runs of spaces with tabs.
Normal text was split into columns at the commas
Cause: Two or more lines with the same number of commas look like CSV.
Fix: For a bullet list or sentences, use the Table from Text page, which treats lines starting with “- ” as list items.
A semicolon file with decimal commas splits in the wrong places
Cause: Semicolons are chosen when at least two lines have the same number of them; a ragged file falls back to commas.
Fix: Give every line the same number of semicolons, replace them with tabs, or re-export the file with commas as the delimiter.
The first data row became the header
Cause: The first line is always used as the header.
Fix: Type header names into a new first line before pasting.
Platform compatibility
| Platform | Support | Notes |
|---|---|---|
| Excel, Sheets, LibreOffice | Supported | Copied cells keep their boundaries, and values appear as the spreadsheet displays them. |
| Web pages, Word, Google Docs | Supported | A selected table keeps its links, images, bold, italic and code as Markdown. |
| GitHub & GitLab | Supported | The GFM output renders in READMEs, issues, PRs and wikis. |
| Obsidian | Supported | Renders in Reading view and Live Preview. |
| CommonMark core | Extension | Tables are not part of core CommonMark 0.31.2; the renderer needs a GFM table extension. |
Frequently asked questions
How do I convert any table to Markdown?
Paste it into the box above or upload the file. The format is detected, the Markdown table is generated as you paste, and you click Copy Markdown to use it. The first row of the data becomes the table header.
Which formats can it detect?
HTML tables, JSON (arrays, wrapper objects, JSON Lines), mysql/psql/sqlite3 table output, Markdown tables, tab-separated text, comma-separated text, semicolon-separated text, “Key: Value” lines and bullet lists. Cells copied from Excel, Google Sheets, LibreOffice, Word or a web page are read from the clipboard’s HTML table.
How does the format detection work?
It checks in order for an HTML table, JSON, SQL border lines, Markdown pipes, tabs on at least 70% of lines, and comma- or semicolon-separated lines (at least two lines with the same number of delimiters, or quoted fields). The first rule that matches wins, and the badge above the box shows the result.
Why was my text split at the commas?
Two or more lines with the same number of commas look like CSV, so such text is split at the commas. A single sentence with commas is left as one cell. For a bullet list or “Key: Value” lines, use the Table from Text page, which is built for them.
Can I paste a table copied from a website or Word?
Yes. The cell boundaries come through from the clipboard, and line breaks inside cells become <br>. Links, images, bold, italic and code are kept as Markdown; merged cells are repeated (colspan) or left blank (rowspan). The Web Table to Markdown page adds options for footnote markers and merged cells.
Can I upload an Excel file or a CSV?
Yes. Upload file accepts .xlsx, .xls, .ods, .csv, .tsv, .json, .html, .md and .txt, and you can drop a file on the box. Cells from workbooks are taken as Excel displays them, and a workbook with several sheets shows a sheet picker.
What if the data has no header row?
The first line is always used as the header, because GFM tables require one. Type header names into a new first line before pasting, or rename the headers in Edit grid and add the first row back.
Is my data uploaded anywhere?
No. Detection, parsing and conversion run in your browser, and uploaded files are read locally. A draft is saved in your browser’s local storage so a reload does not lose it.