15 parser cases
3 output styles
45 style runs
0 content uploads
How verification works
One parser, one fixture source Each source sample and expected behavior lives in a structured fixture. The production converter renders Grid ASCII, Unicode box, and Simple text. Unit tests compare table metrics, diagnostics, visible width, and output snapshots. Browser tests verify the same behaviors through the public converter interface. Find your case | Status |
| --- |
| success \| warning | +-------------------+
| Status |
+-------------------+
| success | warning |
+-------------------+
Tables: 1 · Rows: 2 · Columns: 1 · Max line: 21 chars · 80-col safe
No diagnostics for this case.
| Code |
| --- |
| `a | b` | +-------+
| Code |
+-------+
| a | b |
+-------+
Tables: 1 · Rows: 2 · Columns: 1 · Max line: 9 chars · 80-col safe
No diagnostics for this case.
| Code |
| --- |
| `a \| b` | +-------+
| Code |
+-------+
| a | b |
+-------+
Tables: 1 · Rows: 2 · Columns: 1 · Max line: 9 chars · 80-col safe
No diagnostics for this case.
| Link | Note |
|---|---|
| [A | B](https://example.com) | ok | +-----------------------------+------+
| Link | Note |
+-----------------------------+------+
| A | B (https://example.com) | ok |
+-----------------------------+------+
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 38 chars · 80-col safe
No diagnostics for this case.
```js
cat file | grep foo
``` No valid table detected; source text is preserved.
No diagnostics for this case.
Use A | B in prose, not as a table. Use A | B in prose, not as a table. No valid table detected; source text is preserved.
No diagnostics for this case.
| Key | Value |
| --- | --- |
| A | 1 |
Use A | B for fallback. +-----+-------+
| Key | Value |
+-----+-------+
| A | 1 |
+-----+-------+
Use A | B for fallback.
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 23 chars · 80-col safe
Line 4: This looks like prose after a table. Consider adding a blank line after the table. Name | Score
--- | ---:
Alpha | 12 Name Score
----- -----
Alpha 12
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 12 chars · 80-col safe
No diagnostics for this case.
| 名称 | 状态 |
|---|---|
| 表格 | 完成 | ┌──────┬──────┐
│ 名称 │ 状态 │
├──────┼──────┤
│ 表格 │ 完成 │
└──────┴──────┘
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 15 chars · 80-col safe
No diagnostics for this case.
| Item | Status |
|---|---|
| Rocket 🚀 | ✅ Done | ┌───────────┬─────────┐
│ Item │ Status │
├───────────┼─────────┤
│ Rocket 🚀 │ ✅ Done │
└───────────┴─────────┘
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 23 chars · 80-col safe
No diagnostics for this case.
| Asset | Link |
|---|---|
|  | [Docs](https://example.com/docs) | +-----------------------+---------------------------------+
| Asset | Link |
+-----------------------+---------------------------------+
| Diagram (diagram.png) | Docs (https://example.com/docs) |
+-----------------------+---------------------------------+
Tables: 1 · Rows: 2 · Columns: 2 · Max line: 59 chars · 80-col safe
No diagnostics for this case.
| A | B | C |
|---|---|---|
| 1 | 2 | +---+---+---+
| A | B | C |
+---+---+---+
| 1 | 2 | |
+---+---+---+
Tables: 1 · Rows: 2 · Columns: 3 · Max line: 13 chars · 80-col safe
Line 3: Expected 3 columns, found 2. Add the missing cell separators or leave an empty cell such as `| |`. Intro
| A | B |
|---|---|
| 1 | 2 |
Between
Name | Score
--- | ---:
Alpha | 12 Intro
+---+---+
| A | B |
+---+---+
| 1 | 2 |
+---+---+
Between
+-------+-------+
| Name | Score |
+-------+-------+
| Alpha | 12 |
+-------+-------+
Tables: 2 · Rows: 4 · Columns: 2 · Max line: 17 chars · 80-col safe
No diagnostics for this case.
| A | B |
| --- | nope |
| 1 | 2 | | A | B |
| --- | nope |
| 1 | 2 | No valid table detected; source text is preserved.
No diagnostics for this case.
| A | B | C |
|---|---|---|
| 1 | | 3 |
| | 2 | | +---+---+---+
| A | B | C |
+---+---+---+
| 1 | | 3 |
+---+---+---+
| | 2 | |
+---+---+---+
Tables: 1 · Rows: 3 · Columns: 3 · Max line: 13 chars · 80-col safe
No diagnostics for this case.
What these results do and do not prove These samples verify md2text's parsing and width model. They are not a guarantee that every Markdown renderer, terminal, email client, or font will display the same spacing.
md2text accepts unescaped pipes inside inline code as a convenience. Other Markdown renderers may require escaping them. Table-ending detection uses heuristics: adding a blank line is still the clearest boundary. Fenced code loses its fence markers in plain-text output.
The converter does not wrap long cells, transliterate non-ASCII content, or render HTML tables. For destination decisions, see the measured style comparison , 80-column repair example , and Unicode width measurements .
Use your own source
Check a Markdown table locally The converter never puts pasted Markdown or generated output in the URL.
Open the converter