Markdown Table Generator – build and repair GitHub pipe tables
Pipe tables are the most fiddly part of Markdown. Every row needs the same number of cells, the delimiter row decides the alignment, a stray | inside a cell silently creates an extra column, and keeping the pipes lined up by hand is tedious. This Markdown table generator replaces all of that with a spreadsheet-style grid: type or paste your data, choose an alignment for each column, and copy a correctly escaped, neatly aligned GitHub Flavored Markdown (GFM) table. A live preview renders the result the way GitHub will, and the source line for the cell you are editing is highlighted so you can see exactly where your text ended up.
Paste from Excel, Google Sheets, CSV or JSON
The fastest way to convert Excel to a Markdown table is to copy a range and paste it into any grid cell. Spreadsheets place an HTML table on the clipboard, and the grid reads it directly, keeping links, bold, italics and strikethrough as Markdown. When only tab-separated text is available, it is parsed as TSV, which also handles quoted multi-line cells. The paste fills the grid from the cell you clicked and grows the table as needed, all as one undo step. For files, the Import panel accepts CSV, TSV, JSON (an array of objects, an array of arrays or a single object), HTML tables and existing Markdown, and auto-detects the format and the CSV delimiter.
Fixing a messy hand-written table
Paste an existing table into Import and the tool acts as a Markdown table formatter. It follows the same rules GitHub uses to read a table, so the grid shows what GitHub actually sees, and each repair is reported with a note on what GitHub would have done:
- short rows are padded with empty cells;
- rows with extra cells get a new column, where GitHub would quietly drop the data;
- a header and delimiter row with different cell counts, which stops GitHub rendering a table at all, is fixed;
- escaped pipes,
<br>line breaks and alignment colons are read back correctly.
How the Markdown is generated
Each cell goes through the same steps in a fixed order: line endings are normalised, the text is trimmed, pipes are escaped, and line breaks become <br>. Pipe escaping is exact: a backslash is added before every | that is preceded by an even number of backslashes, so text you already escaped is left alone. This matters inside code spans too: GitHub still treats an unescaped pipe in `x || y` as a column break, so it is written as `x \|\| y`.
Aligned layout pads every column so the pipes line up in the source, and the delimiter row uses at least three hyphens, for example | :--- | :---: | ---: |. Compact layout skips the padding for the smallest diff. Trailing empty rows and columns are dropped, so a stray blank row at the end never reaches your README.
Markdown cells versus plain-text cells
By default, cells are Markdown source: **bold**, `code` and [links](https://example.com) pass straight through. Switch Cell content to Plain text when your data contains characters such as *, _, < or \ that should appear literally. They are then backslash-escaped, except inside bare URLs, which GitHub autolinks and which an escape would break.
Editing tips
Tab and Enter move through the grid like a spreadsheet, and Enter on the last row adds a new one. Column menus sort (numbers numerically, text in natural order, blanks last), insert, move and delete columns, while row menus can promote any row to the header. Right-align numbers aligns every numeric column in one click, and Transpose swaps rows and columns. Your work is autosaved in this browser.