Production parser evidence

Parser Compatibility Lab

These are executable cases, not illustrative mockups. Every result below is generated with the same converter used on the homepage.

Last updated: September 4, 2026

15parser cases
3output styles
45style runs
0content uploads

How verification works

One parser, one fixture source

  1. Each source sample and expected behavior lives in a structured fixture.
  2. The production converter renders Grid ASCII, Unicode box, and Simple text.
  3. Unit tests compare table metrics, diagnostics, visible width, and output snapshots.
  4. Browser tests verify the same behaviors through the public converter interface.

Case 01

Escaped pipe

A backslash-escaped pipe stays inside one cell and renders as a literal pipe.

Markdown source 3 lines
| Status |
| --- |
| success \| warning |
Generated result Grid ASCII
+-------------------+
| Status            |
+-------------------+
| success | warning |
+-------------------+

Tables: 1 · Rows: 2 · Columns: 1 · Max line: 21 chars · 80-col safe

No diagnostics for this case.

Case 02

Inline code pipe

A pipe inside a backtick code span is treated as code, not a column boundary.

Markdown source 3 lines
| Code |
| --- |
| `a | b` |
Generated result Grid ASCII
+-------+
| Code  |
+-------+
| a | b |
+-------+

Tables: 1 · Rows: 2 · Columns: 1 · Max line: 9 chars · 80-col safe

No diagnostics for this case.

Case 03

Escaped pipe in inline code

Escaping a pipe inside inline code still produces one readable code value.

Markdown source 3 lines
| Code |
| --- |
| `a \| b` |
Generated result Grid ASCII
+-------+
| Code  |
+-------+
| a | b |
+-------+

Tables: 1 · Rows: 2 · Columns: 1 · Max line: 9 chars · 80-col safe

No diagnostics for this case.

Case 05

Pipe in a fenced code block

A shell pipe inside a fenced block is preserved as code and never becomes a table.

Markdown source 3 lines
```js
cat file | grep foo
```
Generated result Simple text
cat file | grep foo

No valid table detected; source text is preserved.

No diagnostics for this case.

Case 06

Pipe in ordinary prose

A sentence containing a pipe is preserved unless a valid separator row establishes a table.

Markdown source 1 lines
Use A | B in prose, not as a table.
Generated result Simple text
Use A | B in prose, not as a table.

No valid table detected; source text is preserved.

No diagnostics for this case.

Case 07

Table followed immediately by prose

The table ends before a prose-like pipe line, which remains in document order.

Markdown source 4 lines
| Key | Value |
| --- | --- |
| A | 1 |
Use A | B for fallback.
Generated result Grid ASCII
+-----+-------+
| 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.

Case 08

Table without outer pipes

A standard table without leading or trailing pipes is recognized by its separator row.

Markdown source 3 lines
Name | Score
--- | ---:
Alpha | 12
Generated result Simple text
Name   Score
-----  -----
Alpha     12

Tables: 1 · Rows: 2 · Columns: 2 · Max line: 12 chars · 80-col safe

No diagnostics for this case.

Case 09

CJK visible width

Wide CJK characters use terminal display width so adjacent columns stay aligned.

Markdown source 3 lines
| 名称 | 状态 |
|---|---|
| 表格 | 完成 |
Generated result Unicode box
┌──────┬──────┐
│ 名称 │ 状态 │
├──────┼──────┤
│ 表格 │ 完成 │
└──────┴──────┘

Tables: 1 · Rows: 2 · Columns: 2 · Max line: 15 chars · 80-col safe

No diagnostics for this case.

Case 10

Emoji visible width

Emoji width is included in the same display-width calculation used for alignment and health metrics.

Markdown source 3 lines
| Item | Status |
|---|---|
| Rocket 🚀 | ✅ Done |
Generated result Unicode box
┌───────────┬─────────┐
│ Item      │ Status  │
├───────────┼─────────┤
│ Rocket 🚀 │ ✅ Done │
└───────────┴─────────┘

Tables: 1 · Rows: 2 · Columns: 2 · Max line: 23 chars · 80-col safe

No diagnostics for this case.

Case 12

Inconsistent column count

A short row gets a best-effort blank cell plus a line-level repair suggestion.

Markdown source 3 lines
| A | B | C |
|---|---|---|
| 1 | 2 |
Generated result Grid ASCII
+---+---+---+
| 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 `| |`.

Case 13

Multiple tables in one document

Two tables are converted independently while the paragraphs between them remain in place.

Markdown source 11 lines
Intro

| A | B |
|---|---|
| 1 | 2 |

Between

Name | Score
--- | ---:
Alpha | 12
Generated result Grid ASCII
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.

Case 14

Invalid separator row

Table-like text without a valid dash separator remains ordinary text.

Markdown source 3 lines
| A | B |
| --- | nope |
| 1 | 2 |
Generated result Simple text
| A | B |
| --- | nope |
| 1 | 2 |

No valid table detected; source text is preserved.

No diagnostics for this case.

Case 15

Empty cells

Intentional empty cells keep their column positions across all three output styles.

Markdown source 4 lines
| A | B | C |
|---|---|---|
| 1 |  | 3 |
|  | 2 |  |
Generated result Grid ASCII
+---+---+---+
| A | B | C |
+---+---+---+
| 1 |   | 3 |
+---+---+---+
|   | 2 |   |
+---+---+---+

Tables: 1 · Rows: 3 · Columns: 3 · Max line: 13 chars · 80-col safe

No diagnostics for this case.

Use your own source

Check a Markdown table locally

The converter never puts pasted Markdown or generated output in the URL.

Open the converter