Build a Markdown table without counting pipes
This Markdown table generator gives you a spreadsheet-style grid: type in the cells and the code updates with every keystroke. The same table also comes out as an HTML table, a LaTeX table, CSV, boxed ASCII text or JSON. Handy for a GitHub README, a wiki page, release notes or a lab report. Nothing leaves your browser, and your last table is kept on this device for next time.
How to use it
- Click a cell and type. Tab moves to the next cell, Enter moves down (and adds a row below the last one), Shift+Enter moves up, arrow keys move one cell.
- The "Row" and "Column" groups add, delete or move the row and column of the active cell. Tick "Header row" to turn the first row into column titles.
- "Left", "Center" and "Right" align the active column; "Ascending" and "Descending" sort by it, leaving the header in place.
- Pick an output format, then "Copy" or "Download".
Markdown table syntax
A Markdown table (the GitHub flavor) has a header row, a separator row made of dashes, then one row per record, with cells split by pipes. Here is what the tool writes for a coffee menu, sizes centered and prices right-aligned:
| Size | Price || :----: | ----: || Small | $3.50 || Medium | $4.25 |
Colons in the separator row set alignment: :--- left, :---: center, ---: right, plain --- for the default. "Align columns with spaces" pads every cell so the raw text lines up; the rendered table looks the same either way. A pipe inside a cell, as in a|b, is written a\|b so it does not split the column.
Markdown has hard limits: no merged cells, no line breaks inside a cell, and a header row is required. So this tool deliberately skips cell merging. If you untick "Header row", the Markdown export adds an empty header row and tells you so.
An accessible HTML table
The HTML export puts column titles in <thead> as <th scope="col"> cells and the data in <tbody>, so a screen reader announces the column name before each value. The "Caption" field adds a <caption>: one sentence saying what the table shows. "Styling" switches between plain code, classes (align-right, align-center) or minimal "Inline styles" for email. The characters <, > and & are escaped, so <b> & co shows up as text.
LaTeX, ASCII, CSV and JSON
For LaTeX, the tool writes a tabular environment whose l, c and r letters follow your alignments, with or without "Borders". Special characters are escaped, so 50% and R&D become 50\% and R\&D.
"ASCII text" draws a +---+ box for plain-text email or code comments. Accented letters count as one character, CJK characters and emoji as two; depending on the font, an emoji can still push a line out by half a character. CSV uses a comma, semicolon or tab, and JSON gives an array of objects keyed by the header.
Copy from a spreadsheet
Select a range in your spreadsheet, copy it and paste it into a grid cell: tab-separated columns are spread out from that cell and the grid grows as needed. To reuse an existing Markdown, HTML or CSV table, paste it into "Table to import" and click "Import into the grid". Sorting reads numbers the English way: 950 comes before 1,200, and $9.99 before $10.
FAQ
Can I merge cells?
No, Markdown cannot do it. An imported HTML table with merged cells is split: the text goes in the first cell and the others stay empty.
How do I put a pipe in a Markdown cell?
Type it as usual. The export writes \| and the Markdown import turns it back into a pipe.
What does "Transpose" do?
It swaps rows and columns: 4 rows by 3 columns become 3 rows by 4 columns. Alignments are reset.
Is my data sent anywhere?
No, everything runs in the page. The table only stays in your browser's storage; "Clear all" replaces it with an empty 3 × 3 grid.