All tools
Plain-text GFM tables

Markdown Table Builder

Turn spreadsheet plain-text cells or CSV into a GitHub-flavored Markdown table. No workbook parser, arbitrary HTML import or remote integration.

1 MiB imports, 500 data rows, 30 columns and 10,000 characters/cell. Escaped output ≤20 MiB. Plain text only; cells are never executed as HTML/Markdown. Refresh clears memory.

Generated Markdown targets GFM. Literal pipes/backslashes/punctuation are escaped; HTML-sensitive characters are encoded before controlled <br> line-break markers. Source <br> and &amp; remain literal. Renderers disabling inline HTML may show multiline cells differently. Repeated/edge spaces can collapse; this is not a lossless spreadsheet round trip. No formula protection is applied to Markdown.

How to build a Markdown table

  1. Choose spreadsheet paste (tab), CSV with a delimiter, or Start blank. Import explicitly. Failures keep the previous grid; successful replacement offers Undo.
  2. Choose whether the first row is a header. Headerless input adds Column 1 etc. without consuming data. Blank/duplicate headers are allowed.
  3. Edit cells, reorder/add/remove rows and columns, select alignments and inspect regenerated source plus safe preview. Copy or download complete table.md.

Example and escaping rules

name-tab-code with Alice-tab-00123 makes two columns and keeps leading zeros. Literal a|b becomes a escaped pipe, not another column. Backslash-plus-pipe, backticks, emphasis markers, links and images stay plain text. HTML-sensitive ampersands/angles are encoded before tool-generated <br> for normalized LF cell breaks. Literal source <br> and &amp; are not executed or decoded twice.

Default alignment uses ---, left :---, center :---:, right ---:. Source has one header, one delimiter row, compact formatting spaces, LF separators and exactly one final newline. Plain-text preview uses explicit text and break nodes—not raw HTML or a globally enabled Markdown HTML renderer.

Parsing and limits

The tested CSV parser supports quoted delimiters, doubled quotes, BOM, CRLF/LF and multiline cells. Ragged records report expected/actual fields rather than silent fill/drop. Trailing separator does not add a record. Empty input clears to an empty state with Undo; headers-only is valid. Values remain strings, including long identifiers and formulas.

Imports ≤1 MiB, 500 data rows, 30 columns and 10,000 characters/cell; escaped output ≤20 MiB. Grid paging edits all rows, while preview shows the first 50. Export is complete. Generation is debounced in a cancelable local worker and invalid edits block output. GFM tests verify escaped content; other Markdown dialects/HTML-disabled renderers may vary and spaces may collapse. No lossless spreadsheet round-trip claim. Refresh clears memory.