Markdown Table Generator
Fill in a grid, click the alignment you want, and copy clean Markdown table syntax. Nothing is uploaded — the whole editor runs in your browser.
How do you create a table in Markdown?
A Markdown table is built from pipe characters and one row of dashes. Write the header cells between pipes, add a separator row of dashes beneath it, then list one row of data per line. Colons in the separator row set column alignment. GitHub, GitLab, Obsidian and most static site generators render it automatically.
| Name | Role | Commits |
| :---- | :--------: | ------: |
| Ada | Engineer | 128 |
| Grace | Maintainer | 64 |Renders a three-column table with Name left-aligned, Role centred and Commits right-aligned, and the first row styled as a bold header.
Try the Markdown Table Generator
Table editor
Preview
| Markdown Tool | Description | Complexity | Usage |
|---|---|---|---|
| Markdown Table Generator | Create and customize tables | Medium | Documentation, Data |
| Markdown Preview | Real-time rendering | Low | Content writing |
| Markdown to HTML | Convert markdown to HTML | Medium | Web publishing |
| Markdown Cheatsheet | Quick syntax reference | Low | Learning |
Generated Markdown Table
Markdown table syntax explained
Tables come from GitHub Flavored Markdown rather than the original spec, so the rules are stricter than for most Markdown features. Two rows are mandatory — the header and the dashes underneath it — and every row must contain the same number of columns.
Basic table structure
Pipes divide the columns; a separator row of at least three dashes turns the first line into a header. The dashes do not have to line up with the text above them — the renderer only counts columns, so ragged raw source still produces a tidy table.
| Package | Version | Status |
| --- | --- | --- |
| next | 16.0.1 | stable |
| react | 19.2.0 | stable |Renders a three-column table with Package, Version and Status as bold header cells and two data rows beneath them.
Column alignment with colons
Colons in the separator row control how each column is aligned. Left is the default, so :--- and --- behave identically; centre and right need the extra colon. Right alignment is the convention for numeric columns.
| Item | Qty | Price |
| :------- | :-: | -----: |
| Keyboard | 2 | 89.00 |
| Monitor | 1 | 249.50 |Item stays left-aligned, Qty is centred and Price is right-aligned, so the decimal points line up down the column.
Escaping pipes inside a cell
A raw pipe splits the cell in two. Escape it with a backslash, or use the HTML entity | when the pipe sits inside inline code, where backslash escapes are not processed.
| Command | Meaning |
| --- | --- |
| a \| b | a or b |
| `grep x | wc -l` | count matches |Both rows keep exactly two columns; the pipe characters show up as literal text inside the cells instead of creating a third column.
Formatting and line breaks inside cells
Cells accept inline Markdown — bold, italic, links, images and inline code all work. Block-level content does not, so use a <br> tag when a cell needs a second line.
| Option | Notes |
| --- | --- |
| `--watch` | **Recommended.**<br>Rebuilds on save. |
| `--quiet` | Hides progress output. |The first Notes cell shows bold text with a second line underneath it; the option names render as inline code.
Tables without a header row
GitHub Flavored Markdown always requires the header and separator rows, but the header cells themselves may be left empty. Do that when the table is a layout grid rather than labelled data.
| | |
| ----- | -------- |
| Ada | Engineer |
| Grace | Compiler |Renders a two-column table with a visually blank header strip above two data rows. Most renderers still reserve the header row's height.
Merged cells via HTML
Markdown has no rowspan or colspan. When you genuinely need merged cells, drop an HTML table into the document — GitHub, GitLab and most static site generators render inline HTML inside Markdown files.
<table>
<tr><th colspan="2">Environment</th></tr>
<tr><td>Node</td><td>22.x</td></tr>
<tr><td>pnpm</td><td>10.x</td></tr>
</table>Produces one header cell spanning both columns followed by normal two-column rows. Markdown syntax inside the HTML block is not processed.
Where Markdown tables render
Because table syntax belongs to GitHub Flavored Markdown and not to CommonMark, support is excellent on developer platforms and effectively absent in chat apps.
| Platform | Support | Notes |
|---|---|---|
| GitHub / GitLab | Full | Renders in READMEs, issues, pull requests, wikis and release notes, with all three alignments. |
| Obsidian | Full | Renders GFM tables and ships a built-in table editor that preserves alignment. |
| VS Code | Full | The built-in Markdown preview renders tables; a formatter extension keeps the raw pipes tidy. |
| Notion | Partial | Pasting table syntax creates a native Notion table; the raw pipes are not kept as text. |
| Full | Supported in the Markdown editor; the rich-text editor builds tables from its toolbar instead. | |
| Discord | None | Messages do not render tables. Wrap the table in a code block so the columns stay lined up. |
| Slack | None | No table syntax at all. Post the table as a code block, a snippet, or an image. |
How to build a Markdown table with this generator
Set the table size
Enter how many rows and columns you need, then press Apply. Cell content you already typed is preserved whenever the grid grows.
Fill in the cells
Type straight into the grid. The top row is the header row and renders in bold once the table is published.
Choose column alignment
Use the L, C and R buttons under each header cell to align that column left, centre or right. The separator row updates as you click.
Edit the raw Markdown (optional)
Switch to the code editor to paste an existing table or hand-tune the syntax. Your edits are parsed straight back into the visual grid.
Copy or export
Copy the generated Markdown to the clipboard, or download it as a .md file that you can drop into a README.
Frequently Asked Questions
How do I create a table in Markdown?
Write your header cells between pipe characters, put a separator row of dashes underneath, then add one data row per line. The smallest working example is | Name | Role | on the first line, | --- | --- | on the second, and | Ada | Engineer | on the third. The generator above assembles all of that for you.
How do I align text in a Markdown table?
Add colons to the separator row: :--- for left, :---: for centre and ---: for right. Left is the default, so plain --- and :--- render identically. Alignment is set per column and applies to the header cell as well as every data cell below it.
Do Markdown tables work on GitHub?
Yes. Tables are part of GitHub Flavored Markdown and render in README files, issues, pull requests, discussions, wikis and release notes. All three column alignments are supported, and cells accept inline formatting such as bold text, links and inline code.
Can I create a Markdown table without a header?
Not in standard GitHub Flavored Markdown, because the header and separator rows are both required. The usual workaround is to leave the header cells empty, which produces a blank strip above the data. For a genuinely header-free grid, use an HTML table instead.
Can I merge cells in a Markdown table?
No. Markdown tables have no equivalent of rowspan or colspan, and every row must contain the same number of columns. If you need merged cells, write an HTML table with colspan or rowspan attributes — GitHub and most static site generators render it inside a Markdown file.
How do I convert CSV data into a Markdown table?
Switch to the code editor, paste the CSV, then replace each comma with a pipe character and insert a row of dashes below the first line. The preview updates as you type, so a row that split incorrectly is obvious immediately. You can also load an existing .md or .txt file with the import button.
Can I convert a Markdown table to Excel?
Yes, indirectly. Replace the pipes with commas, delete the dashes row, and save the file with a .csv extension, which Excel and Google Sheets open directly. Selecting the rendered table in a browser preview and pasting it into a spreadsheet also keeps the column structure.
Do Markdown tables work in Slack or Discord?
Neither app renders them. Slack has no table syntax at all, and Discord ignores pipe tables in messages. The standard workaround is to wrap the table in a triple-backtick code block so the columns stay aligned in a monospaced font, or to share a screenshot instead.
How do I make a table of contents in Markdown?
List one link per heading and point each link at the heading's anchor, for example a bullet reading Installation linking to #installation. GitHub creates those anchors automatically by lowercasing the heading text and replacing spaces with hyphens. A single-column table works too if you want a boxed look.
Why is my Markdown table not rendering?
The three usual causes are a missing separator row of dashes under the header, rows that contain a different number of columns than the header, and a missing blank line before the table when it directly follows a paragraph. Unescaped pipe characters inside a cell also split that row into extra columns.