Skip to content

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.

Paste any table or upload a file

Sample data shown — paste or drop your own to replace it.

Converts as you type. The format is detected automatically.
Output
| ID  | Product Name            | Category    | Price   | Status    |
| --- | ----------------------- | ----------- | ------- | --------- |
| 1   | Mechanical Keyboard Pro | Hardware    | $129.99 | In Stock  |
| 2   | USB-C Multiport Hub     | Accessories | $45.00  | In Stock  |
| 3   | Ergonomic Mouse         | Hardware    | $79.50  | Low Stock |
| 4   | UltraWide 4K Monitor    | Hardware    | $649.00 | In Stock  |
4 rows × 5 columns
Rendered Preview
IDProduct NameCategoryPriceStatus
1Mechanical Keyboard ProHardware$129.99In Stock
2USB-C Multiport HubAccessories$45.00In Stock
3Ergonomic MouseHardware$79.50Low Stock
4UltraWide 4K MonitorHardware$649.00In Stock

How to convert any table to Markdown in 3 steps

  1. 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.

  2. 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.

  3. Copy the Markdown

    Click Copy Markdown and paste it into GitHub, GitLab, Obsidian or any Markdown file, or download it as .md.

Example

Semicolon-separated text (format detected)
Region;Units;Revenue
North;1240;48360.00
South;980;35280.50
West;1515;52995.50
Markdown table
| 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 other formats to Markdown

Convert Markdown to…

Browse all 36 tools

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

PlatformSupportNotes
Excel, Sheets, LibreOffice SupportedCopied cells keep their boundaries, and values appear as the spreadsheet displays them.
Web pages, Word, Google Docs SupportedA selected table keeps its links, images, bold, italic and code as Markdown.
GitHub & GitLab SupportedThe GFM output renders in READMEs, issues, PRs and wikis.
Obsidian SupportedRenders in Reading view and Live Preview.
CommonMark core ExtensionTables 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.