Markdown Table Generator
Generate online Markdown tables from CSV, TSV, semicolon, or pipe rows with headers, alignment, cleanup notes, and audits for cleaner docs.{{ summaryTitle }}
- {{ warning }}
{{ markdownOutput }}
| # | {{ header.label }} | Copy |
|---|---|---|
| {{ row.index }} | {{ cell }} | |
| No parsed rows to preview. |
| Column | Header | Alignment | Type | Max width | Fill | Note | Copy |
|---|---|---|---|---|---|---|---|
| {{ row.index }} | {{ row.header }} | {{ row.alignment }} | {{ row.type }} | {{ row.maxWidth }} | {{ row.fill }} | {{ row.note }} | |
| No column audit rows. | |||||||
{{ jsonOutput }}
Introduction
Markdown tables turn plain rows into a readable grid for READMEs, release notes, runbooks, and issue comments. They are compact enough to live in source control, but they become fragile when pipes, separator rows, or column counts are typed by hand.
Pipe-table syntax is common in GitHub-flavored Markdown. It needs a header row, a delimiter row, and then zero or more data rows. That makes it a good fit for small comparison tables, status lists, option matrices, and documentation extracts that should remain readable in plain text.
Markdown table support is not universal. GitHub-flavored Markdown defines tables as an extension, while CommonMark core does not include pipe tables as a base block type. A table that renders in one destination can appear as plain text somewhere else, so the destination renderer still matters.
Technical Details:
A pipe table is built from delimited cells. Each output row starts and ends with a pipe, cells are separated by pipes, and the second row uses hyphen markers with optional colons to signal alignment.
The transformation is deterministic once the delimiter, header rule, cleanup options, and alignment rule are chosen. Quoted CSV-style fields are parsed so delimiters inside double quotes do not split a cell, and literal pipe characters inside cells can be escaped as \| so they do not become new columns.
Transformation Core:
| Stage | Rule | Result to Check |
|---|---|---|
| Delimiter selection | Auto scores comma, tab, semicolon, and pipe separators across the first non-blank sample rows, or uses the selected delimiter directly. | The summary badge names the resolved delimiter, such as Auto: Comma. |
| Header decision | Auto treats the first row as headers when cells are non-empty, mostly non-numeric, and unique. Manual modes can force row one or generate Column 1 style headers. |
The summary line reports source row 1 or generated headers. |
| Row normalization | Markdown separator rows are ignored, empty rows can be skipped, and shorter rows are padded to the widest row count. | Table notes reports ragged rows and generated headers. |
| Alignment | Auto right-aligns columns where at least two thirds of non-empty values are numeric. Overrides such as Status:center or 4:right beat the global mode. |
Column Audit shows alignment, inferred type, maximum width, fill percentage, and notes. |
| Markdown output | Readable mode pads cells to align raw text columns. Compact mode emits shorter Markdown without extra padding. | Markdown Table is the copy-ready pipe-table output. |
Source files are read in the browser and are limited to 4 MB. The parsed grid, column audit, JSON payload, and Markdown output all come from the same parsed rows, so a warning in one tab should be treated as evidence for the others too.
The table result does not validate the meaning of the data. It confirms that rows were parsed into a grid, headers were chosen, and alignment markers were generated under the current settings.
Everyday Use & Decision Guide:
Start with Delimiter set to Auto detect, Header row set to Auto detect, and Column alignment set to Auto by content. That first pass is usually enough for spreadsheet exports and copied CSV snippets.
Use Pipe as the delimiter when repairing an existing Markdown table. Turn Escape pipes on when cells may contain command alternatives, regular expressions, paths, or inline code that includes the | character.
- Check
Table notesbefore copying output; ragged rows mean at least one source row did not match the widest row. - Open
Parsed Gridwhen a comma inside a name, quoted phrase, or pasted value might have split the row incorrectly. - Use
Alignment overridesfor columns such asStatus:centerwhen automatic numeric detection is not the right visual choice. - Raise
Preview rowsonly when you need to inspect more parsed rows; exports still use the full table.
A clean Markdown table is not proof that the publishing target supports tables. Paste a small sample into the target renderer when documentation must work outside GitHub-style Markdown.
Step-by-Step Guide:
- Paste rows into
Source table, or useBrowse CSVto load a CSV, TSV, TXT, or MD file under the browser-side size limit. - Choose
Header row. If the first row is data, chooseGenerate Column 1 headersand confirm that the generated headers appear in the summary line. - Leave
DelimiteronAuto detectfor spreadsheet exports, or choosePipefor an existing Markdown table. - Set
Column alignment, then add anyAlignment overridesin Advanced when individual columns need different markers. - Review
Table notesandColumn Audit. If rows were padded, fix the source or confirm that blank cells are expected. - Copy the text from
Markdown Tableafter the parsed grid matches the source data.
Interpreting Results:
Markdown table ready means the source text produced at least one header and a consistent output grid after padding. It does not mean every source row was originally balanced.
The most important warning is the ragged-row note. If it reports that rows were padded, open Parsed Grid and compare the row numbers against the original source before publishing.
Use Column Audit to verify numeric alignment and fill rate. A mostly empty column or an unexpected text type can point to a delimiter mistake, a quoted-field problem, or a header row that was guessed incorrectly.
Worked Examples:
A CSV source such as Feature,Owner,Status,Impact followed by three data rows should resolve to comma input, source-row headers, and four output columns. Impact remains left-aligned unless its values are mostly numeric.
A source row like "North, APAC",Lina,Ready keeps North, APAC as one cell because the comma is inside a quoted field. If quotes are missing, the parsed grid shows an extra column and Table notes reports padded rows.
An existing pipe table with a separator row can be pasted back into Source table with Delimiter set to Pipe. The Markdown separator row is ignored during parsing, then a fresh separator row is generated from the current alignment settings.
FAQ:
Why did the generator add Column 1 headers?
The first row was treated as data by the selected Header row rule. Choose Use first row if row one should be the header.
Why are some rows padded with blank cells?
At least one row had fewer cells than the widest row. The output keeps the table rectangular, and Column Audit helps you find which columns are sparse.
Should pipes inside cells be escaped?
Yes when the pipe is literal cell text. With Escape pipes on, A|B becomes A\|B so the renderer does not split it into two cells.
Does uploaded table data leave the browser?
The file reader loads CSV, TSV, TXT, or MD content into the page for browser-side parsing. The description does not show any server upload path for source table content.
Glossary:
- Delimiter
- The character that separates cells in the source rows, such as comma, tab, semicolon, or pipe.
- Header row
- The row that names the table columns and appears above the Markdown delimiter row.
- Delimiter row
- The Markdown row of hyphens and optional colons that separates headers from data.
- Ragged row
- A source row with more or fewer cells than the final column count.
References:
- GitHub Flavored Markdown Spec, GitHub, 2019-04-06.
- CommonMark Spec, CommonMark, 2024-01-28.