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
- Paste CSV-style rows (header first). Use comma delimiter, or set pipe if your cells are already `|`-separated.
- Confirm column counts match across rows.
- 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
CSV to JSON Converter
Fixture generation, prototyping a table UI, turning a small Sheets export into API-shaped JSON, and checking column names before wiring a mapper.
Markdown Formatter
Cleaning a paste from a chat, unifying a docs snippet, preparing a GitHub issue, and normalizing list style before a PR.
JSON Formatter
Debugging a 401 response, comparing two configs, preparing a gist, shrinking a JSON blob before embedding it in a test fixture, and checking whether a file is actually JSON before you commit it. If you need to escape a string as a JSON literal, use JSON Stringify instead. If you need YAML, use JSON to YAML after the JSON is valid.