Skip to main content
CaseSwitch

Markdown Table Generator

Use the CaseSwitch Markdown Table Generator to build GitHub-flavored Markdown tables from CSV-like rows without counting pipes by hand. Paste rows, review the table, and copy it into a README or PR. Generation runs in this browser.

Written by the CaseSwitch editorial team. We maintain these tools in the browser so drafts, keys, and images stay on your device.

Last reviewed: 23 July 2026

Processed locally in your browser. Nothing is sent to a server.

Paste or type text to convert. Output stays empty until there is input.

Character count: 0 · Word count: 0 · Line count: 0

Examples

Two-column scores

Input

Name,Score
Ada,98
Bob,70

Output

| Name | Score |
| --- | --- |
| Ada | 98 |
| Bob | 70 |

Pipe-delimited input

Input

Name|Score
Ada|98

Output

| Name | Score |
| --- | --- |
| Ada | 98 |

Three columns

Input

A,B,C
1,2,3
4,5,6

Output

| A | B | C |
| --- | --- | --- |
| 1 | 2 | 3 |
| 4 | 5 | 6 |

Feature matrix

Input

Feature,Free,Pro
Export,yes,yes
SSO,no,yes

Output

| Feature | Free | Pro |
| --- | --- | --- |
| Export | yes | yes |
| SSO | no | yes |

Minimal two-by-two

Input

x,y
1,2

Output

| x | y |
| --- | --- |
| 1 | 2 |

How to use

  1. Paste CSV-style rows (header first). Use comma delimiter, or set pipe if your cells are already `|`-separated.
  2. Confirm column counts match across rows.
  3. Copy the Markdown table into your doc. Add `:---` / `---:` alignment markers by hand if you need them.

What this tool is for

Feature matrices and comparison tables still show up in docs and issues. This generator turns a header row plus data rows into a pipe table with a `| --- |` separator. Output is Markdown text, not a spreadsheet file.

How it works

Lines are split on newlines. Each line is parsed with the delimiter you choose (default comma; pipe `|` is common for already-separated cells). Row 1 becomes the header. A separator row of `---` cells is inserted. Body rows follow. Empty input fails with a clear error.

When to use it

README feature matrices, issue templates, design-doc option tables, and turning a small CSV paste into something GitHub will render.

When not to use it

Huge datasets belong in CSV or a real spreadsheet. Merged cells and rich HTML tables are out of scope. Unescaped pipes inside cells will break column counts — escape or rephrase.

How it compares to related tools

CSV to JSON is for data interchange. Markdown Formatter tidies prose and lists but does not invent a table from free text. HTML to Markdown may produce tables from HTML `<table>` when Turndown supports them.

Common mistakes

Putting raw `|` inside a cell without escaping. Generating a table so wide it cannot be read on a phone. Forgetting the header row so the first data row becomes the header.

Alignment colons

GFM uses `:---` (left), `:---:` (center), and `---:` (right) in the separator row. This generator emits plain `---`. Add colons in the output if you need alignment — GitHub and many static site generators honor them.

Delimiter choice

Comma is the default for spreadsheet pastes. If you already typed pipes between cells, set the delimiter to `|` so commas inside cells are not treated as breaks. Quoted CSV fields follow the same parsing ideas as the CSV tools on this site.

Frequently asked questions

Can I align columns left/right?+

Add `:---` / `---:` / `:---:` in the separator row after generation. The generator emits plain `---`.

Does this render the table?+

It generates Markdown. GitHub, many editors, and static site generators render it.

How do I use pipe-separated rows?+

Set the delimiter to `|` (as in the pipe-delimited example) so commas inside cells stay intact.

What if a cell contains a pipe?+

Pipes break GFM columns. Rephrase the cell, wrap differently, or use HTML tables for that row.

Is my table data uploaded?+

No. Generation runs in this browser.

Can I paste TSV?+

If the UI exposes a tab delimiter, use it. Otherwise replace tabs with commas first.

Does this tool send my payload to CaseSwitch?+

No. Formatting, encoding, and naming conversions for this page run in your browser after load — your sample stays on the device.

Related tools