Markdown Table Generator
Make a Markdown table in a spreadsheet-style grid, set column alignment, and copy Markdown that renders on GitHub.
Paste cells from Excel or Google Sheets into the first header to replace the table · Tab / Enter / arrows move · Shift+F10 opens row & column actions
How to make a Markdown table in 3 steps
Pick a size or a starting point
Click the size button (it shows rows × columns, e.g. 3×3) and choose a size, or open Templates or Mock data. You can also paste cells from Excel or Google Sheets into the grid.
Type in the grid
Click a cell and type. Tab moves right and Enter moves down; both add a row when you reach the end. Open a column’s ▾ menu to align it left, center or right.
Copy the Markdown
The output updates on every keystroke. Click Copy Markdown and paste it into your README, issue or notes, or use Download for .md, .xlsx, CSV or PNG.
Example
Plan Price Seats Free $0 1 Team $12 10 Business $40 Unlimited
| Plan | Price | Seats | | :------- | ----: | :-------: | | Free | $0 | 1 | | Team | $12 | 10 | | Business | $40 | Unlimited |
Options explained
- Size (rows × columns)
- Starts a new blank table: hover the matrix, click a preset, or enter exact rows and columns and pick header names. On phones, the Rows and Columns steppers resize the current table and keep your data.Presets 2×2 to 10×5 · up to 100 rows × 50 columns · headers: Col 1, 2… / A, B, C… / Field_1, 2…
- Templates
- Loads a ready-made table you can edit (API endpoints, SaaS pricing, tech stack, sprint backlog and more). “Convert a bullet list / text” turns pasted lines into rows, splitting on tabs, pipes, commas, semicolons or colons.7 templates
- Mock data
- Fills the grid with realistic sample rows, useful for testing a layout or a renderer.Users & Contacts · E-Commerce Inventory · Cloud / Server Nodes · Financial & Assets · 3, 5, 10 or 15 rows
- Tools
- One-click changes to the whole table: header case, auto-align (numbers right, short status values centered, text left), transpose, and quick or deep clean.UPPER · lower · Title Case · Auto-align · Transpose · Quick clean · Deep clean
- Cell toolbar
- Wraps the selected text in Markdown: bold, italic, inline code, strikethrough or a link, or inserts a status badge. The Rich/Raw toggle shows cells rendered or as raw Markdown.Shortcuts: Ctrl/⌘+B, I, E, K · Ctrl/⌘+Shift+X (strike) · Ctrl/⌘+D (duplicate row) · Alt+↑/↓ (move row)
- Column menu (▾)
- Per-column actions: set alignment, sort the rows A → Z or Z → A by this column, insert a column left or right, move, duplicate or delete it.
- Flavor
- Output syntax. GFM is right for GitHub, GitLab, Obsidian and most editors. MultiMarkdown and Pandoc Pipe currently produce the same pipe table as GFM; reStructuredText writes a simple table and Org-mode an Org table.GitHub Flavored (default) · MultiMarkdown · Pandoc Pipe · reStructuredText · Org-mode
- Spacing
- Padded lines the pipes up in a code editor; Compact removes the padding; No outer pipes drops the leading and trailing | (Prettier style). All three render the same.Padded (default) · Compact · No outer pipes
- Collapsible <details>
- Wraps the table in <details><summary> so long tables start collapsed on GitHub.Off by default
- Credit comment
- Appends an HTML comment crediting markdowntables.com. It is invisible when rendered.Off by default
- Output format
- Tabs above the output switch the same table to another format without re-entering it.Markdown · HTML · CSV · TSV · JSON · LaTeX · SQL · Jira
- Download
- Saves the active format as a file, or the table as an Excel workbook, CSV or a PNG image..md (or active format) · .xlsx · .csv · .png
- Copy link
- Copies a URL that reopens this table. The table is stored after #md= in the link, a part of the URL browsers do not send to the server.
Related tools
Also useful
Next steps
- Markdown Table FormatterAlign columns and pad cells so the raw table is readable.
- Markdown Table ValidatorFind broken delimiter rows, column mismatches and unescaped pipes.
- Markdown Table SorterSort rows alphabetically or numerically by any column.
- Markdown Table TransposeSwap rows and columns.
- Markdown Table EditorPaste an existing Markdown table and edit cells visually.
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.
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.
About this tool
Type your table into the grid and the generator writes the Markdown for you: the header row, the delimiter row with alignment colons, escaped pipes and padded columns. Start from a blank size, one of seven templates or mock data, or paste cells straight from a spreadsheet. The same table can be copied as HTML, CSV, JSON, LaTeX, SQL or Jira markup, or downloaded as an Excel file or PNG.
- Spreadsheet-style grid: Tab and Enter add rows as you type
- Column alignment written as :---, :---: and ---:
- Pipes in cells escaped as \| automatically
- Paste cells from Excel or Google Sheets into the grid
- 7 templates and a mock-data generator
- Export Markdown, HTML, CSV, JSON, LaTeX, SQL, Jira, .xlsx or PNG
- Undo/redo, draft autosave and shareable links
- Runs in your browser; table contents are not uploaded
Technical details
What the generated Markdown looks like
The generator writes a GitHub Flavored Markdown (GFM) pipe table: a header row, a delimiter row, then one line per row, with cells separated by |. Tables are a GFM extension, not part of core CommonMark (spec 0.31.2), so any renderer that supports GFM tables (GitHub, GitLab, Obsidian, VS Code preview, remark-gfm, markdown-it) shows the output the same way.
- Header row: The first grid row is always the header. GFM tables cannot be headerless; leave the header cells blank if you do not want visible titles.
- Delimiter row: One cell per column with at least three hyphens; colons set alignment (:--- left, :---: center, ---: right, --- default).
- Escaped pipes: A | typed in a cell is written as \|. That includes pipes inside backticks, because GFM splits cells on | even in code spans.
- Line breaks: Type <br> where you want a break. A real newline would end the row, so pasted multi-line text is converted to <br> too.
- Padding: Padded output adds spaces so the pipes line up in a monospace editor. Renderers ignore the padding, so it only affects the source.
Common problems and fixes
The pasted table shows up as plain text
Cause: The table is indented four or more spaces (so it becomes a code block), sits inside a fenced code block, or follows a paragraph with no blank line in a renderer that requires one.
Fix: Paste it at the start of a line with a blank line before and after. GitHub renders a table right after a paragraph, but many other renderers and linters (markdownlint MD058) expect the blank line.
I need merged cells, a multi-line list or a heading inside a cell
Cause: GFM tables have no colspan or rowspan, and each cell holds inline content only.
Fix: Use <br> for line breaks and inline HTML such as <ul><li> for short lists. For merged cells, switch to an HTML <table> with colspan/rowspan, which GitHub renders.
Columns shift after editing the Markdown by hand
Cause: A | was added inside a cell without a backslash, so the renderer saw an extra column.
Fix: Write it as \|, or paste the table back into the grid and copy it again; the generator escapes pipes for you.
Platform compatibility
| Platform | Support | Notes |
|---|---|---|
| GitHub & GitLab | Supported | Pipe tables with alignment, <br> and inline HTML such as <sub>, <sup> and <kbd> render in READMEs, issues, PRs and wikis. |
| Obsidian | Supported | Renders in Reading view and Live Preview. |
| Notion | Supported | Paste the Markdown and Notion converts it into a simple table. |
| GitHub Pages (Jekyll) | Supported | Built with Kramdown, not GFM, but pipe tables and alignment colons work. |
| CommonMark core | Extension | Tables are not in core CommonMark 0.31.2; the renderer needs a GFM table extension. |
Frequently asked questions
How do I make a table in Markdown?
Write a header row, then a delimiter row of hyphens, then one line per row, separating cells with pipes: "| Name | Role |", "| --- | --- |", "| Ada | Engineer |". Each delimiter cell needs at least one hyphen (three is the convention) and the header and delimiter rows must have the same number of cells. The generator above writes all of this for you as you type.
Can I merge cells in a Markdown table?
No. GitHub Flavored Markdown has no colspan or rowspan. If you need merged cells, write the table in HTML with colspan/rowspan attributes (GitHub, GitLab and Obsidian render it), or use MultiMarkdown, which spans a cell across columns with ||. Our Merged cells page under Syntax shows each option.
How do I add a line break in a table cell?
Type <br> where the line should break, for example "First line<br>Second line". A real newline ends the table row, so Markdown tables need the HTML tag. GitHub, GitLab, Obsidian and VS Code preview all render <br> inside cells.
Does the table work in GitHub, Obsidian and Notion?
Yes. The default GFM output renders in GitHub and GitLab READMEs, issues and wikis, and in Obsidian Reading view and Live Preview. Pasting it into Notion converts it into a simple table. Discord and Slack messages do not render Markdown tables; use the Unicode box style in the Formatter and send it inside a code block.
How do I right-align or center a column?
Open the ▾ menu on the column header and pick the alignment. The delimiter row then shows ---: for right, :---: for center and :--- for left. Tools › Auto-align does it for every column at once (numbers right, short status values centered).
How do I put a pipe character | inside a cell?
Type it normally. The generator writes it as \| so it does not split the cell, including inside backticks, where GitHub would otherwise still treat it as a column break.
Can I paste data from Excel or Google Sheets?
Yes. Copy the cells, click a cell in the grid and paste. When the grid is blank or still shows the sample, the first pasted row becomes the header and the grid resizes to fit; otherwise the cells are pasted from the cell you clicked.
Is the generator free, and is my table private?
It is free with no signup. The table is built in your browser and not uploaded; a draft is kept in your browser’s local storage so it survives a reload (the restore notice has a Start blank button to discard it). Copy link stores the table in the part of the URL after #, which browsers do not send to the server.