Foundations
Markdown Table Syntax Guide for Plain-Text Conversion
Written and reviewed by the md2text maintainer. Parser-specific guidance is checked against the automated regression suite.
Markdown tables are easy to write, but they are less forgiving than paragraphs or lists. A missing pipe, inconsistent separator row, or unescaped character can turn a clean table into a broken block of text. That matters even more when you plan to convert the table into ASCII or Unicode output, because the converter needs to understand where each column begins and ends.
This guide focuses on Markdown table syntax from the point of view of plain-text conversion. The goal is not just to make a table render in a Markdown preview, but to make it reliable when pasted into email, command-line documentation, support replies, source comments, and release notes.
The basic table shape
A Markdown table needs three parts:
- A header row.
- A separator row.
- One or more data rows.
| Field | Type | Required |
|---|---|---|
| email | string | yes |
| plan | string | no |
The first row names the columns. The second row tells the Markdown parser that this block is a table. The remaining rows become the body.
For plain-text conversion, this structure is useful because it gives the converter a stable column count. If a row has fewer cells than the header, the missing cells can be treated as blank. If a row has extra cells, the output may become wider than expected.
Alignment markers
Markdown uses colons in the separator row to describe alignment:
| Name | Status | Score |
|:---|:---:|---:|
| Alice | Ready | 97 |
| Ben | Review | 81 |
The markers mean:
| Marker | Meaning |
|---|---|
:--- | Left aligned |
:---: | Center aligned |
---: | Right aligned |
Alignment matters in plain text because numbers, statuses, and short labels become easier to scan when they line up consistently. For example, right-aligning file sizes, totals, and durations makes comparison easier:
+---------+----------+
| Asset | Size |
+---------+----------+
| app.js | 183 KB |
+---------+----------+
| logo.svg| 2 KB |
+---------+----------+
If your destination is a bug tracker or an email client, alignment will only hold when the table is viewed in a monospaced font. The converter can preserve spaces, but the final app still controls how those spaces are displayed.
Escaping pipes inside cells
The pipe character | separates columns. If your cell content includes a literal pipe, escape it with a backslash:
| Pattern | Meaning |
|---|---|
| `a \| b` | Match either value |
If the pipe is not escaped, most Markdown parsers will treat it as a column break. That can create an extra cell and throw off the converted plain-text output.
When possible, keep table cells short. Long paragraphs inside table cells are valid in some Markdown environments, but they are hard to convert into clean fixed-width text. If a cell needs more than one sentence, consider moving that detail below the table and linking it with an ID or label.
Links and images in tables
Markdown links are common in documentation tables:
| Page | Link |
|---|---|
| Setup | [Install guide](/blog/readme-best-practices/) |
For plain text, a readable conversion is usually better than preserving the raw Markdown syntax:
| Page | Link |
| Setup | Install guide (/blog/readme-best-practices/) |
The same idea applies to images. Since a plain-text destination cannot render the image, the useful information is the alt text and the image URL.
Keep repeated text out of every row
One common table mistake is repeating the same phrase across every row:
| Browser | Support note |
|---|---|
| Chrome | Supported in the current version |
| Firefox | Supported in the current version |
| Safari | Supported in the current version |
This is valid, but it adds noise. A cleaner version is:
Current versions are supported unless noted.
| Browser | Note |
|---|---|
| Chrome | Full support |
| Firefox | Full support |
| Safari | Requires 16.4 or later |
This approach is better for both readers and conversion. The table carries the differences; the paragraph carries the shared context.
Checklist before converting
Before you convert a Markdown table to plain text, quickly check:
| Check | Why it matters |
|---|---|
| Header count matches body rows | Prevents shifted columns |
| Separator row is present | Helps detect the table reliably |
| Pipes inside cells are escaped | Avoids accidental extra columns |
| Numeric columns use right alignment | Makes values easier to compare |
| Long explanations are outside the table | Keeps output readable |
When to use the converter
You do not need plain-text conversion when your final destination renders Markdown reliably. Keep the Markdown table if it will live in GitHub, a Markdown-based static site, or documentation software with a good preview.
Use a converted table when the destination strips formatting, wraps Markdown oddly, or sends content through systems that do not understand Markdown. Common examples include:
| Destination | Why text output helps |
|---|---|
| Many clients change Markdown formatting | |
| Support replies | Tables are often pasted into plain text fields |
| Terminal docs | Output should remain readable without a renderer |
| Source comments | Reviewers can scan values without opening a preview |
| Incident notes | Plain text survives copying between tools |
Final thought
Good Markdown tables are structured, compact, and predictable. If the source table is clean, the plain-text version will usually be clean too. Spend a moment on alignment markers, escaped pipes, and row length before converting; that small preparation step prevents most formatting surprises later.
Convert your own table
Paste a Markdown table into the converter and choose ASCII grid, Unicode box, or Simple text output. Conversion runs locally in your browser.
Convert a Markdown table