ASCII Table Generator
Turn a table into aligned plain text: ASCII, Unicode box, Markdown, reST, psql or Org-mode, with CJK and emoji widths handled.
Sample shown — paste your own Markdown to replace it.
+--------------+------------+------------+--------+ | Name | Role | Status | Score | +--------------+------------+------------+--------+ | Ada Lovelace | Engineer | ✅ Done | 98.5 | | 田中太郎 | デザイナー | 🟡 Review | 87 | | Zoë Müller | PM | ❌ Blocked | 72.25 | | Total | | | 257.75 | +--------------+------------+------------+--------+
Chinese, Japanese, Korean and emoji count as two columns. Terminals and code editors draw them that way; a proportional font may not.
How to make an ASCII table in 3 steps
Paste or build your table
Paste Markdown, CSV, TSV, cells from Excel or Sheets, HTML or JSON, or switch to the grid tab and type the cells. An existing +---+ or box-drawing table can be restyled too.
Pick a style and options
Choose ASCII, Unicode box, Markdown, reST, psql or Org-mode, then set padding, row lines, wrapping and an optional comment prefix or code fence.
Copy the table
Click Copy table and paste it into a terminal, code comment, README, email or chat. Use Download .txt to keep it as a file.
Example
| Name | Role | Score | | :--- | :---: | ---: | | Ada Lovelace | Engineer | 98.5 | | 田中太郎 | デザイナー | 87 | | Zoë Müller | **PM** | 72.25 |
+--------------+------------+-------+ | Name | Role | Score | +--------------+------------+-------+ | Ada Lovelace | Engineer | 98.5 | | 田中太郎 | デザイナー | 87 | | Zoë Müller | PM | 72.25 | +--------------+------------+-------+
Options explained
- Table style
- ASCII (+---+) is the layout the MySQL command-line client prints. Unicode box, rounded, heavy and double use box-drawing characters. Markdown (aligned) is a GitHub-style pipe table padded to equal widths. PostgreSQL psql has no outer frame and a (n rows) footer. reST grid and simple tables are for reStructuredText and Sphinx. Org-mode is the |---+---| form. Plain has no borders at all.ASCII (default) · Unicode box · Unicode rounded · Unicode heavy · Unicode double · Markdown · psql · reST grid · reST simple · Org-mode · Plain
- Line under the header
- Draws the separator between the header and the first row. reST grid, reST simple, Org-mode and Markdown always have one.On (default) · Off
- Line between every row
- Adds a separator after each body row, which keeps multi-line cells readable. reST grid tables always have them.Off (default) · On
- Outer border
- The frame around the table. Switch it off for an open layout where only the lines between columns and rows remain.On (default) · Off
- Remove Markdown markup
- Turns **bold**, *italic*, `code`, [links](url) and \| into the plain text a reader would see, and <br> into a second line in the cell. Off prints the cell text as typed. The Markdown style always keeps its markup.On (default) · Off
- Right-align number columns
- Columns with no alignment set whose values are all numbers (also with %, a currency sign or thousands separators) are right-aligned. Alignment you set with :--- ---: or in the grid always wins.On (default) · Off
- Padding
- Spaces on each side of a cell. 0 gives the compact form: |a|b|.0 (compact) · 1 (default) · 2 · 3
- Wrap cells at
- Word-wraps long cells at the chosen width in columns; the wrapped lines stay inside the same cell.No wrapping (default) · 20 · 30 · 40 · 60 columns
- Wrap output in
- Adds a prefix to every line (// , # , -- , * , >) so the table can sit in a code comment, or wraps it in a ``` code fence for Markdown, Discord and chat. 4 spaces makes an indented Markdown code block.None (default) · code fence · comment prefixes · 4 spaces
Related tools
Also useful
Next steps
- Markdown Table FormatterAlign columns and pad cells so the raw table is readable.
- Markdown Table ValidatorFind broken delimiter rows, column mismatches and unescaped pipes.
- Markdown Table SorterSort rows alphabetically or numerically by any column.
- Markdown Table TransposeSwap rows and columns.
- Markdown Table EditorPaste an existing Markdown table and edit cells visually.
Convert Markdown to…
- Markdown Table to CSVExport a Markdown table as RFC 4180 CSV.
- Markdown Table to TSVCopy as tab-separated values that paste cleanly into Excel and Sheets.
- Markdown Table to HTMLExport semantic <table> markup.
- Markdown Table to JSONExport rows as an array of JSON objects.
- Markdown Table to LaTeXExport LaTeX tabular code for papers and Overleaf.
Convert to Markdown from…
- CSV to Markdown TableConvert CSV text or .csv files, including quoted cells.
- Excel to Markdown TablePaste cells copied from Excel straight into a Markdown table.
- Google Sheets to Markdown TablePaste a copied range or a public sheet URL.
- TSV to Markdown TableConvert tab-separated text into a Markdown table.
- HTML Table to MarkdownConvert <table> markup into a Markdown table.
About this tool
Paste a table, or type one into the grid, and get plain text with borders that line up. Pick the classic +---+ layout that the MySQL command-line client prints, Unicode box-drawing in four weights, an aligned Markdown pipe table, reStructuredText grid or simple tables, PostgreSQL psql output or Org-mode. Column alignment is kept, Chinese, Japanese, Korean and emoji characters count as two columns, and the whole thing runs in your browser.
- 11 styles: ASCII, Unicode box, Markdown, psql, reST, Org-mode
- CJK, fullwidth forms and emoji counted as two columns
- Column alignment from :---: and ---: honored
- Reads Markdown, CSV, TSV, HTML, JSON and existing text tables
- Spreadsheet-style grid to type or edit cells
- Cell wrapping, <br> line breaks and optional row separators
- Comment prefixes and code fences for code, README and chat
- Runs in your browser; nothing is uploaded
Technical details
How the columns are measured and aligned
Every cell is measured in monospace columns, not characters. Characters that terminals draw two columns wide (East Asian wide and fullwidth forms, Hangul, emoji presentation symbols) count as 2; combining marks, variation selectors, skin-tone modifiers and zero-width characters count as 0. An emoji sequence joined with zero-width joiners counts as one emoji, and a pair of regional indicators as one flag.
- Column width is the widest line in the column (header included); shorter cells are padded with spaces according to their alignment: left, center or right.
- Multi-line cells: <br> and newlines become extra lines inside the same row, so the row grows taller instead of breaking the grid.
- Tabs inside a cell are replaced by four spaces, because a tab has no fixed width in a monospace layout.
- Escaped pipes (\|) are shown as plain pipes in the border styles; the Markdown style keeps the escape so the output is still a valid table.
- Fonts: alignment is exact in terminals and code editors that render wide characters two cells wide. Proportional fonts, and some fonts that draw emoji at a different width, can still look uneven.
Tips and best practices
Use ASCII for maximum compatibility
+---+ and | use only characters that every encoding and font has. Unicode boxes look cleaner but need UTF-8 and a font with box-drawing glyphs.
Put chat and email tables in a code fence
Discord has no table syntax, and Slack message text (mrkdwn) has none either. A ``` code block keeps a monospace font so the columns line up.
Keep tables narrow for code comments
Wrap cells at 40 or 60 columns and use a // , # or -- prefix so the table stays inside a typical line-length limit.
Common problems and fixes
The columns look misaligned after pasting
Cause: The target uses a proportional font, or a font that draws CJK characters or emoji at a different width than two cells.
Fix: Paste into a monospace context (terminal, code block, editor). If emoji still drift, replace them with text or use a font that renders emoji at double width.
Box-drawing lines look broken or have gaps
Cause: Some fonts draw line-spacing gaps between rows, or the font does not include the box-drawing characters.
Fix: Switch to the ASCII style, or use a font made for terminals.
My table was not detected
Cause: Markdown tables need a delimiter row such as | --- | --- |. Plain lines separated by single spaces are ambiguous.
Fix: Add the delimiter row, use CSV or tab-separated text, or build the table in the grid tab.
The reST output is rejected by Sphinx or docutils
Cause: Simple tables cannot hold a cell that is wider than its column rule, and grid tables need exact widths.
Fix: Use the reST grid style, and keep the font monospace while editing so the borders stay aligned.
Frequently asked questions
How do I make an ASCII table?
Paste your data into the box on this page (Markdown, CSV, tab-separated cells, HTML or JSON) or type it into the grid, keep the ASCII (+---+) style, and click Copy table. The columns are padded so the borders line up.
How do I put a table in a code comment?
Choose a style, then set Wrap output in to // , # , -- or * . Every line gets the prefix, so the table can be pasted straight into a code comment in C-style, Python, shell, SQL or Javadoc-style comments.
What is the difference between an ASCII table and a Unicode box table?
An ASCII table is drawn with + - and |, which exist in every font and encoding. A Unicode box table uses line-drawing characters such as ┌ ─ │, which look continuous but need UTF-8 and a font that includes them.
How are Chinese, Japanese, Korean and emoji characters aligned?
They are counted as two columns, the width terminals and code editors give them, so the borders stay straight. Combining marks and zero-width characters count as zero. Fonts that draw emoji at another width can still look uneven.
Can I convert a Markdown table to an ASCII table?
Yes. Paste the Markdown table and pick any style. Column alignment from :---, :---: and ---: is kept, and **bold**, `code` and [links](url) are reduced to plain text unless you turn Remove Markdown markup off.
Can I turn an ASCII table back into Markdown?
Yes. Paste the +---+ or box-drawing table into the box and choose the Markdown (aligned) style. For a full conversion with a rendered preview, paste the same text into the Markdown table editor.
How do I post a table in Discord or Slack?
Discord has no table syntax and Slack message text has no tables either, so wrap the table in a code block: set Wrap output in to Code fence (```) and paste it. The monospace font keeps the columns aligned.
Which style does the MySQL command-line client print?
The ASCII (+---+) style, with a line under the header and an outer frame. PostgreSQL's psql prints something different: no outer frame, a centered header, and a (n rows) footer, which is the psql style here.
What are reST grid tables and simple tables?
They are the two table syntaxes of reStructuredText (Sphinx, docutils). Grid tables draw every border with +, - and |, and use = for the header line. Simple tables use rows of = as column rules and need no vertical bars.
Is my data uploaded?
No. The table is parsed and formatted in your browser. Nothing is sent to a server.