Markdown table generator
Turn CSV into a Markdown, HTML, LaTeX or plain-text table, with alignment.
A clear answer. Here’s how.
Reads the CSV with standard quoting rules and writes each row as a table row. Markdown output follows GitHub Flavored Markdown: a pipe-separated heading row, a delimiter row whose colons set alignment (:--- left, :---: centre, ---: right) and one row per record, with columns padded so the source reads cleanly. Pipes inside cells are escaped and line breaks become <br>. HTML escapes &, < and >, LaTeX escapes its special characters, and the plain-text grid draws +---+ borders. Automatic alignment right-aligns a column when every non-empty cell is a number.
How this is checked
3 reference checks passed These 3 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- CSV data (first row is the headings) Item,Qty,Price Apple,3,1.20 Pear,10,0.95Output format markdownColumn alignment auto
- Expected, and what Toolmoz gave
- text expected | Item | Qty | Price | | :---- | --: | ----: | | Apple | 3 | 1.20 | | Pear | 10 | 0.95 | , Toolmoz | Item | Qty | Price | | :---- | --: | ----: | | Apple | 3 | 1.20 | | Pear | 10 | 0.95 | Rows expected 2, Toolmoz 2Columns expected 3, Toolmoz 3
- Where the expected answer comes from
- Hand-written GFM table: column widths are the longest cell (5, 3 and 5), numbers right-aligned, delimiter row :---- / --: / ----:
- Allowed difference
- exact
Case 2
- Inputs
- CSV data (first row is the headings) Item,Qty,Price Apple,3,1.20 Pear,10,0.95Output format htmlColumn alignment auto
- Expected, and what Toolmoz gave
- text expected <table> <thead> <tr><th>Item</th><th style="text-align:right">Qty</th><th style="text-align:right">Price</th></tr> </thead> <tbody> <tr><td>Apple</td><td style="text-align:right">3</td><td style="text-align:right">1.20</td></tr> <tr><td>Pear</td><td style="text-align:right">10</td><td style="text-align:right">0.95</td></tr> </tbody> </table> , Toolmoz <table> <thead> <tr><th>Item</th><th style="text-align:right">Qty</th><th style="text-align:right">Price</th></tr> </thead> <tbody> <tr><td>Apple</td><td style="text-align:right">3</td><td style="text-align:right">1.20</td></tr> <tr><td>Pear</td><td style="text-align:right">10</td><td style="text-align:right">0.95</td></tr> </tbody> </table>
- Where the expected answer comes from
- Hand-written HTML table with thead and tbody and right-aligned numeric columns
- Allowed difference
- exact
Case 3
- Inputs
- CSV data (first row is the headings) Item,Qty,Price Apple,3,1.20 Pear,10,0.95Output format asciiColumn alignment auto
- Expected, and what Toolmoz gave
- text expected +-------+-----+-------+ | Item | Qty | Price | +-------+-----+-------+ | Apple | 3 | 1.20 | | Pear | 10 | 0.95 | +-------+-----+-------+ , Toolmoz +-------+-----+-------+ | Item | Qty | Price | +-------+-----+-------+ | Apple | 3 | 1.20 | | Pear | 10 | 0.95 | +-------+-----+-------+
- Where the expected answer comes from
- Hand-drawn grid: border segments are the column width plus two spaces (7, 5 and 7)
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- CSV data (first row is the headings)
Item,Qty,Price Apple,3,1.20 Pear,10,0.95
- Column separator
- Comma
- Output format
- Markdown (GitHub style)
- Column alignment
- Automatic: numbers to the right
Example result
- Rows
- 2
- Columns
- 3
- Characters in the table
- 96
Pipes inside cells are escaped and line breaks become <br>. Numeric columns are right-aligned when alignment is automatic. Column padding assumes narrow characters, so East Asian text may look uneven in a monospace font while still rendering correctly.