PureDevTools

Markdown Table Generator

Build Markdown tables visually — edit cells, set alignment, import CSV/TSV, copy GFM output

All processing happens in your browser. No data is sent to any server.
3 cols × 3 rows
HDR

Markdown Output

|     |     |     |
|:----|:----|:----|
|     |     |     |
|     |     |     |
|     |     |     |

You need a 5-column, 8-row comparison table in your README. Writing the pipe syntax by hand — | Header | Header |, |--------|--------|, plus 8 data rows with aligned pipes — takes 15 minutes and one misaligned pipe breaks the entire table. You also have the data in a CSV from a spreadsheet and want to import it directly.

Why This Generator (Not the Table to Markdown Converter)

PureDevTools has a Table to Markdown converter for pasting HTML or spreadsheet tables and getting Markdown output. This tool is a visual table builder — create tables in a grid, set column alignments (left/center/right), add or remove rows and columns, import CSV/TSV, and copy clean GFM pipe table syntax. Use this builder to create tables from scratch; use the converter to convert existing tables.

What Is a Markdown Table?

A Markdown table — also called a pipe table or GFM table — is a plain-text syntax for representing tabular data inside a Markdown document. It is defined by the GitHub Flavored Markdown (GFM) specification and is supported by GitHub, GitLab, Notion, Obsidian, VS Code, Reddit, and most static-site generators including Jekyll, Hugo, and Astro.

A minimal Markdown table looks like this:

| Name    | Role      | Location  |
|:--------|:----------|:----------|
| Alice   | Engineer  | New York  |
| Bob     | Designer  | Berlin    |
| Carol   | Product   | Tokyo     |

Which renders as:

NameRoleLocation
AliceEngineerNew York
BobDesignerBerlin
CarolProductTokyo

How to Use the Markdown Table Generator

  1. Start with the grid — A default 3-column, 3-row table is pre-loaded. Click any cell to edit it. The first row is the header row.
  2. Set column alignment — Click the alignment button above each column to cycle through Left (:---), Center (:---:), and Right (---:).
  3. Add or remove rows — Click + Row at the bottom to append a new data row. Click the × button to the left of any row to remove it.
  4. Add or remove columns — Click + Col at the right edge to add a new column. Click the × button above any column header to remove it.
  5. Import CSV or TSV — Click Import and paste spreadsheet data (comma-separated or tab-separated). The tool auto-detects the delimiter.
  6. Copy the output — The Markdown table is generated live in the output panel. Click Copy Markdown to copy it to your clipboard.

Column Alignment Explained

The GFM table spec uses the separator row (the second row, made of dashes and colons) to encode column alignment:

AlignmentSeparator syntaxExample
Left:---:----------
Center:---::----------:
Right---:----------:
Default---------------

Left alignment is the GFM default and works correctly in all Markdown renderers. Center and Right are supported by GitHub, GitLab, and most extended Markdown parsers, but may be ignored by strict CommonMark renderers that do not implement the tables extension.


How to Import from CSV or TSV

Click the Import tab and paste your data:

From a spreadsheet (Google Sheets / Excel):

  1. Select the cells you want to include.
  2. Copy with Ctrl+C / Cmd+C — spreadsheets copy as TSV (Tab-Separated Values).
  3. Paste into the Import area and click Parse as TSV.

From a CSV file:

  1. Paste the CSV content into the Import area.
  2. Click Parse as CSV.

The first row of your imported data automatically becomes the header row. If your data has no header, you can edit the header cells after importing.

Supported CSV features:


Markdown Table Syntax Reference

Basic structure

| Header A | Header B | Header C |
|----------|----------|----------|
| row1a    | row1b    | row1c    |
| row2a    | row2b    | row2c    |

Rules:

Alignment syntax

| Left     | Center      | Right      |
|:---------|:-----------:|-----------:|
| text     |    text     |       text |

Multi-line cells

Standard GFM tables do not support multi-line cells. Each row must be a single line. For multi-line content, use an HTML <table> tag or break the information into multiple rows.

Cells with special characters

Pipe characters inside cells must be escaped with a backslash:

| Expression | Result  |
|------------|---------|
| a \| b     | true    |

Markdown Table vs HTML Table

FeatureMarkdown TableHTML Table
Syntax readabilityHighLow
Multi-line cellsNoYes (<br>)
Cell mergingNoYes (colspan)
Custom CSS stylingLimitedFull control
Renderer supportMost MarkdownUniversal HTML
Version control diffCleanNoisy

Use Markdown tables in documentation, README files, wikis, and anywhere human readability in source form matters. Use HTML tables when you need cell merging, multi-line content, or advanced styling.


Common Use Cases

API documentation — Document request parameters, response fields, or error codes in a readable tabular format in your README or docs site.

Comparison tables — Compare features, pricing tiers, or technology options in a GitHub README or Notion page.

Data dictionaries — List database columns, types, and descriptions in a schema reference document.

Release notes — Summarize changes with a “Before / After” table in your changelog.

Project wikis — Organize team information, sprint tasks, or sprint goals in a GitHub or GitLab wiki page.


Frequently Asked Questions

Do all Markdown parsers support tables? No. Tables are defined in the GFM extension, not in the core CommonMark spec. They are supported by GitHub, GitLab, Notion, Obsidian, VS Code’s Markdown preview, most static-site generators (Hugo, Jekyll, Eleventy, Astro), and pandoc. They are not supported by strict CommonMark parsers without the tables extension enabled.

Why does my Markdown table not render correctly? The most common causes are: (1) missing separator row, (2) mismatched column counts between rows, (3) the Markdown renderer does not support the GFM tables extension, or (4) HTML content or line breaks inside a cell. Ensure every row has the same number of pipe-delimited cells.

Can I have empty cells? Yes. Two consecutive pipes (||) represent an empty cell. This tool preserves empty cells and pads them correctly in the aligned output.

What is the maximum number of columns or rows? The GFM spec sets no hard limit. Practical limits are imposed by the renderer or the editor displaying the table. Very wide tables (20+ columns) may overflow horizontally in some Markdown renderers.

How does column alignment affect rendering? The alignment colon in the separator row is a rendering hint — it does not change the raw text content of cells. Left-aligned text starts from the left edge; right-aligned text is pushed to the right edge; centered text is horizontally centered. Misalignment in the raw Markdown source (unequal padding) does not affect rendered output.

Can I use Markdown inside a table cell? Yes, inline Markdown such as **bold**, *italic*, `code`, and [links](url) works inside GFM table cells. Block-level Markdown (headings, lists, code fences) does not work inside table cells.

How do I include a pipe character in a cell? Escape it with a backslash: \|. For example, the cell content a \| b renders as a | b.

Is the generated Markdown compatible with Notion, Obsidian, and Confluence? Yes for Notion and Obsidian — both fully support GFM tables. Confluence uses its own wiki markup by default; however, Confluence’s Markdown importer and the Markdown macro support GFM tables.

Related Tools

More HTML & Markdown Tools