Markdown Table Generator
Type into the grid and the Markdown is written beside it, row by row, with the first row as the table header and a dash row under it that states each column's alignment. The generators on this search hand back a table and leave you to find out on GitHub that one cell held a pipe and split the row in two; here a pipe becomes an escaped pipe before it reaches the source, and a backslash already standing in front of one is doubled first, so a cell that already reads a \| b survives a second trip through unchanged. A line break typed inside a cell becomes a br tag, which is the only way a pipe table can hold one, and an empty cell keeps its column so the header never shifts. The grid is editable in place: move a row or a column and every value goes with it, the alignment goes with the column, and rows and columns are added or removed one at a time. Rows copied out of a spreadsheet, a CSV or a Markdown table you already have paste straight into the text view, which reads them as you type: a Markdown paste brings its own alignment back with it from the dash row. The preview under the source is the same grid drawn as a table, with cell text drawn as text, so anything pasted in shows as the characters it is made of. The grid holds 500 rows, the header counted among them, by 50 columns, and past that it says so rather than trimming what you pasted.
C1 | C2 | C3 | ||
|---|---|---|---|---|
| H | ||||
| 1 | ||||
| 2 |
| Tool | Lane | Note | | :---- | :--: | -----: | | Brick | A | a \| b | | Resin | A | |
- Columns
- 3
- Rows
- 2
- Alignment
- left, centre, right
- Escaped
- 1 pipe
3 columns by 2 rows under the header, 4 lines of Markdown.
Row 1 is the header. The buttons beside a row and above a column move it with every value in it, and a line break typed inside a cell becomes a br tag in the source.
Preview
The same grid, drawn as a table. Cell text is drawn as text, so anything pasted in shows here as the characters it is made of and nothing in it can run.
| Tool | Lane | Note |
|---|---|---|
| Brick | A | a | b |
| Resin | A |
- written as a \| b, table intact
- 3 columns kept, the cell is empty
- every value moves with the row: Resin, B
Common questions
- How do I put a pipe character inside a table cell?
- Type it. The pipe is the character that separates cells in a Markdown table, so a raw one inside a cell splits that row into an extra column and shifts everything after it; this tool writes it as a backslash and a pipe instead, which GitHub renders as the character you typed. A cell holding a | b comes out as a \| b, and the row still has the same number of cells as the header. The case that catches other generators is a cell that already contains a backslash in front of a pipe: the backslash run is doubled first, so a \| b typed into the grid comes out as a \\\| b and renders as the text you meant rather than breaking the row. The Escaped cell in the readout counts what this grid actually needed, so you can see at a glance whether anything was escaped at all.
- Can I paste cells from Excel or Google Sheets?
- Yes, in the Text view. Cells copied out of a spreadsheet arrive as tab separated rows, and the grid follows as you paste: Auto works out whether it is looking at tabs, commas or a Markdown table, and the Tab, Comma and Markdown buttons override the guess when it is wrong. A value wrapped in double quotes keeps its commas, its line breaks and any quote written twice inside it, which is how a spreadsheet exports a cell that contains one. Nothing changes silently: a row that arrives with fewer values than the widest row is filled out with empty cells and the page says how many, and blank lines are skipped and counted. Copy TSV hands the grid back in the same form, so it goes back into a spreadsheet the way it came out.
- How do I set the column alignment?
- Each column has an L, C and R control under the grid, and the choice is written into the dash row under the header, which is the only place GitHub reads alignment from. Left is :--, centre is :-:, and right is --:, each one padded out to the width of its column. Left is written with its colon rather than as a bare dash row: a bare row means left to GitHub anyway, and stating it keeps the intent visible to the next person who edits the table. The alignment belongs to the column, not the cell, so moving a column moves its alignment with it, and the preview under the source lines its cells up the same way the rendered table will.
- Can I edit a Markdown table I already have?
- Paste it into the Text view. With Auto, a block whose second line is a row of dashes is read as a Markdown table: the header, the rows and the alignment of every column come back into the grid, an escaped pipe becomes the pipe it stands for, and you can then move rows, add columns and copy the table back out. The one thing that does not turn back is a br tag, which stays the three characters it is: the tool writes Markdown, it does not read HTML, and a tag is never rendered or run anywhere on this page. Choose Markdown and paste something without a dash row and the page says so, and names the Tab and Comma buttons, rather than reading the text as one long column.
- What happens to a line break inside a cell?
- It becomes a br tag. A pipe table row is one line by definition, so a real line break inside a cell would end the row early and leave the rest of the values as a new one. Writing br in its place keeps the break where you put it and keeps the table intact, and the preview shows the same break, because both are drawn from the same grid. The readout counts line breaks next to pipes, so nothing is happening out of sight. If you would rather not have the tag, take the break out of the cell before copying.
- How large can the table be, and does anything leave my browser?
- The grid holds 500 rows by 50 columns, with the header row counted among the rows, so 499 rows of data. Past that nothing is cut down quietly: a paste of 501 rows is refused with its own numbers and the limit beside them, so you can split it or paste the rows you need. Up to a thousand cells the grid is one text box per cell; past that the editor is the text view instead, because a page holding that many boxes is not one you can type in. Nothing is sent anywhere and there is no account: the table is built in your own browser, the draft is kept in this browser alone so it is still there when you come back, and the Start over button above the tool forgets it. Storage blocked or a private window changes nothing except that it does not remember.
The Markdown is GitHub-flavoured pipe-table syntax generated from the grid on screen, so the preview and the source always agree. A pipe or a newline inside a cell is escaped rather than dropped, and an empty cell keeps its column so the header never shifts. Pasted HTML is inserted as plain text and is never rendered or run. Grids up to 500 by 50.