Markdown Table to HTML Converter
Paste a Markdown table and copy HTML <table> code with thead/tbody and align attributes, with cell text escaped.
Sample data shown — paste or drop your own to replace it.
How to convert a Markdown table to HTML in 3 steps
Paste the Markdown table
Paste it into the Paste Markdown box (CSV, TSV, JSON and HTML tables are detected too), or upload a file. If the text holds several tables, the first one is converted.
Check the HTML
The HTML tab on the right is already selected and updates as you type. The preview below it shows the rendered table. Use Edit grid to change cells or alignment.
Copy the HTML
Click Copy HTML and paste it into your page, CMS HTML block or template, or open Download for an .html file.
Example
| Plan | Uptime | Price | | :--- | :---: | ---: | | Starter | 99.5% | $9 | | Team & Co | 99.9% | $29 | | Enterprise | 99.99%<br>(SLA) | **Custom** |
<div class="table-responsive overflow-x-auto">
<table class="markdown-table min-w-full border-collapse">
<thead>
<tr>
<th class="border px-4 py-2 bg-gray-50 text-left font-semibold" align="left">Plan</th>
<th class="border px-4 py-2 bg-gray-50 text-left font-semibold" align="center">Uptime</th>
<th class="border px-4 py-2 bg-gray-50 text-left font-semibold" align="right">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td class="border px-4 py-2" align="left">Starter</td>
<td class="border px-4 py-2" align="center">99.5%</td>
<td class="border px-4 py-2" align="right">$9</td>
</tr>
<tr>
<td class="border px-4 py-2" align="left">Team & Co</td>
<td class="border px-4 py-2" align="center">99.9%</td>
<td class="border px-4 py-2" align="right">$29</td>
</tr>
<tr>
<td class="border px-4 py-2" align="left">Enterprise</td>
<td class="border px-4 py-2" align="center">99.99%<br>(SLA)</td>
<td class="border px-4 py-2" align="right">**Custom**</td>
</tr>
</tbody>
</table>
</div>Options explained
- Paste Markdown box
- Converts 150 ms after you stop typing, and immediately on paste. The badge shows the detected format. Only the first table in the text is used.
- Upload file
- Reads a .md, .csv, .tsv, .json, .html, .txt or Excel file from your computer without uploading it anywhere..md · .csv · .tsv · .json · .html · .txt · .xlsx · .xls · .ods
- Paste / Sample / Clear
- Paste reads the clipboard, Sample loads an example Markdown table, Clear empties the box.
- Edit grid / Markdown tabs
- Fix cells, rename headers or set column alignment, which becomes the align attribute in the HTML. The Markdown tab shows the source and stays in sync.
- 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
- Output tabs
- This page opens on HTML. The same table can be switched to Markdown, CSV, TSV, JSON, LaTeX, SQL or Jira. Flavor, Spacing and Collapsible <details> appear on the Markdown tab only and do not change the HTML.HTML (selected) · Markdown · CSV · TSV · JSON · LaTeX · SQL · Jira
- Copy HTML
- Copies exactly what the output box shows: the wrapper div, the table with its classes, thead, tbody and align attributes.
- Download
- Saves the active tab as table.html, or the table as an Excel workbook, a CSV file or a PNG image..html · .xlsx · .csv · .png
- Copy link
- Copies a URL that reopens this table. The table is stored after #md= in the link, which browsers do not send to a server.
Convert to and from other formats
Also useful
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 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.
Convert to Markdown from…
- 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.
- Universal Table to MarkdownPaste anything tabular; the format is detected for you.
About this tool
Paste a Markdown table and copy a standard HTML table: <thead> and <tbody>, <th> header cells, align attributes from your column alignment, and a scrolling wrapper div. Cell text is escaped so characters like & and < cannot break the markup, and a <br> in a cell stays a line break. The output has no inline styles but does carry Tailwind-style class names, so remove them if your site does not use them. Inline Markdown in cells (bold, links, code) is not converted. Everything runs in your browser.
- Real <thead>/<tbody> table with <th> header cells
- Column alignment written as align="left|center|right"
- Cell text escaped: & < > " cannot break the markup
- <br> in a cell stays a line break
- Wrapper div with overflow-x-auto for wide tables
- No inline styles; Tailwind-style class names on each element
- Edit cells and alignment before copying
- Runs in your browser; the table is not uploaded
Technical details
What the generated HTML looks like
The tool writes a standard HTML table: a <div class="table-responsive overflow-x-auto"> wrapper, then <table> with <thead> (one row of <th> cells) and <tbody> (one <tr> per row). There are no inline style attributes. Each element carries utility class names (Tailwind CSS style, such as border px-4 py-2) so it looks reasonable on sites that use them.
- Alignment: A column aligned in Markdown (:--- :---: ---:) gets align="left", "center" or "right" on its <th> and every <td>. The align attribute is obsolete in HTML5 but browsers still honor it; replace it with CSS text-align if you need valid modern markup.
- Escaping: Cell text has & < > and " converted to & < > ", so text like a<b or Tom & Jerry is shown literally and HTML typed into a cell is not interpreted.
- Line breaks: A <br> in a Markdown cell is kept as a real <br>. This is the only HTML tag that passes through.
- No inline Markdown: **bold**, *italic*, `code` and [links](https://example.com) are not converted; they appear as the literal characters. Edit the HTML afterwards if you need <strong> or <a>.
- Classes: The wrapper, table, th and td classes are fixed. They do nothing without matching CSS; delete them or style them yourself on sites that do not use Tailwind.
- Header: A table with a header row gets <thead>; a headerless table (delimiter row first) gets only <tbody>.
- Pipes: A pipe written as \| in Markdown comes out as a plain | in the HTML.
Tips and best practices
Remove the classes if your site does not use Tailwind
Search and replace the regular expression class="[^"]*" (with its leading space) with nothing in your editor to get plain <table> markup, then style it with your own CSS.
Inline the CSS for email
Many email clients ignore class names and the generated HTML has no inline styles, so add style attributes (or run it through an inliner) before sending.
Add scope and a caption for accessibility
The output has no <caption> or scope attributes. Add <caption> after the opening <table> tag and scope="col" on the <th> cells if the table needs to be announced properly by screen readers.
Common problems and fixes
Bold, links or code in my cells show up as raw Markdown
Cause: Cell text is escaped and inline Markdown is not converted to HTML.
Fix: Replace them in the HTML, for example **x** with <strong>x</strong>, or render the whole Markdown with a Markdown processor instead.
The table has no borders or padding on my site
Cause: The classes are Tailwind-style utilities, and your site does not include them.
Fix: Add your own CSS for table, th and td, or load Tailwind. The wrapper and table also have the hooks table-responsive and markdown-table.
Only the first of several tables was converted
Cause: The converter reads one table at a time.
Fix: Paste each table separately, or copy just the table you want.
HTML I typed in a cell appears as text
Cause: Cell content is escaped on purpose, so it cannot inject markup. Only <br> is kept.
Fix: Edit the generated HTML by hand where you need tags such as <a> or <strong>.
Platform compatibility
| Platform | Support | Notes |
|---|---|---|
| Tailwind CSS sites | Supported | The utility classes (border, px-4, py-2, bg-gray-50) style the table as generated. |
| Bootstrap | Supported | The wrapper’s table-responsive class gives horizontal scrolling; add class="table" to the table for Bootstrap’s table styles. |
| WordPress and other CMS HTML blocks | Supported | Paste into a Custom HTML or code-view block. Without matching CSS the table shows with the theme’s default table styles. |
Frequently asked questions
How do I convert a Markdown table to HTML?
Paste the Markdown table into the box above. The HTML tab on the right is already selected and updates as you type; click Copy HTML and paste it into your page. Header cells go into <thead> and the other rows into <tbody>.
Does it convert bold, italic, links and code inside cells?
No. Cell text is escaped, so **bold** and [text](https://example.com) appear as literal characters in the HTML. Only <br> is kept as a line break. Replace the rest by hand, for example **x** with <strong>x</strong>.
Is the column alignment kept?
Yes. A column aligned with :--- :---: or ---: gets align="left", align="center" or align="right" on its header and every cell. The align attribute is obsolete in HTML5 though browsers still honor it; use CSS text-align if you need valid modern markup.
What are the class names in the output?
The wrapper div, table, th and td carry Tailwind-style utility classes (such as border px-4 py-2) plus the hooks table-responsive and markdown-table. They do nothing without matching CSS. Delete them with a search and replace of class="[^"]*" if your site does not use Tailwind.
Does the HTML include inline styles, or work in email?
There are no inline style attributes. Many email clients ignore class names, so for email add inline styles (or run the HTML through a CSS inliner) before sending.
Is the output safe to paste into a CMS?
Cell text is escaped (& < > and "), so text typed in a cell cannot add tags or scripts. The markup itself is a plain table inside a div, which WordPress and most CMS HTML or code blocks accept.
Can I convert several Markdown tables at once?
No. Only the first table in the pasted text is converted. Paste each table on its own to get HTML for the others.
Can I convert a whole Markdown document to HTML here?
No. This page converts one table. Headings, paragraphs and lists are not rendered, and text outside the table is ignored. Use a Markdown processor for full documents.