UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

Markdown Table Generator

Create markdown tables with custom size/alignment

About Markdown Table Generator

Markdown tables are supported in GitHub READMEs, Notion pages, Obsidian notes, and Discord — but typing them by hand is miserable. Aligning pipes, counting dashes, and maintaining column widths quickly becomes error-prone. The Markdown Table Generator replaces that with a visual grid: click a cell, type, and Tab to the next. Column alignment is set with a single click and the tool writes the correct :--, :-:, or --: divider syntax. A live HTML preview renders the table as it will appear in GitHub so you catch issues before pasting. Tab-separated data from Excel or Google Sheets drops straight into the grid, eliminating manual transcription. Adding or removing rows and columns after you start works without destroying existing content. Output follows the GitHub Flavoured Markdown spec and renders in GitHub, Notion, Obsidian, and Discord.

Why use Markdown Table Generator

Visual Grid Editor

Click a cell, type, and Tab to the next — the grid behaves like a tiny spreadsheet that outputs Markdown instead of formulas. No counting pipes, no manual alignment, and no retyping the whole table when you add a column.

Per-Column Alignment

Set left, centre, or right alignment per column with a single click. The tool writes the correct :--, :-:, or --: separator syntax automatically, matching the GitHub Flavoured Markdown specification every time.

Live Preview

An HTML render of the table appears side-by-side as you type, showing exactly how it will look in GitHub, Notion, or Obsidian before you paste. Catch awkward column widths and content alignment issues immediately.

Resize Without Retyping

Add or remove rows and columns on the fly after you have already entered content. Existing data shifts intelligently into the new layout instead of disappearing or requiring you to start from scratch.

Paste from CSV or Excel

Tab-separated clipboard data from Excel or Google Sheets — copy a cell range and paste it directly into the grid — populates every cell automatically. No manual transcription, no formula cleanup, and no column realignment required.

GFM-Compatible Output

The output follows the GitHub Flavoured Markdown specification and renders correctly in GitHub PRs and wikis, Gitea, Bitbucket, Notion, Obsidian, and Discord — the six platforms developers and technical writers use most.

How to use Markdown Table Generator

  1. Choose the initial table dimensions: number of rows and columns (e.g. 3 rows by 4 columns)
  2. Click any cell and type content; use Tab or Arrow keys to move between cells
  3. Click a column header button to cycle through left, centre, and right alignment for that column
  4. Add or remove rows and columns at any time using the + and − buttons without losing existing content
  5. Watch the live HTML preview update below the grid to see how the table will render
  6. Copy the generated Markdown source and paste it into your README, pull request, or documentation

When to use Markdown Table Generator

  • Writing a comparison table in a GitHub README (pricing plans, feature matrix, API endpoints) without hand-typing pipes
  • Adding a structured table to a pull request description to document a breaking change or migration guide
  • Building a reference table in Notion, Confluence, or Obsidian from data that already exists in a spreadsheet
  • Creating a data table for a technical blog post written in Markdown without needing a rich-text editor
  • Generating a quick scorecard or decision matrix for a team meeting in a Discord channel that supports Markdown
  • Turning a tab-separated Excel or Google Sheets selection into formatted Markdown in seconds

Examples

Pricing comparison table

Input: Grid: 4 cols (Plan, Price, Users, Storage) × 4 rows, right-align Price/Users/Storage

Output: | Plan | Price | Users | Storage | | :--- | ----: | ----: | ------: | | Free | $0 | 1 | 5 GB | | Pro | $12 | 5 | 50 GB | | Team | $49 | 25 | 500 GB |

Centre-aligned headers

Input: Grid: 3 cols (Status, Owner, ETA), centre-align all

Output: | Status | Owner | ETA | | :----: | :---: | :-: | | Done | Ada | — | | Open | Alan | Fri | | Blocked | Grace | TBD |

Pasted Excel data

Input: Tab-separated paste: Name Commits PRs ada 142 18 alan 98 11

Output: | Name | Commits | PRs | | ---- | ------- | --- | | ada | 142 | 18 | | alan | 98 | 11 |

Tips

  • To put a literal pipe character inside a cell, escape it as \| — most GFM renderers handle this correctly.
  • Markdown tables do not support multi-line cells; use <br> for soft breaks if your renderer (GitHub, Notion) accepts inline HTML in table cells.
  • Padding cells to equal widths in the raw source does not affect rendering but makes the Markdown easier to diff in pull requests.
  • Right-align numbers, left-align text, and centre-align statuses — that is the convention most readers expect in data tables.
  • If your table has more than roughly 6 columns, consider whether a definition list or two stacked narrower tables would be more readable — wide tables collapse badly on mobile.

Frequently Asked Questions

How do I right-align a column in a Markdown table?
Click the alignment button in the column header and cycle to right alignment. The tool writes the --: syntax in the separator row automatically. Right alignment is conventionally used for numeric columns like prices, counts, and percentages.
Can I paste data from Excel or Google Sheets?
Yes. Copy a range of cells in Excel or Google Sheets (Ctrl+C) and paste into the grid. The tab-separated clipboard content is split into rows and columns automatically. The first row can be used as the header row.
Will this output render correctly in GitHub PRs?
Yes. The output follows the GitHub Flavoured Markdown (GFM) table specification. It renders correctly in GitHub pull request descriptions, issue comments, README files, and GitHub wiki pages.
How do I include a pipe character | inside a cell?
Escape the pipe as \| in the cell content. Most GFM renderers (GitHub, Gitea, Notion, Obsidian) handle escaped pipes correctly and display them as a literal | character in the rendered table.
Does it support multi-line cell content?
Standard Markdown table cells are single-line. If your renderer supports inline HTML (GFM, Notion), you can use <br> for a soft break inside a cell. The generator does not add <br> automatically but you can type it directly.
Why are my columns misaligned in the source even though they render fine?
Markdown tables do not require padded column widths to render correctly — the pipe positions only need to be consistent per row. Misalignment in the raw source is cosmetic only. The live preview shows the rendered result, which is what readers see.
Can I add or remove columns after I've started typing?
Yes. The + and − buttons on the column and row controls add or remove a row or column at any time. Existing content shifts into the updated layout without being erased.
Does the syntax work in Notion, Obsidian and Discord?
Yes. Notion, Obsidian, and Discord all support GFM-compatible pipe tables. Alignment syntax (:--, :-:, --:) is supported in GitHub, Gitea, Obsidian, and Notion. Discord renders the table structure but may ignore alignment markers.

Explore the category

Glossary

GitHub Flavoured Markdown (GFM)
A dialect of Markdown maintained by GitHub that adds support for tables, task lists, strikethrough, and fenced code blocks. GFM tables are the most widely supported table syntax across documentation and collaboration tools.
Pipe table
The standard Markdown table syntax that uses | characters to separate cells and a separator row of dashes to divide the header from the data rows. The alignment of colons in the separator row controls text alignment.
Column alignment
The text alignment setting for a table column, controlled by the position of : characters in the separator row. :-- is left, :-: is centre, and --: is right alignment.
Cell padding
Optional spaces added around the content of each cell in the raw Markdown source to make the table visually aligned when reading the source file. Padding is cosmetic and does not affect rendering.
Header separator
The row of dashes and optional colons that separates the header row from the data rows in a Markdown pipe table. This row is required — without it, the table is not recognised as a table by most Markdown parsers.
Escape character
A backslash (\) placed before a special Markdown character to prevent it from being interpreted as syntax. Inside table cells, \| produces a literal pipe character instead of a column separator.