Markdown Table Generator

Markdown Table Generator

Create and edit Markdown tables visually. Import from CSV/Excel. Free online Markdown table maker with alignment options

A markdown table looks trivial — pipes and dashes — until you need 12 columns with mixed alignment, escape a literal pipe inside a cell, or convert a 200-row CSV. Hand-writing the dashes-and-pipes lattice is mechanical and error-prone. This generator builds GFM-compatible tables from cells you edit visually, imports from CSV / TSV / JSON, supports column alignment, and emits both Markdown table syntax and the HTML fallback for renderers that do not understand GFM.

GFM table syntax

GitHub Flavored Markdown tables are: a header row of pipe-separated cells, a separator row of dashes with optional colons for alignment, and one or more data rows. The separator row determines whether tables render — without it, the renderer treats the lines as paragraphs.

| Column A | Column B | Column C |
|----------|:--------:|---------:|
| left     |  center  |    right |
| more     |   data   |     here |

Alignment colons in the separator row: :--- left, :---: center, ---: right, --- default (usually left). Column widths in source do not need to match — the renderer aligns based on the longest cell, not the visual whitespace.

Working example: a release-notes table

Input

CSV input:
Version,Released,Breaking,Highlights
3.18.0,2026-05-14,no,SEO content layer
3.17.0,2026-04-22,yes,Auth rewrite
3.16.0,2026-03-15,no,Performance pass

Output

| Version | Released   | Breaking | Highlights         |
|---------|------------|:--------:|--------------------|
| 3.18.0  | 2026-05-14 |    no    | SEO content layer  |
| 3.17.0  | 2026-04-22 |   yes    | Auth rewrite       |
| 3.16.0  | 2026-03-15 |    no    | Performance pass   |

CSV imports use the header row to populate column names. Alignment was inferred from data types (dates left-aligned, short labels centered). The visual padding makes the source readable — the renderer does not need it but PR reviewers do.

Pitfalls and the workarounds

  • Literal pipes in cells — escape with backslash: \|. Or wrap the table in an HTML <table> if you have many pipes (think SQL queries as cell content).
  • Multi-line cells — not supported in basic GFM. Use <br> for visible line breaks inside a cell, or fall back to HTML <table> with <td> containing block elements.
  • Empty cells — write at least a space between pipes: | | |. Markdown renderers treat the consecutive pipes as table-cell-boundary errors otherwise.
  • Cells with leading/trailing whitespace — preserved by some renderers, trimmed by others. Do not depend on it for alignment; use the separator-row colon syntax.
  • Header-row alignment — alignment in the separator row applies to the data rows AND the header. If you want a left-aligned header above right-aligned data, you cannot — GFM has one alignment per column.
  • Tables nested inside lists — supported by GFM since 2020 but rendered inconsistently across viewers. If you must, ensure the table starts on a new line aligned to the list-item indent.

When to reach for this tool

  • You are writing a README and need to compare versions, features, or pricing tiers in a table without hand-counting dashes.
  • You inherited a CSV of API endpoints and want it as a markdown table for the docs site.
  • You are pasting from a spreadsheet (Numbers, Excel, Google Sheets) and need consistent markdown output, not the awful HTML those apps emit.
  • You are normalizing a long markdown table that someone hand-wrote — re-padding the cells for readable diffs.

What this tool will not do

  • It will not produce tables with merged cells (rowspan / colspan). Markdown has no syntax for it. Use HTML if you need merged cells.
  • It will not auto-style. Color, borders, hover states are CSS concerns. The rendered HTML inherits the site's table styling.
  • It will not preserve the structure when round-tripping through every renderer. CommonMark-strict viewers (some npm registries) ignore tables entirely. For maximum portability, fall back to definition lists or paragraphs.

Frequently asked questions

How do I add a literal newline inside a cell?

Use <br> as HTML inside the cell. GFM does not have native multi-line cell syntax; the HTML approach works because GFM permits inline HTML. Some renderers (Slack, MS Teams) ignore the HTML.

My table is not rendering on GitHub. Why?

Almost always: missing separator row (the second line with dashes), or the table is inside an HTML block that disables markdown parsing. Make sure there is a blank line before the table and the separator row matches column count exactly.

How do I align numbers right and labels left in the same column?

You cannot — GFM has one alignment per column. Workarounds: (1) use right-align and right-justify labels with extra spaces (cosmetic only, brittle), (2) use HTML table with per-cell <td style="text-align:right">, (3) split into two columns (label left, number right).

Does the column-width padding in the source matter?

Only for human readability. The renderer ignores it and aligns based on content. Some teams pad heavily so PR diffs show clean column-aligned changes; others write minimal-whitespace tables to reduce noise. Either is fine if consistent within a project.

Can I have a markdown table with just one column?

Yes — | Heading | with a separator |---|. Looks odd in source but renders as a single-column table. Useful for lists where you want visual borders without using a list element.

How big can a markdown table get?

GFM has no hard limit, but viewers degrade. GitHub renders tables fine up to ~1000 rows; beyond that the page becomes slow. For larger data, render as HTML, paginate, or link out to a proper data view. Markdown tables are for readable documentation, not data presentation.

Related tools

Last updated · E-Utils editorial team